影响callbackvariables是不好的做法吗?
以asynchronousNode函数fs.stat()
为例。 如果我需要在一个文件上使用fs.stat()
,那么稍后fs.stat()
,结果会被遮蔽。
fs.stat(file, function(err, stats) { fs.stat(file, function(err, stats) { }); });
err
variables以及stats
variables被隐藏起来 – 如果我不会在第二个callback中使用第一个callback,那么这个问题是否会发生? 重命名第二个callbackvariables是否更好?
是否覆盖这些variables,一次或多次对性能有什么影响?
问题的意见,但我会说是的 – 不好的做法。 无论如何,这里有两个问题
-
对于下一个需要处理这个代码的人(可能是你)可能会感到困惑。
-
在将来某个时候,您可能需要访问外部值来提供一些新的function(例如,要确保两个文件对象具有相同的types?)。 做出这种改变将需要对整个代码块进行烦人且容易出错的编辑。
现在使用不同的名称以防止问题。
是的,这是不好的做法。 取决于开发人员查看它可以得到多么糟糕。 如果我有这样的事情,首先想到的就是在我脑海中stream行起来
为什么他把err
和stats
传递给这个callback?
fs.stat(file, function(err, stats) { \\ \\ \\ \\ fs.stat(file, function(err, stats) { }); });
在像现在一样在多个相同function的实例中工作时。 你必须确保所有的variables都可以被独立访问。
除非你确定一个variables或构造不再被使用,那么你可以重新使用它。 但是,您必须在有用的评论中提及这一点,以确保其他开发人员能够理解这一点。
更新:
callback函数中的这些variables有一个范围限制,所以它们不会影响函数声明之外。
一个有效的例子是:
fs.stat(file, function(err, stats) { }); //Another similar functions somewhere with same varialbes fs.stat(file2, function(err, stats) { });