`

代码风格规范一二三

阅读更多

by 崔向阳

参考: 《The practice of programming》-Brian W.Kernighan,Rob Pike

    还记得大一刚学C++时老师说,一定要养成良好的编程习惯,做好注释,注意程序的可读性。于是我把要上交的程序排好缩进,不管什么函数,变量都详详细细的写好是干什么用的,再把注释缩排的好看一些。至于自己练手的程序么?当然是不写注释的。这种知其然不知所以然的状态维持了很长一段时间。后来变量的命名方法,程序块的缩进和对齐,各种程序上的习惯写法,注释的写法……各种体会随着时间慢慢增长,但是一直到实际做项目的时候,才更加重视到保持良好的代码风格的重要性,这已经不只是个美观问题,好的代码更不容易出错更加健壮,更容易维护,等等好处不再一一列举。

    The practice of programming这本书很好的介绍了写代码各方面各种有益的经验,我在这里只简单列举一下其中一些要点,偶尔添加些自己的看法。另外Google发出了一个不错的C++编码规范,可以作为借鉴参考。

   

    命名规范

  •     全局变量使用稍长一些,可以描述清楚变量的名字;局部变量使用较短的名字就好。因为全局变量可能在不同的地方出现,有必要用一个长些的名字来提醒它是做什么用的。局部变量则使用较短的和习惯性常用的名字就已足够,读者也较容易根据上下文判断它的意思。比如如下这个例子:

                        for (theElementIndex = 0; theElementIndex < number0fElements;theElementIndex++) 
                                     elementArray[theElementIndex] = theElementIndex;

                        和

                        for (i = 0; i < nelems; i++) 
                                     elem[i] = i ;

    孰优孰劣一眼就看出来了。

    一致性。有一些常用的命名方法,如常量所有字母大写,类和结构体的首字母大写,变量首字母小写。还有骆驼命名法(userName)和用下划线分隔的命名法(user_name)。使用哪种方法可以根据自己的爱好,重要的是在程序里始终坚持一定的习惯,保持一致性。另外相关联的对象或变量的名字要体现他们的关系和区别。

    使用有意义的名字,如:#define ONE 1      和     #define INPUT-MODE 1    的区别。

    函数名应明确的指出所做的事情,与代码一致,并能一定程度上体现返回值,如: if( is_octal(c) )…      和      if( check_octal(c) )…      相比,更清晰的指出了返回值的类型。

    关于中文拼音缩写。在项目中碰到过很多命名是中文拼音缩写,我的观点是可以适当的用。比如业务支撑,使用bs并不能很好的表达意思,business_support在有些地方则过长了,直接使用yz,反而可以让项目相关的人更能明白意思,只要在项目中保持命名一致就好了;但是也看到过些误用的例子,比如听说过有人起的变量名是 zifuchuan 的,也确实是能让风云为之变色了,改为str稍好,但是参照上面的规范,起个有意义的名比如user_name之类的,则更加好了。

 

     表达式和语句

    有意识的显示出结构。如: 

                       for(i=0;i;

                       和

                       for(i=0;i

                                   ;

的区别。

    使用自然的表达方式。如:(! (block-id < actblks) )     和      (block-id >= actblks)      相比,后者就顺畅多了。

    在可能引起歧义的表达式处尽量使用括号,消除歧义。如:   if (x&MASK == BITS)      和     if (x& (MASK == BITS) )。

    使用简单的表达式。尽量避免使用复杂的表达式,而用多个简单表达式代替。

    使代码清晰,不卖弄技巧。如:subkey = subkey >> ( bitoff - ( ( bitoff>>3) << 3)); 和  subkey >>= bitoff & 0x7;    。

    一些表达式经常有副作用,需要引起注意。如:    array[i++] = i;    在不同的编译环境下可能会有不同的结果。

 

    一致性和习惯用法

    使用一致的缩排方式,和一致的花括号使用习惯。缩排方式没什么好说的。花括号有些时候可用可不用,比如if块里只有一行语句的情况,这些地方要保持一致性。

    使用约定俗成的习惯用法。例如,应该写成

                       for(i=0;i

                                …….

                       而不是

                       for(i=0;i

                               i++;

    尽量避免使用宏

 

    程序中的数字

    使用有意义的名字和表达式来代替直接使用数字。例如:

                       fac = lim / 20;        /* set scale factor */ 
                       if (fac < 1) 
                              fac = 1;          /* generate histogram */ 
                       for (i = 0; i < 26; i++) { 
                             ………

                      和

                      enum{

                             HEIGHT = 20;           /* height of bars */

                             NLET = 26;               /* size of alphabet */

                      };

                       fac = lim / HEIGHT;             /* set scale factor */ 
                       if (fac < 1) 
                              fac = 1;                       /* generate histogram */ 
                       for (i = 0; i < NLET; i++){    

    以前有段时间和第一段程序一样,程序里的数字很杂乱,自己写完了回头过来看的时候都很头疼,尤其有些参数需要改动的时候,需要一处一处的去改,不但麻烦,而且容易忙中出错。

    使用常量来命名数字,而不是宏

   

    注释

    不要过度注释。注释是为了帮助阅读程序,过度注释会使重要的注释信息被淹没。注释应该说明不能直接从程序中看出来的信息。

    对函数,全局变量,常量进行注释

    发现代码不合适的时候,改写它,而不是只进行注释。另外改写的时候要注意代码风格与原作者保持一致。

    注释要保持和代码的一致性。修改代码以后要及时对注释进行更新。

    用简洁的语言注释。当注释不得不冗长啰嗦时,通常是代码写的不好。

分享到:
评论

相关推荐

    python bug清除手册-代码书写规范与基本使用.pdf

    根据PEP 8(Python Enhancement Proposal 8)—— Python官方的代码风格指南,建议在赋值操作符`=`的两边各添加一个空格来提高代码的可读性。例如: ```python a = 0 b = input('输入你的问题') ``` 这种写法虽然...

    阿里巴巴 开发规范插件 离线包

    通过使用这个插件,开发者不仅可以提升个人编程技能,还能使整个团队的代码风格趋于一致,降低后期维护成本。因此,无论是初学者还是经验丰富的开发者,都应该考虑将阿里巴巴开发规范插件纳入日常开发流程,以提升...

    华为C语言编程规范

    总结,华为的C语言编程规范旨在打造高质量、易维护的代码,通过合理的代码风格、结构设计、内存管理以及安全策略,确保代码的稳定性和可扩展性。这份规范对于所有C语言开发者来说,都是提高编程技能和专业素养的重要...

    DBA对Oracle SQL编写规范的总结

    接下来的部分将详细介绍PL/SQL的基本编码规范,包括命名规则、过程及匿名块命名规范、数据库代码接口管理等方面。这些规范同样非常重要,能够确保代码的一致性和可维护性。 ##### 3.1 命名规范 - **规范要求**:在...

    Java 编程规范.doc

    9. **代码风格** - 避免过长的方法和过深的嵌套,以提高代码可读性。 - 使用恰当的数据结构和算法,避免过度复杂的实现。 10. **注解(Annotations)** - 注解可以用于元数据,提高代码的自描述性,如`@Override...

    Java编码规范1

    4. 统一代码风格,体现专业性,提升整体项目形象。 #### 1.2 适用范围 本规范适用于所有参与Java项目开发的成员,无论是在编码阶段还是在代码审查阶段,都应严格遵守。 ### 2. 总体原则 1. **清晰性**:优先考虑...

    代码如何整洁123.rar

    良好的代码风格和规范应得到团队的共同遵守,并在项目初期就进行设定和执行。 最后,持续重构是保持代码整洁的关键。随着项目的推进,可能会出现设计上的不足或者冗余代码,及时进行重构可以消除这些不良影响,保持...

    CoolFormat 源代码格式化

    它能够按照预设的代码风格规则,对代码进行整理,确保每行代码、每个括号、每个缩进都符合特定的语言规范。例如,对于C++,它可以按照标准的K&R或Allman风格进行代码排列;对于Java,它可以按照Sun的代码规范进行...

    .net设计规范-之命名规范

    .Net设计规范是指导开发者编写高质量、易维护代码的重要准则,其中命名规范是确保代码...在实际开发中,还应结合项目特定的需求和团队约定,适当调整和扩展这些规范,确保整个项目的命名风格统一,提高整体代码质量。

    Java语言编程规范.doc

    《Java语言编程规范》是DKBAXX技术有限公司制定的企业技术规范,旨在提高代码质量和可维护性。这份规范涵盖了排版规范和注释规范两大方面,适用于所有使用Java语言进行编程的开发人员。 排版规范是确保代码清晰、易...

    C++编程规范及要求样本.doc

    这份文档详细阐述了C++编程中的一些基本规范和要求,涵盖了多个方面,包括文件结构、命名规则、代码风格与版式,以及字体和颜色的使用建议。 1. **概述** 编码规范对于开发出高质量、易于维护的软件至关重要。这份...

    PYTHON格式规范

    #### Python代码规范 Python作为一种广泛使用的高级编程语言,其代码规范对于保持项目的可读性和可维护性至关重要。本文档旨在提供一份全面的Python格式规范指南,涵盖编码标准、注释与文档编写规则、命名约定、...

    华为软件编程规范和范例.doc

    代码编辑阶段应遵循统一的代码风格,编译阶段及时发现并修复错误,审查时需对代码逻辑、效率和安全性进行全面检查。 **代码测试与维护** 实施详尽的测试策略,包括单元测试、集成测试和系统测试。代码应易于维护,...

    嵌入式软件编程规范标准.doc

    总的来说,这份编程规范旨在通过统一的代码风格和最佳实践,提高嵌入式软件开发的效率和质量,降低维护成本。遵循这些规范,可以促进团队间的合作,减少沟通成本,同时提升软件的可靠性和可扩展性。

    国家标准-软件开发规范

    3. **编程规范**:编码是软件开发的重要环节,规范要求遵循一定的编程风格,如命名规则、注释标准、代码结构等,以提升代码可读性和可维护性。此外,还需关注代码的错误处理和异常处理机制,确保程序的健壮性。 4. ...

    C语言编程规范ppt课件.ppt

    规范要求只使用/*...*/风格的注释,避免使用嵌套注释,以提高代码的清晰度。此外,避免在注释中使用"/*"字符序列,以免引起混淆。 标识符的选择和使用也有严格的规定。规则5.1指出,标识符不应依赖于超过31个字符的...

    中文规范.zip

    Python是一种优雅且功能强大的编程语言,为了保持代码的可读性、一致性和团队协作的高效性,Python社区制定了一套编码规范,即PEP8。PEP8全称为Python Enhancement Proposal 8,是Python编程的官方风格指南。这份...

    华为Java语言编码规范标准.doc

    它的目的是确保所有使用Java编程的项目遵循一套统一的编码风格,从而提高代码质量和团队协作效率。 2. 规范性引用文件 规范引用了公司内部的《Java语言编程规范》(DKBA1040-2001.12),虽然具体条款可能有所更新,...

Global site tag (gtag.js) - Google Analytics