He could use some humility. "I feel bad calling it ugly; I had a hand in writing some of it" at 23:35 and "I'm a great software engineer, I've got this" at 5:25 really has him coming off as a little arrogant. The fact that I don't see any Dagger 2 stuff until after he's spent 25 minutes picking apart the existing DI frameworks was a little off putting to me as well. I'd rather you spend that 25 minutes giving us a bit more detail on how Dagger 2 works. You could spend 5 or 10 minutes explaining why Dagger 2 is better than the rest, in a simple overview/comparison chat and move on. Instead, it felt like they had to pull an Apple, and tell me how horrible everything else was and that they're stuff has solved all of the worlds problem.
Dependency Injection started much earlier than 2002. Perhaps for Java it was 2002; in general though, DI has existed since the late 80's/early 90's. This is not something that came out of nowhere in the early 2000's.
My comments on the framework:
The concept looks nice. I'm not a Java dev, so I'm not qualified to critique the framework. Having said that however, I'm not a big fan of taking on a dependency of @Inject and the other attributes throughout your code. If you ever want to migrate away, it makes it a real pain. One of the goals of DI (far from the only goal) is to allow you to swap out components with minimal effort. By decorating everything in your app with the Dagger attributes, you become tightly coupled to it. You can swap out your components easily, at the expense of tying yourself tightly to the DI framework. He mentions that they are currently migrating a huge application off of Guice and it's not something that can be automated. That means there's to many dependencies on how the injection happens.
Again, I'm not a Java developer; I assume the attributes are used due to a language or framework constraint. In .NET, I set up DI at the top-most level. Everything in the app gets constructor injected with zero dependencies through-out all of the layers of the application. We swapped out DI in an app with over 500,000 LoC in 3 hours, because the DI was set up in a single class of 60 LoC, at the top most layer. It's to bad that this doesn't seem to be available in Java yet.
While we used an IoC container to handle the injection, the client/dependent objects didn't care what was used or how it got it. They just asked for services via the constructor and received them. We can swap out IoC containers, or not use them in favor of DI without a container, and all of the layers that take dependency services won't care. We can mock/fake our dependency services, swap them out as requirements changed etc, and not worry about updating the IoC container or creating new @Modules or factories.
I do like that Dagger uses zero reflection. For Mobile, that's a huge (relative) performance penalty.
I'd love to move over to Google Photos and do my key wording there instead, if it's coming.
Virtualization and Automation Solutions for Desktops, Servers, Hosting, ...
Parallels offers virtualization and automation solutions for desktops, servers, hosting, SaaS and more. Please visit parallels.com to learn
Easily Install OS X Lion On PC With UniBeast All-In-One Bootable USB Drive
The Apple’s renowned operating system OS X Loin can now be installed on your windows system. The process called hackinstosh will allow you t