Self-Configuring Classes W/ Command Line Args: Pattern or Anti-Pattern?

Posted by dsimcha on Stack Overflow See other posts from Stack Overflow or by dsimcha
Published on 2010-03-18T14:15:05Z Indexed on 2010/03/18 14:21 UTC
Read the original article Hit count: 263

I've got a program where a lot of classes have really complicated configuration requirements. I've adopted the pattern of decentralizing the configuration and allowing each class to take and parse the command line/configuration file arguments in its c'tor and do whatever it needs with them. (These are very coarse-grained classes that are only instantiated a few times, so there is absolutely no performance issue here.) This avoids having to do shotgun surgery to plumb new options I add through all the levels they need to be passed through. It also avoids having to specify each configuration option in multiple places (where it's parsed and where it's used).

What are some advantages/disadvantages of this style of programming? It seems to reduce separation of concerns in that every class is now doing configuration stuff, and to make programs less self-documenting because what parameters a class takes becomes less explicit. OTOH, it seems to increase encapsulation in that it makes each class more self-contained because no other part of the program needs to know exactly what configuration parameters a class might need.

© Stack Overflow or respective owner

Related posts about best-practices

Related posts about langauge-agnostic