如何编写出优秀的代码

编程知识 更新时间:2023-04-05 15:42:58

文章目录

  • 前言
  • 一、头文件
    • 1、头文件有三部分组成
    • 2、引用头文件的规则和建议
    • 3、头文件的作用
    • 4、定义文件和目录结构
  • 二、程序的版式和格式
    • 1、空行
    • 2、代码行
    • 3、代码行内的空格
    • 4、对齐
    • 5、长行拆分
    • 6、修饰符的位置
    • 7、注释
  • 三、命名规则
    • 1、共性规则
  • 四、总结


前言

IT行业的成熟,互联网公司更大的竞争,以及整个行业的成熟,自然对程序员的要求越发的高。
要想提高代码水平,不仅需要自身的硬实力,还需要一个好的编程习惯。良好的代码风格,更是能大大提高代码的正确性,可读性,可移植性以及代码的效率。为能够编写出高质量c/c++程序打下良好的基础。
提高编程质量就是要从点点滴滴做起,
世上不存在最好的编程风格,一切因需求而定。以下规则和良好的风格参考自《高质量C/C++编程》这本神书。

一、头文件

1、头文件有三部分组成

{ ( 1 )头文件开头处的版权和版本声明。   ( 2 )预处理块。   ( 3 )函数和类结构声明等。   \left\{ \begin{aligned} &(1)头文件开头处的版权和版本声明。 & \ \\ &(2)预处理块。 & \ \\ & (3)函数和类结构声明等。 & \ \end{aligned}\right. 1)头文件开头处的版权和版本声明。2)预处理块。3)函数和类结构声明等。   

2、引用头文件的规则和建议

【规则 1】用 #include <filename.h> 格式来引用标准库的头文件(编译器将从标准库目录开始搜索)。

#include <math.h> // 引用标准库的头文件 

【规则 2】用 #include “filename.h” 格式来引用非标准库的头文件(编译器将从用户的工作目录开始搜索)。

#include “myheader.h” // 引用非标准库的头文件

【建议 1】头文件中只存放“声明”而不存放“定义.”建议将成员函数的定义与声明分开,不论该函数体有多么小.

3、头文件的作用

(1)通过头文件来调用库功能。
(2)头文件能加强类型安全检查。

4、定义文件和目录结构

定义文件有三部分内容:
(1) 定义文件开头处的版权和版本声明。
(2) 对一些头文件的引用。
(3) 程序的实现体(包括数据和代码)。
目录结构:
如果一个软件的头文件数目比较多(如超过十个),通常应将头文件和定义文件分别保存于不同的目录,以便于维护。

二、程序的版式和格式

1、空行

【规则 3】在每个类声明之后、每个函数定义结束之后都要加空行。

// 空行 
void Function1() 
{} 
// 空行 
void Function2() 
{} 
// 空行 
void Function3() 
{}

【规则 4】在一个函数体内,逻揖上密切相关的语句之间不加空行,其它地方应加空行分隔。

// 空行
while (condition) 
{ 
  statement1; 
// 空行
if (condition) 
{ 
 statement2; 
} 
else 
{ 
 statement3; 
} 
// 空行
 statement4; 
}

2、代码行

【规则 5】一行代码只做一件事情,如只定义一个变量,或只写一条语句。这样的代码容易阅读,并且方便于写注释。
【规则 6】if、for、while、do 等语句自占一行,执行语句不得紧跟其后。不论执行语句有多少都要加{}。这样可以防止书写失误

int width; // 宽度 
int height; // 高度 
int depth; // 深度 

x = a + b; 
y = c + d; 
z = e + f; 

if (width < height) 
{ 
dosomething(); 
}

for (initialization; condition; update) 
{ 
dosomething(); 
} 
// 空行 
other();

【建议 2】尽可能在定义变量的同时初始化该变量(就近原则) 如果变量的引用处和其定义处相隔比较远,变量的初始化很容易被忘记。如果引用了未被初始化的变量,可能会导致程序错误。

int weight = 70;
int high = 180;
int depth = 10;

3、代码行内的空格

