Jea*_*ett 5 vbscript vba filesystemobject
我有几个使用FileSystemObject的过程.我发现这很方便.
问题:将一个现有的FileSystemObject实例从"主"过程传递给这些其他过程作为参数是否合理,而不是让每个过程创建自己的FileSystemObject实例?
示例:以任何方式更好地执行此操作:
Sub MainSub()
Dim FSO : Set FSO = CreateObject("Scripting.FileSystemObject")
Call OtherSub(FSO, myargs)
' call other subs and functions that use FileSystemObject
End Sub
Sub OtherSub(FSO, myargs)
' Do stuff with FSO
' call other subs and functions that use FileSystemObject
End Sub
Run Code Online (Sandbox Code Playgroud)
我至少看过一个程序员,而不是以下,这是我通常做的事情:
Sub MainSub()
Dim FSO : Set FSO = CreateObject("Scripting.FileSystemObject")
Call OtherSub(myargs)
' call other subs and functions that use FileSystemObject
End Sub
Sub OtherSub(myargs)
Dim FSO : Set FSO = CreateObject("Scripting.FileSystemObject")
Call OtherSub(myargs)
' Do stuff with FSO
' call other subs and functions that use FileSystemObject
End Sub
Run Code Online (Sandbox Code Playgroud)
我可以看到做前者的想法,这可能会减少与拥有多个FileSystemObject实例相关的开销.但每次必须将FSO作为参数传递似乎非常麻烦.而且严重的是,开销真的那么大吗?
在我看来,创建许多 FSO 的开销不是问题;问题在于。但是“你不应该重复自己”并且每个CreateObject( "System.FileSystemObject" )[哎呀]都会增加运行时错误的风险。在幕后,只有一个文件系统和一个文件系统对象,因此,如果允许 C/C++ 程序员使用 STDOUT 或 cerr,那么 VBScript/VBA 程序员就有权使用全局FSO(您不能对一个文件系统做任何事情)改变其在其他子/函数中的工作方式的单例 FSO - 除了改变保持变量)。
| 归档时间: |
|
| 查看次数: |
3430 次 |
| 最近记录: |