【编程基础】写代码,你应该知道九类规则

网上有太多讲编码规范、编码习惯的文章,但我总是念的多,实际去认真阅读理解的少。或多或少的按照自己的思维去编写代码。这种习惯让我吃大亏,比如一个指针未赋值导致偶尔出错问题。所谓细节决定成败,特别是初学者一定要谨记。

其实编程就像是写诗,好的诗代代流传。写诗有五言七律,押韵平仄等等。好诗让人百读不厌。好的代码也是一样。好诗第一眼就能从格式上体现出来,好的代码同样如此。美的东西其实都有共性的......

那么我们要写好的代码得认真学习编码规范的以及基本常识。

一、排版

1.关键词和操作符之间加适当的空格。

2.相对独立的程序块与块之间加空行

3.较长的语句、表达式等要分成多行书写。

4.划分出的新行要进行适应的缩进,使排版整齐,语句可读。

5.长表达式要在低优先级操作符处划分新行,操作符放在新行之首。

6.循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分。

7.若函数或过程中的参数较长,则要进行分行及适当的划分。

8.一行只写一条语句,不能把多个短语句写在一行中。

9.函数或过程的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风格。

二、注释

1.注释要简单明了。

2.写代码和修改代码同时修改相应的注释,以保证注释代码的一致性。

3.在必要的地方注释,注释量要适中。注释内容要清楚、明了,准确。注释与代码风格相似,即注释的就近原则。

4.对代码的注释应放在其上方相邻位置或右方,不可放在下面。

5.全局变量要有较详细的注释,包括对其功能、取值范围。

6.在每个源文件的头部要有必要的注释信息,包括:文件名;版本号;作者;生成日期;模块功能描述(如功能、主要算法、内部各部分之间的关系、该文件与其它文件关系等);主要函数或过程清单及本文件历史修改记录等。

7.在每个函数或过程的前面要有必要的注释信息,包括:函数或过程名称;功能描述;输入、输出及返回值说明;调用关系及被调用关系说明等。

三、命名

1.较短的单词可用缩写;

2.较长的单词可取单词的头几个字符,并用括号明确表达式的操作顺序,避免使用默认优先级。

3.使用匈牙利表示法

四、可读性

1.避免使用数字,用有意义的标识来替代。

2.不要使用难懂的技巧性很高的语句。

3.源程序中关系较为紧密的代码应尽可能相邻。

五、变量

1.去掉没必要的公共变量。

2.构造仅有一个模块或函数可以修改、创建,而其余有关模块或函数只访问的公共变量,防止多个不同模块或函数都可以修改、创建同一公共变量的现象。

3.仔细定义并明确公共变量的含义、作用、取值范围及公共变量间的关系。

4.明确公共变量与操作此公共变量的函数或过程的关系,如访问、修改及创建等。

5.当向公共变量传递数据时,要十分小心,防止赋与不合理的值或越界等现象发生。

6.防止局部变量与公共变量同名。

7.仔细设计结构中元素的布局与排列顺序,使结构容易理解、节省占用空间,并减少引起误用现象。

8.结构的设计要尽量考虑向前兼容和以后的版本升级,并为某些未来可能的应用保留余地(如预留一些空间等)。

9.留心具体语言及编译器处理不同数据类型的原则及有关细节。

10.严禁使用未经初始化的变量。声明变量的同时对变量进行初始化。

11.编程时,要注意数据类型的强制转换。

六、函数过程

1.函数的规模尽量限制其行数。一个函数最好仅完成一件功能。

2.为简单功能编写函数。

3.函数的功能应该是可以预测的,也就是只要输入数据相同就应产生同样的输出。

4.尽量不要编写依赖于其他函数内部实现的函数。

5.避免设计多参数函数,不使用的参数从接口中去掉。

6.用注释详细说明每个参数的作用、取值范围及参数间的关系。

7.检查函数所有参数输入的有效性。

8.检查函数所有非参数输入的有效性,如数据文件、公共变量等。

9.函数名应准确描述函数的功能。

10.避免使用无意义或含义不清的动词为函数命名

11.函数的返回值要清楚、明了,让使用者不容易忽视错误情况。

12.明确函数功能,精确(而不是近似)地实现函数设计。

13.减少函数本身或函数间的递归调用。

14.编写可重入函数时,若使用全局变量,则应通过关中断、信号量(即P、V操作)等手段对其加以保护。

七、可测性

1.在编写代码之前,应预先设计好程序调试与测试的方法和手段,并设计好各种调测开关及相应测试代码如打印函数等。

2.在进行集成测试/系统联调之前,要构造好测试环境、测试项目及测试用例,同时仔细分析并优化测试用例,以提高测试效率。

八、效率

1.编程时要经常注意代码的效率。

2.在保证软件系统的正确性、稳定性、可读性及可测性的前提下,提高代码效率。

3.不能一味地追求代码效率,而对软件的正确性、稳定性、可读性及可测性造成影响。

4.编程时,要随时留心代码效率;优化代码时,要考虑周全。

5.要仔细地构造或直接用汇编编写调用频繁或性能要求极高的函数。

