C# 简单的文件操作应用程序,一个新实例会有帮助还是有害?
考虑这段代码,请记住我主要处理JavaScript和T-SQL:C# 简单的文件操作应用程序,一个新实例会有帮助还是有害?,c#,instance,C#,Instance,考虑这段代码,请记住我主要处理JavaScript和T-SQL: static void Main(string[] args) { Program p = new Program(); logToEventLog("Task Started", EventLogEntryType.Information); p.moveAndRenameAllFiles(); p.processReports(); logToEventLog("Task Ended",
static void Main(string[] args)
{
Program p = new Program();
logToEventLog("Task Started", EventLogEntryType.Information);
p.moveAndRenameAllFiles();
p.processReports();
logToEventLog("Task Ended", EventLogEntryType.Information);
}
对
static void Main(string[] args)
{
logToEventLog("Task Started", EventLogEntryType.Information);
moveAndRenameAllFiles();
processReports();
logToEventLog("Task Ended", EventLogEntryType.Information);
}
第一种方法完全按照它所说的做。第二种方法将文件插入数据库,从文件名中获取一些信息以进行识别
在这个比较中,是否有一个值我在初始化一个单独的实例时没有看到 保存
程序
实例的唯一有用之处是对象可以在不使用静态变量的情况下保持状态
例如,如果moveandnameallfiles
将存储一些稍后由processReports
使用的数据,那么在静态上下文中执行相同的操作将需要使用静态变量
除了帮助您测试实现的能力外,缺少静态变量还有助于您在必须重构以同时运行程序
方法的几个实例的情况下—例如,在处理多个网络位置时
“无状态”实现没有任何优势。您尝试过吗?基准测试?看到行为上的明显差异了吗?如果没有,哪一个更可读、更容易理解?@mason我用两种方式运行调试器,没有明显的区别。最终,这两种方法都会奏效,我只是不知道一种方法是否真的比另一种好。在这种情况下,不会有明显的区别。由于GC如何管理堆,C#中的分配速度很快。你在这里做的每件事都会受到IO成本的支配。如果你有数以百万计的分配,那么你可能无法分辨出它们之间的区别。如果它们功能相同,性能相同,那么通常归结为“哪个更简单,更容易阅读”对于这样一个小例子,我不确定这是否重要。也许,如果这是一个更大的应用程序的形成步骤,那么实例是有利的,因为它们可以实现接口等。但是对于一个2行程序?这其实并不重要,只是个人意见的问题。因此我投了接近票。太棒了。在我的例子中,我们没有做多个位置,只做一个文件存储库。