title: Pass existing FileSystemObject or create multiple instances
body: <p>I have several procedures that use the FileSystemObject. I find it's quite convenient. </p>
  
  <p>Question: Is it sensible to pass an existing instance of FileSystemObject from a "main" procedure to these other procedures as an argument, rather than having each procedure create its own instance of FileSystemObject?</p>
  
  <p>Example: is it better in any way to do this:</p>
  
  <pre><code>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 
  </code></pre>
  
  <p>which I have seen at least one programmer do, rather than the following, which is what I usually do: </p>
  
  <pre><code>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 
  </code></pre>
  
  <p>I can see the idea of doing the former in that this potentially reduces the overhead associated with having multiple instances of FileSystemObject. But it seems terribly cumbersome to have to pass FSO as an argument each time. And seriously, is the overhead really that big?</p>