我正在开发一个相当大的应用程序,我的技术领导和我在某些事情上的看法并不一致。
其中之一是关于控制台应用程序。这些应用程序正在从shell脚本移植到C#。其中一些脚本相当大(转换后需要300-400行代码),可以执行I/O、电子邮件和数据库访问等操作。
我为每个脚本创建了一个类。每个类都有一个Run方法,它调用其中的任何方法/操作。在Program.cs/ main中,我创建了一个上述类的对象并调用Run。Program.cs包含4-5行代码。干净而简单。
我的技术主管希望摆脱脚本类,只将所有内容都放在program.cs的main方法中。他的理由是,它的方式太混乱了。
不得不这样做感觉很尴尬,因为类不再成为可重用/可打包到类库中,而不必摆弄main方法。
单元测试似乎不受影响,因为您可以实例化Program.cs本身,但是again....this感觉很笨拙。按他的方式做有什么好处,我看不出来吗?按我的方式有什么好处吗?在你的main方法中处理大型应用程序和内容时,有没有一个通用的做法?
谢谢您抽时间见我。
发布于 2012-10-16 06:09:08
这样做感觉很尴尬,因为类不再是可重用/可打包到类库中的,而不必摆弄main方法。
它不一定是那样的。
例如,您的每个脚本可以仍然具有相同的结构,但也可以具有private static void Main(string[] args)方法。(如果你愿意,它可以是非私有的--这完全取决于你的需求。)
这样,它就是独立的(可以编译为单个输入到单个输出,然后运行),这有时会很方便,但也可以用作类库的一部分。毕竟,Main方法的存在并不能阻止其他类使用该类。
还不清楚你是有一个Program.cs文件,还是每个脚本有一个。如果每个脚本都有一个脚本,每个脚本只有4-5行,那么这看起来就有点无意义了。
现在,这肯定不是我通常构建大型应用程序的方式-但是如果重点是要有几个“脚本”,每个脚本都可以独立运行,那么为每个类提供一个Main方法看起来并不是太糟糕。
事实上,出于演示的目的,我经常做的是在一个项目中有几个带有Main方法的类,然后有一个单独的入口点(在Program.cs中),它使用反射来查找所有其他的类,然后允许用户/演示者选择运行哪一个。
如果您的所有代码都放在一个类中是有意义的,那么拥有一个微小的额外入口方法似乎不是什么问题。如果实际上是单个类的代码太多,而不管入口点在哪里,那就是另一回事了。(因此,如果您坚持只有一个ScriptClass,而实际上您应该将不同的任务分配给不同的类,这也是不好的。)同样,如果他真的坚持将所有代码放在一个方法中,这肯定会给测试和可维护性带来问题。
我建议您暂时把入口点分歧放在一边:找出一种最简洁的方式来组织代码的其他所有内容,然后Main方法是放在Program.cs中还是放在另一个类中都无关紧要。
https://stackoverflow.com/questions/12904724
复制相似问题