《C++ Primer》中并无编程风格这一章,但是在无形中我觉得Stanley的编程风格一定是值得学习的。因此把一些看着不错的编程风格记录在这。
括号的使用
if(std::cin>>currVal){
int cnt = 1;//...
while(std::cin>>val){
if(val == currVal)
++cnt;
else{
std::cout << currVal << " occurs "
<< cnt << " times " << std::endl;
currVal = val;//...
cnt = 1;//...
}
}//while loop ends here
}//outermost if statement ends here
仔细分析,有四点值得借鉴:
1.while,if,else,for后跟的大括号,把开括号紧跟在同一行,闭括号则在结束行。我想这样做好处是:节省空间,连续多个if语句或for语句嵌套是常有的事,这样做能省下若干行空间。缺点是:有时候难以看清闭括号对应哪个开括号。
2.为了克服第上述缺点,Stanley在重要的闭括号,或者是和开括号距离比较远的闭括号,后面添加了注释,标明是对应哪个部分。
3.输出流操作符"<<"不要都挤在同一行。最好保证代码能在半页显示。
4.使用很多空格。如"<<","="左右都有空格,双引号中内容也有空格。这样让别人读代码(也包括后期读自己的代码)更加清晰,舒服!
头文件
头文件命名
头文件的名字一般和其内部定义的类同名。
这是可以理解的,但如果头文件中包含的不是类呢?
如果有多个辅助函数,我的习惯是将功能类似的函数放在同一个头文件中,起一个概括性的名字。而有些同学的做法是,每个函数弄一个头文件,头文件名字就是函数名。我也说不清哪个好哪个差,经验太少,以后慢慢琢磨。
头文件内容
大家在头文件里一般放什么呢?很多人会把所有的函数实现、类的实现等,都塞到一个头文件中,其实这么做并不是很好。很容易产生Link Error,重定义的错误。
一般来说,头文件中放的是:类定义,函数定义,const,constexpr这样在任何文件中都只能定义一次的东西!
head guards
看着陌生的名词,其实就是最常用的头文件中#ifndef,#define,#endif啦。
不要用using
头文件中尽量不要包含using namespace。这是因为头文件会被很多cpp文件包含,如果包含了,很可能引起命名空间重复。
变量命名
1,变量命名要有意义
2,类名,一般用大写字母开头。如:Sale_item
缩进
一些编辑器具有自动缩进的功能(代码整理),使用这样的编辑器对维护代码很有好处。(VS下 ctrl K - ctrl D可以实现)