擅长:python、mysql、java
<p>唯一的漏洞是你会是<a href="http://www.lispcast.com/global-mutable-state" rel="nofollow noreferrer">mutating global state</a>,这通常是不赞成的原因有很多。您可以在<code>main</code>函数中实例化计数器,并将它们传递给需要它们的对象/方法以避免此问题。或者您可能认为全局可变状态适合您的用例,但这至少是您应该考虑的问题。你知道吗</p>
<p>阅读链接文章,了解与全局可变状态相关的问题以及如何避免它。你知道吗</p>
<p><strong>这个全局可变状态是怎样的?</strong></p>
<p>像<code>fileCounter</code>、<code>httpCounter</code>这样的模块级变量是全局变量,因为代码的任何部分都可以通过导入模块来访问它们(请注意,这与Python中的<code>global</code>关键字不同)。它们在<code>.count</code>中保持状态,可以通过调用<code>incr()</code>或<code>.decr()</code>或仅仅赋值来改变状态。你知道吗</p>
<p>通过使实例成为函数的本地实例,代码的其他部分将无法再访问它们,除非显式地传递它们。你知道吗</p>
<p><strong>正确的方法</p>
<p>你的解决方案是“正确的”,因为它会起作用。但它会导致一些你必须意识到的问题。这就是我的答案。你知道吗</p>
<p>实际上,“从应用程序的任何地方访问实例”这件事都是有问题的。随着对象变得越来越复杂,从应用程序的更多部分以更多的方式访问,它会使复杂性增加。你知道吗</p>