Thanks for your thoughts, Artem Abeleshev ! I agree, although I think that objects with a lot of optional fields may indicate a conceptual problem in the codebase. Maybe the object needs to be split up. Sometimes you'll see that some optional fields are always filled in together. Maybe that can be reworked to a grouped concept of those fields. In the end, it all depends on the context of the application. :-) What I like about constructors with many parameters is that it points out that there is a code smell. It screams to be refactored. A builder might hide that. I think your solution for mandatory fields, together with builders, is a good one. Great call!