高质量编程指南笔记

本文只是本人的阅读笔记,作笔记时有改动。详细指南请参见链接:原指南

0 前言

编辑高手:能长期稳定地编写出高难度、高质量程序的程序员。
编程老手:能长期稳定地编写出高质量程序的程序员。

根据上述定义,马上得到第一推论:我既不是高手也算不上是老手。

1.1 版本和版本的声明

(1)版权信息。
(2)文件名称,标识符,摘要。
(3)当前版本号,作者/修改者,完成日期。
(4)版本历史信息。

例子见原文示例1-1。

1.2 头文件的结构

(1)头文件开头处的版权和版本声明(参见原文示例1-1)。
(2)预处理块。
(3)函数和类结构声明等。

预处理块中的“ifndef/define/endif结构”是本人忽视的,只有在写大作业时才注意。】

#ifndef FILE_H
#define FILE_H
//内容
#endif

【不提倡使用全局变量,尽量不要在头文件中出现象extern int value 这类声明】

1.3 定义文件的结构

(1) 定义文件开头处的版权和版本声明(参见示例1-1)。
(2) 对一些头文件的引用。
(3) 程序的实现体(包括数据和代码)。

1.4 头文件的作用

【略】

1.5 目录结构

【略,不清楚】

2.1 空行

空行不会浪费内存,虽然打印含有空行的程序是会多消耗一些纸张,但是值得。

(1)在每个类声明之后、每个函数定义结束之后都要加空行。
(2)在一个函数体内,逻揖上密切相关的语句之间不加空行,其它地方应加空行分隔

2.2 代码行

(1)一行代码只做一件事情,如只定义一个变量,或只写一条语句。这样的代码容易阅读,并且方便于写注释。

【本人有时会在一行连续定义相同类型的变量,这样不好!】

(2)if、for、while、do等语句自占一行,执行语句不得紧跟其后。不论执行语句有多少都要加{}。

【本人不注意,喜欢写紧凑点,不知道是哪里看的,{要跟在后面,现在还是采用本文的建议把,让{也占一行,一个语句也加{}】

(3)尽可能在定义变量的同时初始化该变量(就近原则),减少隐患。

2.3 代码行内的空格

【代码行内的空格都是本人不注意的!】

(1)关键字之后要留空格。象const、virtual、inline、case 等关键字之后至少要留一个空格,否则无法辨析关键字。象if、for、while等关键字之后应留一个空格再跟左括号‘(’,以突出关键字。
(2)函数名之后不要留空格,紧跟左括号‘(’,以与关键字区别。
(3)向后跟随: (
(4)向前紧随: ) , ;
(5),之后要留空格,如Function(x, y, z)。
;类似如for (initialization; condition; update)。
(6)赋值操作符、比较操作符、算术操作符、逻辑操作符、位域操作符,如“=”、“+=”、“>=”、“<=”、“+”、“*”、“%”、“&&”、“||”、“<<”,“^”等二元操作符的前后应当加空格。
(7)一元操作符的前后如“!”、“~”、“++”、“–”、“&”(地址运算符)等不加空格。
(8)“[]”、“.”、“->”这类操作符前后不加空格。
(9)对于表达式比较长的for语句和if语句,为了紧凑起见可以适当地去掉一些空格,如for (i=0; i<10; i++)和if ((a<=b) && (c<=d))。

2.4 对齐

【这主要关于 { 与 } 的,但我之前都没有注意】

(1){与}独占一行,位于同列,注意缩进。
(2){ }内的代码块在{ 的右边数格对齐。

2.5 长行拆分

长表达式要在低优先级操作符处拆分成新行,操作符放在新行之首(以便突出操作符)。拆分出的新行要进行适当的缩进,使排版整齐,语句可读。

2.6 修饰符的位置

修饰符 * 和 & 应该靠近数据类型还是该靠近变量名,是个有争议的活题。

若将修饰符 * 靠近数据类型,例如:int* x; 从语义上比较直观,即x是int 类型的指针。

弊端是易误解,例如:int* x, y; 此处y容易被误解为指针变量。虽然将x和y分行定义可以避免误解,但并不是人人都愿意这样做。

2.7 注释

(1)注释是对代码的“提示”,而不是文档。程序中的注释不可喧宾夺主,注释太多了会让人眼花缭乱。注释的花样要少。
(2)边写代码边注释,修改代码同时修改相应的注释。
(3)【尽量避免在注释中使用缩写,特别是不常用缩写
(4)注释位置不可放在下方。
(5)【代码比较长,特别是有多重嵌套时,应当在一些段落的结束处加注释,便于阅读。这个从来没注意哈

2.7 类的版式

建议读者“以行为为中心”的书写方式,首先考虑类的函数。这是很多人的经验——“这样做不仅让自己在设计类时思路清晰,而且方便别人阅读。因为用户最关心的是接口,谁愿意先看到一堆私有数据成员!”

3.1 未完待续

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值