`
my14686
  • 浏览: 9592 次
文章分类
社区版块
存档分类
最新评论

写高效代码是一项艺术 有11个准则

阅读更多
写高效代码是一项艺术,你必须学习和实践它,清晰高效代码有利于团队合作,有利于性能优化。下面总结一下清晰高效代码的规范:

一、排版:

1、关键词和操作符之间加适当的空格。
2、相对独立的程序块与块之间加空行
3、较长的语句、表达式等要分成多行书写。
4、划分出的新行要进行适应的缩进,使排版整齐,语句可读。
5、长表达式要在低优先级操作符处划分新行,操作符放在新行之首。
6、循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分。
7、若函数或过程中的参数较长,则要进行适当的划分。
8、不允许把多个短语句写在一行中,即一行只写一条语句。
9、函数或过程的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风格。
10、C/C++语言是用大括号‘{’和‘}’界定一段程序块的,编写程序块时‘{’和‘}’应各独占一行并且位于同一列,同时与引用它们的语句左 对 齐。在函数体的开始、类的定义、结构的定义、枚举的定义以及if、for、do、while、switch、case语句中的程序都要采用如上的缩进 方 式。

二、注释

1、注释要简单明了。
2、边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性。
3、在必要的地方注释,注释量要适中。注释的内容要清楚、明了,含义准确,防止注释二义性。保持注释与其描述的代码相邻,即注释的就近原则。
4、对代码的注释应放在其上方相邻位置,不可放在下面。
5、对数据结构的注释应放在其上方相邻位置,不可放在下面;对结构中的每个域的注释应放在此域的右方;同一结构中不同域的注释要对齐。
6、变量、常量的注释应放在其上方相邻位置或右方。
7、全局变量要有较详细的注释,包括对其功能、取值范围、哪些函数或过程存取它以及存取时注意事项等的说明。
8、在每个源文件的头部要有必要的注释信息,包括:文件名;版本号;作者;生成日期;模块功能描述(如功能、主要算法、内部各部分之间的关系、该文件与其它文件关系等);主要函数或过程清单及本文件历史修改记录等。
9、在每个函数或过程的前面要有必要的注释信息,包括:函数或过程名称;功能描述;输入、输出及返回值说明;调用关系及被调用关系说明等。

三、命名

1、较短的单词可通过去掉“元音”形成缩写;
2、较长的单词可取单词的头几发符的优先级,并用括号明确表达式的操作顺序,避免使用默认优先级。
3、使用匈牙利表示法

四、可读性

1、避免使用不易理解的数字,用有意义的标识来替代。
2、不要使用难懂的技巧性很高的语句。
3、源程序中关系较为紧密的代码应尽可能相邻。

五、变量

1、去掉没必要的公共变量。
2、构造仅有一个模块或函数可以修改、创建,而其余有关模块或函数只访问的公共变量,防止多个不同模块或函数都可以修改、创建同一公共变量的现象。
3、仔细定义并明确公共变量的含义、作用、取值范围及公共变量间的关系。
4、明确公共变量与操作此公共变量的函数或过程的关系,如访问、修改及创建等。
5、当向公共变量传递数据时,要十分小心,防止赋与不合理的值或越界等现象发生。
6、防止局部变量与公共变量同名。
7、仔细设计结构中元素的布局与排列顺序,使结构容易理解、节省占用空间,并减少引起误用现象。
8、结构的设计要尽量考虑向前兼容和以后的版本升级,并为某些未来可能的应用保留余地(如预留一些空间等)。
9、留心具体语言及编译器处理不同数据类型的原则及有关细节。
10、严禁使用未经初始化的变量。声明变量的同时对变量进行初始化。
11、编程时,要注意数据类型的强制转换。

六、函数、过程

1、函数的规模尽量限制在200行以内。
2、一个函数最好仅完成一件功能。
3、为简单功能编写函数。
4、函数的功能应该是可以预测的,也就是只要输入数据相同就应产生同样的输出。
5、尽量不要编写依赖于其他函数内部实现的函数。
6、避免设计多参数函数,不使用的参数从接口中去掉。
7、用注释详细说明每个参数的作用、取值范围及参数间的关系。
8、检查函数所有参数输入的有效性。
9、检查函数所有非参数输入的有效性,如数据文件、公共变量等。
10、函数名应准确描述函数的功能。
11、避免使用无意义或含义不清的动词为函数命名
12、函数的返回值要清楚、明了,让使用者不容易忽视错误情况。
13、明确函数功能,精确(而不是近似)地实现函数设计。
14、减少函数本身或函数间的递归调用。
15、编写可重入函数时,若使用全局变量,则应通过关中断、信号量(即P、V操作)等手段对其加以保护。

七、可测性

1、在编写代码之前,应预先设计好程序调试与测试的方法和手段,并设计好各种调测开关及相应测试代码如打印函数等。
2、在进行集成测试/系统联调之前,要构造好测试环境、测试项目及测试用例,同时仔细分析并优化测试用例,以提高测试效率。

八、程序效率

1、编程时要经常注意代码的效率。
2、在保证软件系统的正确性、稳定性、可读性及可测性的前提下,提高代码效率。
3、不能一味地追求代码效率,而对软件的正确性、稳定性、可读性及可测性造成影响。
4、编程时,要随时留心代码效率;优化代码时,要考虑周全。
5、要仔细地构造或直接用汇编编写调用频繁或性能要求极高的函数。
6、通过对系统数据结构划分与组织的改进,以及对程序算法的优化来提高空间效率。
7、在多重循环中,应将最忙的循环放在最内层。
8、尽量减少循环嵌套层次。
9、避免循环体内含判断语句,应将循环语句置于判断语句的代码块之中。
10、尽量用乘法或其它方法代替除法,特别是浮点运算中的除法。

九、质量保证

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)除非必要,不要使用不熟悉的第三方工具包与控件。

十、代码编译

1、编写代码时要注意随时保存,并定期备份,防止由于断电、硬盘损坏等原因造成代码丢失。
2、同一项目组内,最好使用相同的编辑器,并使用相同的设置选项。
3、合理地设计软件系统目录,方便开发人员使用。
4、打开编译器的所有告警开关对程序进行编译。
5、在同一项目组或产品组中,要统一编译开关选项。
6、使用工具软件(如Visual SourceSafe)对代码版本进行维护。

十一、代码测试、维护

1、单元测试要求至少达到语句覆盖。
2、单元测试开始要跟踪每一条语句,并观察数据流及变量的变化。
3、清理、整理或优化后的代码要经过审查及测试。
4、代码版本升级要经过严格测试。
天猫小窍门 www.jdfwkey.com


分享到:
评论

相关推荐

    代码 基于格拉布斯准则判断异常数据代码

    代码 基于格拉布斯准则判断异常数据代码代码 基于格拉布斯准则判断异常数据代码代码 基于格拉布斯准则判断异常数据代码代码 基于格拉布斯准则判断异常数据代码代码 基于格拉布斯准则判断异常数据代码代码 基于格拉...

    写代码的四个基本准则

    编程是一项需要严谨、高效和可维护性的技能,尤其对于初入行业的新手来说,遵循一定的准则至关重要。以下四个基本准则将帮助你写出更优秀的代码。 1. **代码复用(Don't Repeat Yourself, DRY原则)**:这是软件...

    代码 格拉布斯准则判断异常数据代码

    代码 格拉布斯准则判断异常数据代码代码 格拉布斯准则判断异常数据代码代码 格拉布斯准则判断异常数据代码代码 格拉布斯准则判断异常数据代码代码 格拉布斯准则判断异常数据代码代码 格拉布斯准则判断异常数据代码...

    CSS代码优化7个准则

    例如,将分开的margin属性合并成一个简写声明,如`margin: 10px 20px 30px 40px;`,这使得代码更加简洁。要注意,如果没有定义某个属性值,浏览器会根据规则解析或使用默认值。 2. **避免使用Hack**:Hack是一种...

    最大应力准则.zip_The Strain_hasin准则_vumat 准则_最大准则_最大应力准则

    文件“最大应力准则.for”可能是一个用FORTRAN语言编写的VUMAT子程序源代码,用于在有限元分析中实现Hasin准则。该代码将包含计算应力状态、评估破坏条件以及更新材料响应的算法。理解并调试这样的代码需要深入的...

    算法源码-数据处理:格拉布斯准则判断异常数据代码.zip

    在给定的压缩包文件中,可能包含了一个实现格拉布斯准则的代码示例。这段代码可能会涉及以下步骤: 1. **数据预处理**:首先,代码会读取数据集,通常这可以通过Python的pandas库完成,将数据加载到DataFrame对象中...

    格拉布斯准则判断异常数据matlab代码

    格拉布斯准则判断异常数据matlab代码

    最优化之Armjio准则求步长——MATLAB代码(注释完整)

    文件夹内包含Armjio求步长代码以及一个函数文件、梯度函数文件和求解文件,代码注释完整,代码已公开在博客内:https://zqfeng.blog.csdn.net/article/details/117550614

    3σ(拉依达准则)的python代码

    这个准则基于正态分布的特性,认为在一个正常的正态分布数据集中,大约99.7%的数据会落在平均值的三个标准差范围内。任何超出这个范围的数据点通常被视为异常值。在Python编程中,我们可以通过编写代码来实现这一...

    《新时代中小学教师职业行为十项准则》个人感悟.pdf

    在《新时代中小学教师职业行为十项准则》中,教师被赋予了重大的责任和使命,同时,该准则也对教师的职业行为提出了明确的规范和要求。这十条准则包括:坚定政治方向、自觉爱国守法、传播优秀文化、潜心教书育人、...

    图像分割MICCAI评价准则c语言源代码

    4. "readme.txt":通常包含项目简介、使用指南、作者信息等内容,帮助用户理解和使用这个代码库。 综合以上信息,我们可以理解这是一个用于图像分割评估的C语言代码库,包含了计算图像相似度的函数,并提供了改进...

    基于MSE准则的自适应波束形成matlab仿真+代码操作视频

    2.内容:基于MSE准则的自适应波束形成matlab仿真+代码操作视频 3.用处:用于自适应波束形成编程学习 4.指向人群:本科,硕士,博士等教研使用 5.运行注意事项: 使用matlab2021a或者更高版本测试,运行里面的...

    MATLAB数据处理模型代码 基于格拉布斯准则判断异常数据代码.zip

    然而,这个压缩包可能包含一个自定义实现,这有助于理解格拉布斯准则的工作原理,并为特定的数据集进行定制。 通过学习和应用这个代码,用户不仅能掌握如何在MATLAB中识别异常值,还能深入理解统计检验在数据预处理...

    Hashin失效准则VUMAT源代码.rar_Hashin准则_VUMAT失效_hashin_vumat_断裂 vumat

    适用于Hashin失效准则,计算材料断裂。

    基于Fisher准则实现手写数字识别(matlab代码及课程报告)

    每张图像通常会被转换为一个二维的像素矩阵,并转化为向量形式。接下来,利用Fisher准则进行特征提取,这包括以下步骤: 1. 数据预处理:对图像进行归一化处理,使得每个像素值位于[0, 1]之间,减少光照等因素的...

    Matlab实现通过拉依达准则与格拉布斯准则对测量误差样本进行检验,剔除粗大误差

    具体而言,如果一个数据点大于平均值加上k倍的标准差或者小于平均值减去k倍的标准差,那么这个数据点就会被标记为粗大误差。k的选取通常根据数据集中允许的最大异常值比例来确定。 格拉布斯准则则更为灵活,同样...

    代码 格拉布斯准则判断异常数据代码.rar

    由于这是一个代码实现,用户需要有一定的编程基础才能理解并应用这段代码。在实际使用时,应确保数据符合正态分布假设,否则格拉布斯准则的有效性会受到影响。同时,应当注意异常值的处理方式可能会对最终的分析结果...

    数学建模之《基于格拉布斯准则判断异常数据代码》

    数学建模之《基于格拉布斯准则判断异常数据代码》数学建模之《基于格拉布斯准则判断异常数据代码》数学建模之《基于格拉布斯准则判断异常数据代码》数学建模之《基于格拉布斯准则判断异常数据代码》数学建模之《基于...

    格拉布斯准则判断异常数据代码.zip

    下面是一个简单的MATLAB代码示例: ```matlab function [outlier, G] = grubbs_test(data) n = length(data); mean_data = mean(data); std_data = std(data); max_deviation = max(abs(data - mean_data)); ...

Global site tag (gtag.js) - Google Analytics