6.通过对系统数据结构划分与组织的改进,以及对程序算法的优化来提高空间效率。

7.在多重循环中,应将最频繁的循环放在最内层,减少循环嵌套层次。

8.避免循环体内含判断语句,应将循环语句置于判断语句的代码块之中。

9.尽量用乘法或其它方法代替除法,特别是浮点运算中的除法。

九、质量

1.在软件设计过程中构筑软件质量。

代码质量保证优先原则

(1)正确性,指程序要实现设计要求的功能。

(2)稳定性、安全性,指程序稳定、可靠、安全。

(3)可测试性,指程序要具有良好的可测试性。

(4)规范/可读性,指程序书写风格、命名规则等要符合规范。

(5)全局效率,指软件系统的整体效率。

(6)局部效率,指某个模块/子模块/函数的本身效率。

(7)个人表达方式/个人方便性,指个人编程习惯。

2.只引用属于自己的存贮空间。

3.防止引用已经释放的内存空间。

4.过程/函数中分配的内存,在过程/函数退出之前要释放。

5.过程/函数中申请的(为打开文件而使用的)文件句柄,在过程/函数退出前要关闭。

6.防止内存操作越界。

7.时刻注意表达式是否会上溢、下溢。

8.认真处理程序所能遇到的各种出错情况。

9.系统运行之初,要初始化有关变量及运行环境,防止未经初始化的变量被引用。

10.系统运行之初,要对加载到系统中的数据进行一致性检查。

11.严禁随意更改其它模块或系统的有关设置和配置。

12.不能随意改变与其它模块的接口。

13.充分了解系统的接口之后,再使用系统提供的功能。

14.要时刻注意易混淆的操作符。当编完程序后,应从头至尾检查一遍这些操作符。

15.不使用与硬件或操作系统关系很大的语句,而使用建议的标准语句。

16.建议:使用第三方提供的软件开发工具包或控件时,要注意以下几点:

(1)充分了解应用接口、使用环境及使用时注意事项。

(2)不能过分相信其正确性。

(3)除非必要,不要使用不熟悉的第三方工具包与控件。

目前推荐较好的编码规范,webkit编码规范,你懂的,高效,简洁,模块清晰,风格统一等等。有兴趣可以看看它值得我们学习。

原文发布于微信公众号 - 程序员互动联盟(coder_online)

原文发表时间:2015-05-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏java一日一条

Java实现单例的难点

有简单又高效的方法可以实现单例模式,但没有一种方式能在任何情况下都确保单例的完整性。

412
来自专栏java一日一条

Java 枚举查找并不抛异常的实现

Java Enum是一个非常有用的功能,但很多人通常并不能充分利用,这是因为一些库不会优先择用该功能。通常我们也可以正确使用Java枚举功能,但在许多代码库中往...

693
来自专栏熊二哥

让我们一起写出更有效的CSharp代码吧,少年们!

周末空闲,选读了一下一本很不错的C#语言使用的书,特此记载下便于对项目代码进行重构和优化时查看。 Standing On Shoulders of Giant...

1765
来自专栏程序员的知识天地

使用 JS 实现一个本地数据库

前端很多时候还是需要保存一些数据的,这里的保存指的是长久的保存。以前的思想是把数据保存在 Cookie 中,或者将 key 保存在 Cookie 中,将其他数据...

642
来自专栏微信终端开发团队的专栏

微信移动端数据库组件 WCDB 系列:WINQ原理篇(三)

高效、完整、易用是WCDB的基本原则。前几篇文章分享了WCDB的基本用法和修复工具,接下来将更深入地聊聊WCDB在易用性上的思考和实践。

5460
来自专栏杨建荣的学习笔记

用Oracle的眼光来学习MySQL 5.7的sys(上)(r11笔记第24天)

sys的初衷 MySQL 5.7的sys自从推出以来,整体的反响似乎没有预期的那么高,而我看到这个sys库的时候,第一感觉是越发和Oracle像了,不是...

3679
来自专栏性能与架构

mysql 大数据量的分页优化

使用limit进行分页,翻到10000多页后效率低 原因 limit offset 会逐行查找,是先查询再跳过 优化思路 (1)从业务逻辑 不允许翻过100页,...

3495
来自专栏张善友的专栏

.NET不可变集合已经正式发布

微软基础类库(Base Class Library)团队已经完成了.NET不可变集合的正式版本,但不包括ImmutableArray。与其一起发布的还包括针对其...

19110
来自专栏更流畅、简洁的软件开发方式

好大一棵树,新春的祝福(一):n级分类的数据结构

     这个树的结构几年前在csdn里面也发过了一次,现在看看,主体结构居然没有什么变化,用了这么长的时间,自我感觉还是很好用的。而且在这个基础之上把其他的功...

2135
来自专栏Java技术

如何通过软引用和弱引用提升JVM内存使用性能!

初学者或初级程序员在面试时如果能证明自己具有分析内存用量和内存调优的能力,这相当有利,因为这是针对5年左右相关经验的高级程序员的要求。而对于高级程序员来说,如果...

642

扫码关注云+社区