【规则 7】关键字之后至少要留一个空格,否则无法辨析关键字。像 if、for、while 等关键字之后应留一个空格再跟左括号‘( ’ ,以突出关键字。
【规则 8】函数名之后不要留空格,紧跟左括号‘( ’ ,以与关键字区别。
【规则 9】‘,’之后要留空格,如 Function(x, y, z)。如果‘;’不是一行的结束符号,其后要留空格。
【规则 10】赋值操作符、比较操作符、算术操作符、逻辑操作符、位域操作符,等二元操作符的前后应当加空格。
【规则 11】一元操作符前后不加空格。
【规则 12】象"[]"、 “.” 、“->”这类操作符前后不加空格。
【建议 3】对于表达式比较长的 for 语句和 if 语句,为了紧凑起见可以适当地去掉一些空格。

void Func1(int x, int y, int z); // 良好的风格 
void Func1 (int x,int y,int z); // 不良的风格

if (year >= 2000) // 良好的风格 
if(year>=2000) // 不良的风格 
if ((a>=b) && (c<=d)) // 良好的风格 
if(a>=b&&c<=d) // 不良的风格

for (i=0; i<10; i++) // 良好的风格 
for(i=0;i<10;i++) // 不良的风格 
for (i = 0; I < 10; i ++) // 过多的空格

x = a < b ? a : b; // 良好的风格 
x=a<b?a:b; // 不好的风格

int *x = &y; // 良好的风格 
int * x = & y; // 不良的风格 

4、对齐

【规则 13】程序的分界符‘{’和‘}’应独占一行并且位于同一列,同时与引用它们的语句左对齐。
【规则 14】{ }之内的代码块在‘ { ’右边数格处左对齐

//良好风格的对齐
void Function(int x) 
{// program code 
}

if (condition) 
{// program code 
} 
else 
{// program code 
}

for (initialization; condition; update) 
{// program code 
}

While (condition) 
{// program code 
} 

//如果出现嵌套的{},则使用缩进对齐,如:
 {{}}

5、长行拆分

【规则 15】代码行最大长度宜控制在 70 至 80 个字符以内。代码行不要过长,否则眼睛看不过来,也不便于打印。
【规则 16】长表达式要在低优先级操作符处拆分成新行,操作符放在新行之首(以便突出操作符)。拆分出的新行要进行适当的缩进,使排版整齐,语句可读。

6、修饰符的位置

【规则 17】应当将修饰符 * 和 & 紧靠变量名。
例如:

char *name;
int *x, y;   //此处y不会被误认为指针

7、注释

【规则 18】注释是对代码的“提示”,而不是文档。程序中的注释不可喧宾夺主,注释太多了会让人眼花缭乱。注释的花样要少。
【规则 19】如果代码本来就是清楚的,则不必加注释。否则多此一举,令人厌烦。
【规则 20】边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性。不再有用的注释要删除。
【规则 21】注释应当准确、易懂,防止注释有二义性。错误的注释不但无益反而有害。
【规则 22】尽量避免在注释中使用缩写,特别是不常用缩写。
【规则 23】注释的位置应与被描述的代码相邻,可以放在代码的上方或右方,不可放在下方。
【规则 24】当代码比较长,特别是有多重嵌套时,应当在一些段落的结束处加注释,便于阅读。

三、命名规则

1、共性规则

【规则 25】标识符最好采用英文单词或其组合,便于记忆和阅读。
【规则 26】标识符的长度应当符合“min-length && max-info rmation”原则。
一般来说,长名字能更好地表达含义,所以函数名、变量名、类名长达十几个字符不足为怪。那么名字是否越长约好?不见得! 例如变量名 maxval 就比 maxValueUntilOverflow好用。单字符的名字也是有用的,常见的如 i,j,k,m,n,x,y,z 等,它们通常可用作函数内的局部变量。
【规则 27】命名规则尽量与所采用的操作系统或开发工具的风格保持一致。
例如 Windows 应用程序的标识符通常采用“大小写”混排的方式,如 AddChild。而 Unix 应用程序的标识符通常采用“小写加下划线”的方式,如 add_child。别把这两高质量 C++/C 编程指南,v 1.0 2001 Page 23 of 101类风格混在一起用
【规则 28】程序中不要出现仅靠大小写区分的相似的标识符。
【规则 29】程序中不要出现标识符完全相同的局部变量和全局变量,尽管两者的作用域不同而不会发生语法错误,但会使人误解
【规则 30】变量的名字应当使用“名词”或者“形容词+名词”
例如:

float value; 
float oldValue; 
float newValue;

【规则 31】全局函数的名字应当使用“动词”或者“动词+名词”(动宾词组)。类的成员函数应当只使用“动词”,被省略掉的名词就是对象本身
【规则 32】用正确的反义词组命名具有互斥意义的变量或相反动作的函数
例如:

int minValue; 
int maxValue; 
int SetValue(); 
int GetValue(); 

【建议 4】尽量避免名字中出现数字编号

四、总结

规范书写代码只是学习代码路上的第一步,走好每一步才能在成功路上走的更远。只有做好点点滴滴,做好每一次的细节处理,才能更好的写出高质量的程序出来。学海无涯苦作舟,成功的每一步都是汗水,不要放弃,坚持,才能走的更远。
希望每一位程序员朋友都能在成功的路上走的更远,也希望我们的国家在IT行业能更加的强大。加油了。

更多推荐

如何编写出优秀的代码

本文发布于:2023-04-05 15:42:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/abe47e47a2ca2f9f78430079454c56f1.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:优秀   代码

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 46718文章数
  • 14阅读数
  • 0评论数