| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> 写出高质量的c |c++代码(第一弹)(实现良好的代码风格,美观高效,提高代码可读性) -> 正文阅读 |
|
[C++知识库]写出高质量的c |c++代码(第一弹)(实现良好的代码风格,美观高效,提高代码可读性) |
一、前言就我的发现而言,csdn上面很少去有人去写提高编程质量,改良编程习惯的文章,包括现在的高等教育阶段所教授的c\c++,都大多只停留在如何写出这个程序,如何解决这个问题,而很少人去关注软件质量,以及代码风格等的问题。老师也很少去给学生去灌输代码质量的重要性的这个概念,甚至于有些非常努力的学生长时间在低质量,低水准,低效率的程序中摸爬滚打,浪费了自己的大学时间。以至于在以后到企业工作的时候尝尽因为不良习惯和错误带来的苦头,而且会因为代码风格以及编程习惯在早期的学习中已经成型,很难去改正自己那些错误的,致命的习惯。在工作中去一点点否定自己以前的习惯,去重新建立新的习惯这样做是非常难去进步的,一不小心甚至会适得其反,就像邯郸学步一样。 所以说我认为初学者应该重视起来,在学习中去注意正确性、健壮性、可靠性、效率、易用性、可读性(可理解性)、可扩展性、 可复用性、兼容性、可移植性等代码质量问题。现在去改变这些不好的习惯还为时不晚,否则会因为这样不好的代码习惯而造成很多致命的错误,浪费大量时间去寻找这些本应能够避免的bug。 本文章是博主在阅读《高质量 C++/C 编程指南》 一书时的理解。所以说会有和书中比较相似的句子。不是抄袭。。此书在淘宝等没有售卖,感兴趣的小伙伴可以私聊我。 二、程序的版型版型并不会影响代码的功能,但是不好的版型会影响到代码的可读性和美观程度,以及后期维护所需要的时间。有人把好的代码比作是“书法”,没错,版型好的代码,会使阅读的人赏心悦目,也会使你在找工作的时候,让面试官高看你一眼。 1、空行空行虽然会使代码长度变长,但是代码中适当的加入空行会使代码更加的清晰,也能使各个部分的条理更加清楚。所以我们还是要在适当的位置加上空行。 1.1、在每个类声明之后、每个函数定义结束之后都要加空行
1.2、在一个函数体内,逻辑上密切相关的语句间不加空行、其他地方应该加上空行
2、代码行c语言中并没有过多的要求代码在什么时候需要换行,但是我们在书写中也要进行适当的换行来时代码更加整齐美观。 2.1、一行代码只做一件事情,如只定义一个变量,或只写一条语句。这样
|
int a = 0;//初始化a int b = 0; int?c = 0; | int a=0,b=0,c=0; |
x = a + b; y = b + c; z = c + d; | x=a+b;y=b+c;z=c+d; |
if (0 == x) { ? ? ? ? printf("%d", a); } //空行 ... | if(x==0){ ???????? printf("%d",a); } //或是这样 if(x==0) printf("%d", a); |
代码行空格这个东西我觉得是每一个程序员必备的技能之一。可能有些编译器例如VS会帮助程序员自动加上该有的空格。这个功能很好,但是我觉得我们可以把它作为一个参考,去自己有意识地加上该有的空格,毕竟不是所有的编译器都能拥有这个功能。否则在使用其他编译器时不知道应该在哪里加空格就要闹笑话了。
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; // 不良的风格
|
array[5] = 0; // 不要写成 array [ 5 ] = 0;
a.Function(); // 不要写成 a . Function();
b->Function(); // 不要写成 b -> Function();
|
这样代码整体的观感会好很多。这个相信各位在书写中一般是有注意的,这个习惯并不难实现所以说大家在书写时还是要注意这一点。
void Function(int x)
{
… // program code
}
|
void Function(int x){
… // program code
}
|
当我们在读代码时,看到一大行的代码是真的非常头痛,而且往往在读这种代码时可能一目十行会漏掉东西,非常危险。所以说把长行拆分成多个小行,能使代码的可读性有效地提高,还能降低读代码时造成错误的风险。
关于优先级这个东西,初学者可以不考虑,只要在换行时保证不出错就行。
因为有些代码会产生歧义,例如下面的代码
int*? ?a,? b;
?在这个例子中我们很容易把a,b变量想成是int* 类型的指针变量。但是其实被int*修饰的只有a一个。也就是说a是int*型指针变量,b是int型的整型变量。
那如果我们写成这样
int? ?*a,b;
就会减少很多不必要的歧义。
例如
i++; // i 加 1,多余的注释
注释出现的目的是方便人们阅读,提高代码的可读性,而如果注释本身就是有问题的那这样的注释反而会极大的影响我们阅读。所以说要尽可能地减少错误,并且在适当的位置给予注释。
/*
* 函数介绍:
* 输入参数:
* 输出参数:
* 返回值 :
*/
void Function(float x, float y, float z)
{
…
}
|
if (…)
{
…
while (…)
{
…
} // end of while
…
} // end of if
|
第一弹的内容到这里就结束了,这一弹的内容主要是代码可读性以及书写规范上面,我会在后面给大家讲述如何实现更加高效的程序,如何使用一些手法使得代码更不容易产生错误。例如,如何规避野指针等等的问题。从而实现更加高质量的程序。也希望大家能够重视起来软件质量这个问题,制作不易,若有想追更的小伙伴可以点个关注,博主会出更多此系列的文章去帮助大家提高代码的质量。
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 11:07:09- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |