【发布时间】:2012-10-05 06:34:04
【问题描述】:
我正在尝试编写适合最多 80 列的代码行。因此,我想知道完全限定我的变量类型是否真的是强制性的?假设如下实现:
//Baz.h
namespace loggingapi {
namespace attributes {
class Baz {};
}} // namespaces
// Bar.h
namespace loggingapi {
namespace attributes {
class Baz; // forward declare Baz.
}
class Biz {
int f(Baz* b);
};
} // namespaces
要声明我的函数参数类型,有多种方法?
- a)
int f(Baz* b); - b) 或
int f(attributes::Baz* b); - c) 或
int f(loggingapi::attributes::Baz* b); - d) 或
int f(::loggingapi::attributes::Baz* b);
在上面的列表中,哪些定义对编译器来说更清晰/不明确?
注意:您必须假定命名空间/参数/类/函数名称在以下实现中不能缩短。
【问题讨论】:
-
你不应该为编译器编写代码,而应该让人们阅读
-
@iammlind:我删除了多余的 (d)。很高兴尚未在任何答案中提及。
-
或者 (e) 跳过古老的 80 列规则。一个 24 英寸的显示器可以轻松容纳 250 列。
-
@BoPersson:这是 for 80 列规则的论据。三路合并可以将基本、远程和本地版本与下面的输出并排保存……但前提是您将代码保持在
-
@BoPersson:就个人而言,我不希望在监视器连接中拆分并排差异。排长队意味着我的眼睛需要进行大量的左右扫描。保持较短的行和较短的标识符不那么累,有助于理解并减少出错的可能性。这绝对不是混淆代码。
标签: c++ namespaces c++98