Dic*_*eed 3 c++ coding-style dry
大多数C++类方法签名通常在头文件中的声明和我读过的代码中的源文件中的定义之间重复.我觉得这种重复是不可取的,而且这种代码编写方式会受到参考位置不佳的影响.例如,源文件中的方法通常引用头文件中声明的实例变量; 您最终必须在读取代码时不断在头文件和源文件之间切换.
有人会建议一种方法来避免这样做吗?或者,我是否主要通过不按常规方式做事来混淆经验丰富的C++程序员?
另请参阅问题538255头文件中的C++代码,其中有人被告知所有内容都应该放在标题中.
还有另一种方法,但治愈方法比疾病更糟糕 - 在标题中定义所有函数体,甚至在类中内联,如C#.缺点是这会大大增加编译时间,并且会让资深的C++程序员烦恼.它还可以让你进入一些循环依赖的令人讨厌的情况,虽然可以解决,但是处理起来很麻烦.
就个人而言,我只是将我的IDE设置为垂直分割,并将头文件放在右侧,将源文件放在左侧.
我假设你在谈论头文件中的成员函数声明和源文件中的定义?
如果你习惯了Java/Python /等.模型,它似乎是多余的.实际上,如果你如此倾向,你可以在类定义中(在头文件中)内联定义所有函数.但是,每次你改变实施中的任何细节时,你肯定会打破常规并付出额外耦合和编译时间的代价.
最初为大规模系统设计的C++,Ada和其他语言保留了定义隐藏的原因 - 没有充分的理由让一个类的用户必须关注它的实现,也没有任何理由他们应该反复支付编译它.现在使用更快的系统可以减少问题,但仍然与真正的大型系统相关.此外,隔离和更快的编译有助于TDD,存根和其他测试策略.