简单的文件操作应用程序,新实例是帮助还是伤害?
Simple file manipulation application, does a new instance help or hurt?
考虑这段代码并记住我主要处理 JavaScript 和 T-SQL:
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);
}
第一种方法完全按照它说的做。第二种方法是将文件插入数据库,从文件名中抓取一些信息进行识别。
在此比较中,是否有我在初始化单独实例时没有看到的值?
保持 Program
实例的唯一有用之处是对象可以在不使用静态变量的情况下保持状态。
例如,如果 moveAndRenameAllFiles
将存储一些稍后由 processReports
使用的数据,在静态上下文中执行相同的操作将需要使用静态变量。
除了帮助您测试实现的能力之外,在您必须同时重构 运行 几个 Program
方法实例的情况下,缺少静态变量也会有所帮助 - 例如,当处理多个网络位置。
"stateless" 实施没有优势。
考虑这段代码并记住我主要处理 JavaScript 和 T-SQL:
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);
}
第一种方法完全按照它说的做。第二种方法是将文件插入数据库,从文件名中抓取一些信息进行识别。
在此比较中,是否有我在初始化单独实例时没有看到的值?
保持 Program
实例的唯一有用之处是对象可以在不使用静态变量的情况下保持状态。
例如,如果 moveAndRenameAllFiles
将存储一些稍后由 processReports
使用的数据,在静态上下文中执行相同的操作将需要使用静态变量。
除了帮助您测试实现的能力之外,在您必须同时重构 运行 几个 Program
方法实例的情况下,缺少静态变量也会有所帮助 - 例如,当处理多个网络位置。
"stateless" 实施没有优势。