如果不禁止 using 指示,那么你在多人项目里,如何判断同一个标识符在由不同工程师编写的源代码里,是否为同一个东西?

如果大家保持一致性,即某些命名空间都要 using 指示出来,别的不 using 指示。然而,又如何规定哪些要指示哪些不用指示?害得大家束手束脚地保持一致,规定也众口难调地麻烦;对个人项目也是一样的道理,如果开发者随心所欲地在这里不 using 指示 std, 却又在那边 using 指示它,从长远来看维护将是灾难。

最后,你能保证将来永远不会取消对某命名空间的 using 指示吗?否则你得给这被 using 指示的命名空间里所有用到的标识符一一加上命名空间作用域前缀,你想象一下怎么弄吧,你有办法自动化处理且绝不出错吗?

对我来说,与其大费周章地划出可以被 using 指示的命名空间,还不如一劳永逸地用奥卡姆柴刀砍掉 using 指示用法,也省了我在 tweets 里列举的种种缺点。

我写 C++ 时,爱把迭代器对象直接声明为 iterator 并拿来用,也很清楚 vector 是一个「向量」对象或别的什么,反正不会是 std::vector 那种容器,我放心我舒服。你呢?

Comments

2017 Sep 2