jeudi 7 avril 2016

How to handle a large amount of params with a complex class hierarchy?

I'm developing a complex desktop client with C#, which is mainly for some scientific analysis work. The class hierarchy of my project is very complicated. The problem is that, a large amount of parameters should be able to be modified by the user at the entrance of the client.

However, many parameters are very deep in the class hierarchy. As a result, classes closed to the top levels must take a lot of arguments in the constructor, because they are passed all the way up from different classes at the bottom levels.

What's the best practices to handle problems like this? I have 3 ideas:

  1. Global static variables: Just create a Constants class and store these params as static fields, like Constants.FOO, Constants.BAR.

  2. Singleton class: Create a singleton class, and initialize it at the entrance of program. Get these params like Constants.GetInstance().FOO.

  3. For every class, receive lower-level params in the constructor, which makes the constructor signature verbose and complicated. For example, a mid-level frequently-used class may take 15 arguments in the constructor.

If I use global variables or a singleton too often, the code will become very coupled. But if I do not use them, lots of params must be passed and received along the class hierarchy again and again. So how would a complicated commercial software do to solve this problem?

Aucun commentaire:

Enregistrer un commentaire