Summary For those without the time to read the full article, the “tl;dr” is We should favor composition to inheritance We should leverage code generation tooling to reduce boilerplate, maintenance cost, and encourage best practices AutoDelegate is a project which does both and is available on Maven Central! The Problem Classical inheritance is the most widely used and hated abstraction in programming languages. It starts small but often results in complex and hard-to-understand behavior in large software projects.
Typesafe heterogeneous containers allow us to group objects of arbitrary types while maintaining the ability to access them in a typesafe manner. Dagger is a compile-time dependency injection tool which reduces the boilerplate in object initialization. Dagger provides incredibly useful functionality on top of the JSR-330 dependency injection specification which automatically builds other containers, like sets or lists, that contain objects which Dagger already knows how to instantiate. I’ll demonstrate how to leverage existing Dagger mechanisms to populate a typesafe heterogeneous container with objects that Dagger knows how to instantiate.
Testing web APIs is hard. As an industry, we’ve tackled this in many different ways - ranging from testing nothing at all to every aspect of both the client and the server code in one fell swoop. Consumer-driven contract tests can minimize non-deterministic failures, give developers confidence that their systems are working, and empower teams to solve problems in the systems they own. I’ll show you how to identify if contract tests are for you and if so, how to start using them at work.
Hi! I’m Ryan, a software engineer living in Baltimore, MD. I enjoy testing, building, and deploying web services. I like the JVM ecosystem, app sec, coffee, rye whiskey, and delicious food. Here’s where you can find me online: ryandens on GitHub @RyanDens1 on twitter @rdens on Keybase ryan-dens on LinkedIn