Google的新语言Go尝试通过explicitly requiring that all dependencies listed in a module actually be used简化依赖关系管理。编译器将拒绝一个模块,该模块声明对模块的依赖,而不使用该模块中的任何内容。
包导入自身或导入包而不引用任何导出的标识符是非法的。
我可以想到一些明显的优点(例如更清洁的模块),但也许有一些不明显的优点。我能想到的唯一缺点就是有一个过于迂腐的编译器,在重构过程中抱怨太多,但也许还有更多呢?
您是否有使用其他语言执行此操作的经验?这种方法的优点和缺点是什么?
答案 0 :(得分:5)
您不仅需要显式使用所有依赖项,还必须使用所有变量。当您有未使用的变量时,编译器会给您错误。
他们很烦人。但它会让别人高兴,因为他们得到了干净的代码。
我认为Go设计师可能希望Go成为一种主要依赖IDE的语言。
答案 1 :(得分:1)
答案 2 :(得分:0)
正如yuku所说,如果你的IDE与Netbeans和Eclipse可以为java做的一样,你就不必关心这类事情。
右键单击边距中的小灯泡,然后选择“删除所有未使用的依赖项”。
对于未使用的变量,它们通常会出现波浪状的下划线,并且很容易被发现。
这里唯一的区别是,与其他语言不同,除了IDE之外,你实际上还有编译器抱怨,但如果你使用IDE,那么这就成了一个问题。
在工作中,我们的编码政策几乎说明我们必须做同样的事情(我们自己),当然还有其他语言。所以我会说这种确实有真正的应用程序。虽然恕我直言,编译器应该让开发人员选择打开和关闭此行为。任何人都严格模式?