【发布时间】:2014-03-12 11:06:29
【问题描述】:
我们使用特定的软件来执行我的控制台应用程序,并带有很多参数(现在是 25(!)并且可能越来越多)。当然,不同的类需要不同的论据。我用 NDesk.Options 解析它。但是,我一次又一次地为所有课程这样做。
class A {
A (IEnumerable<String> args){
new OptionSet {
{ "arg1=", value => foo1 = value },
{ "arg2=", value => foo2 = value },
...
}.Parse(args);
}
}
class B {
B (IEnumerable<String> args){
new OptionSet {
{ "arg10=", value => foo10 = value },
{ "arg11=", value => foo11 = value },
...
}.Parse(args);
}
}
如何制作出好的设计?解析静态类中的所有参数并使用它或其他什么?
【问题讨论】:
-
一个“好的设计”是相对的。您的设计质量之一可能是可维护性。您可以努力使添加新参数变得更容易(听起来这就是给您带来麻烦的原因)。然后,您将努力隔离元素以最大程度地减少这些更改的影响。你的问题领域的什么特点使论点如此不稳定?
-
@Fuhrmanator,逻辑很简单,控制台应用程序需要用这个参数启动一些.exe文件。并且每周它可能需要额外的参数(就像现在,我添加了 10 个参数)。我反对它,但我的技术主管坚持这样的架构......
-
如果论点(要求)每周都在变化,而您无法确定某种原因,那么很难做出一个简单的设计。如果您能识别出激发这些新论点的外部力量,您也许可以设计成更容易整合它们。如果您不指定详细信息,我很难提出更多建议。
标签: c# parsing design-patterns command-line