编程箴言(Programing Adages)

7 篇文章 0 订阅
1 篇文章 0 订阅

1.通用

1.1注释、注释、注释。在程序中加大量的注释。这不仅让别的程序员知道你做了什么,也提醒你自己。

1.2遵守KISS准则(Keep It Simple, Stupid)。清晰、简介远比复杂和巧妙好得多。

1.3避免副作用。使++和--单处一行。

1.4使用前缀形式的++和--(++X, --X),而避免使用后缀形式(X++, X--)。这条准则对C编程没有什么意义,但是非常有助于转向C++编程。

1.5不要在条件判断中包含赋值语句。

1.6不要再别的语句中进行赋值。

1.7了解=和==的区别。在需要==的地方使用=是一个非常常见而又非常难以发现的错误。

1.8使空语句突出。

for( i = 0; i < n; ++i)  ;

不如:

for( i = 0; i < n; ++i)

     continue;

                                           

2.设计

2.1当在设计程序框架时,牢记“大众法则”。这个法则是指:不要让你的程序以奇怪的方式工作。

2.2尽可能保证用户接口的简介和一致性。

2.3给用户尽可能多的帮助(或说明)。

2.4让所有的错误信息都有明显的 "error "来标识。并且给出修正错误的方法。

 

3.声明

3.1让每一个变量的声明单独占一行,并且对其用途给出注释。

3.2让变量的名字详细易于理解,但是不要太长而不易书写。通常两三个单词就足够了。

3.3不要使用默认(隐式)声明。比如:对于返回int类型函数,最好加上int关键字,而不要使用默认规则省略。

3.4函数所有的参数应当声明并加上注释。最好不要省略参数名。

3.5不要使用奇怪的main函数形式,应该始终使用常用形式:int main(void)或者int main(int argc, char *argv[ ])

 

4.switch语句

4.1switch语句中应该始终包含default子句。即使它什么也不做,也应该写上。

4.2每个case子句都应当用break结尾,如果是功能决定不使用break则要加上注释说明(/* Fall through*/)。

 

5.预处理

5.1在#define定义的所有的常量表达式的左右都加上括号()。

5.2如果可能尽量使用const来声明常量,而不要使用#define。

5.3对于带参数的宏定义,参数都要加上括号()。

5.4对于较复杂的宏定义,使用{}。比如:#define DIE(msg)    { printf(msg);  exit(8);}

5.5在使用#ifdef / #endif 来标识条件编译结构时,让#define和#undef放在尽可能靠近代码的顶端,并且对他们加上注释。

 

6.编码风格

6.1一个代码块({...})如果过长,则应该把它分割为多个较简洁过程。

6.2当一行代码过长超过屏幕宽度时,应该把它分为多行显示。

 

7.编译

7.1编写Makefile以便让其他人知道如果编译你的代码。

7.2打开编译选项,让编译器报出错误和警告。

 

NOTE:

就在你认为已经了解了所有能让你的代码崩溃的C语言的特性时,请三思。总有未发现的东西会让你跌破眼镜。

 

 

原文见:《Practical C Programing  3rd Edition 》Steve Oualline第23章

讲述一个程序员成长的六个阶段: 1、能熟练地使用某种语言,这相当于练武中的套路和架式这些表面的东西。 2、精通基于某种平台的接口(如win的API),以及所对应语言的自身的库函数。这也就相当于可以进行真实的散打对练了,可以真实地在实践中做一些应用了。 3、此阶段能深入了解某个平台系统的底层,已经具有了初级的内功的能力,也就是“手中有剑,心中无剑” 4、此阶段能够直接在平台上进行比较深层次的开发。基本上能达到这个层次可以说是进入了高层次。这时进入了高级内功的修炼。比如能进行VxD或操作系统的内核的修改。这时已经不再有语言的束缚,此时语言只是一种工具,即使要用自己不会的语言进行开发,也只是简单地熟悉下,就手到擒来,完全不像是第一阶段的时候学习语言的那种情况。 5、此阶段已经不再局限于简单的技术上面的问题了,而是能从全局上把握和设计一个比较大的系统体系结构,从内核到外层界面。可以说是“手中无剑,心中有剑”。到了这个阶段就能对市面上的任何软件进行剖析,并能按自己的要求进行设计,就算是MS Word这样的大型软件,只要有充足的时间,也一定能够设计出来。 6、最高境界,达到“无招胜有招”。这时候,任何问题都纯粹变成了一个思路问题,不是用什么代码就能表示的。此时,对于练功的人来说,他已不用再去学什么少林拳,只是在旁边看别人对战,就能把这拳来用。这个就是大师级别的人物。这时,Win32或Linux在眼里是没有什么区别的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值