同事告诉我的那些C++开发经验

关于注释:
空行也是有效的注释,应该在不同逻辑块之间添加空行。
过时的注释会浪费代码维护者的大量时间,如果更新了代码导致注释过时,就算没有时间更新注释,那就请把错误的注释删掉。
避免无效的注释,比如:int i = 0; //赋值成0

关于函数规模:
函数的功能要保持单一,尽量将函数的规模控制在50行以内。
不要等到一个函数变得冗长时,才想要拆分,往往那时候已经晚了:在多人协作的项目中,改动这么大片代码是很有风险的,既然产品只要我增加一个功能,我又何必麻烦自己呢?所以,拆分函数要趁早!

关于异常:
不要捕获异常后,不做处理!
因为忽略异常后,代码继续执行,可能会在某一个地方产生Crash,而Crash的地方已经于异常发生的位置相隔甚远,这会让问题的定位异常艰难。记住,如果不知道怎么处理异常,宁愿不catch,就让它Crash吧,这至少方便程序员定位问题。

善于从别人的代码中学习:
char* strcpy(char *dst, const char *src)
{
    assert(NULL != dst && NULL != src);    
   char *addr = dst;
   while((*dst++=*src++))
    ;
   return addr;
}

strcpy的实现,有几点可以学习:

1. 用NULL而不是0,方便阅读。
2. strcpy返回目标字符串的地址,是为了能够进行级联操作,比如可以这样计算出目标字符串的长度:strlen(strcpy(dst, src)),cout也是同理:cout << "a" << "b" << endl; 在写C++函数时,要考虑一下,我的函数是否也要支持这种操作。
3 很多C/C++的函数,都是dst在前,src在后(至于为什么,可以看 http://my.oschina.net/u/1453800/blog/210176),我们设计函数时,要与之保持一致。
4 strcpy的src的类型带有const,除了保证src不变以外,const char *还会兼容char *。如果写成char *,那么strcpy就不能接受const char *的src了。

你可能感兴趣的:(同事告诉我的那些C++开发经验)