-
Notifications
You must be signed in to change notification settings - Fork 14
Description
-
Motivation: Many global parameters are defined only once (usually read from a file) and broadly used by the system. Currently, a single object holds all this data, and references are forwarded between classes. The consequence is recurrent boilerplate code to access an object instance that could be globally defined. Additionally, many classes that depend on
Optionsonly require 1 or 2 of its members, thus breaking the principle of least knowledge. For example, theHTTPServerreceives the wholeOptionsonly to use thegetHttpPort()member. It's just like the "Gorilla and the Banana problem": your class just needs a banana, but you have to receive a gorilla holding a banana, making you have to deal with the big and expensive gorilla as well. -
Objective: Allow a single definition of global parameters, and make all classes/functions depend only on what is truly needed, instead of depending on a big global object.
-
Success Criteria: Unified global parameters definiton, allowing initialization from files, but also injection for testing purposes.
-
Dependencies: No dependencies.
-
Risks and Mitigations: This task should not impact current successful tests as no behavior changes will take place.
-
Resource Allocation: Requires proper reviewing as the selected approach must scale in future implementations.