当前位置: 100md首页 > 电子书籍 > 资料下载2021 > 未分类2
编号:45710
这样编码才规范.pdf
http://www.100md.com 2020年12月10日
第1页
第10页
第19页
第29页
第46页

    参见附件(133074KB,308页)。

    16个主题,128项基本编码准则,从项目初期打造统一编码标准。 夯实编码基础,规范编码风格,培养编码习惯,助力技术成长。 避免Bug和后期重复维护,简单的代码才是好代码!

    内容简介

    本书通过16个主题,收录了优秀程序员应当遵守的128项基本编码准则,涉及初期设计、间隔、缩进、标识符名称、运算符使用等多个方面,并附有大量参考网址及文献,帮助开发人员夯实基础,从规范的编码操作开始,培养良好的编码习惯,助力未来技术成长。

    作者简介

    朴晋锈

    具有多年一线程序员开发经验,现为技术作家、信息架构师,从网络、图书、杂志等收集有价值的信息和知识。担任程序员时,开发过面向双机系统通信的API模块,从COBOL到4th Dimension,使用过多种编程语言和开发工具。著有《我的PC攻防》《用GNU Linux走向成功》《C语言基础核心原理》《保护好你的钱和信息》《一册搞定C++编程》等。目前正在撰写多种主题图书,已出版多部译著,并成立翻译公司,致力于信息通信领域的翻译。

    前言

    我是拥有多年程序员开发经验的技术作家,本书是我结合自己双重身份积累的经验编写而成的。虽然各种方法论一直层出不穷,但优秀的编码习惯并没有太大变化。因此,本书更专注于始终具备使用价值的优秀的编码习惯和方法。我参考相关书籍,将实际工作中间接接触的知识和主动思考的结论进行了系统分类和详细说明。

    盖房子时,如果负责基础工作的泥瓦匠手艺不精又没有竭尽全力,房屋质量就不可能过关。即使后期有技艺精湛的装潢布局使得建筑物的外观精美绝伦,根基没有打好也会成为“豆腐渣工程”。同理,决定软件系统质量的就是编码工作,这就要求负责编码的程序员具有过硬的基本功。

    培养具备优秀编码习惯的一流程序员是软件开发公司和学校的职责,不是我能够干预的。但编写并出版合适的工具书,为广大程序员的成长提供帮助,是我力所能及的事情。因此,我决定在此范围内最大限度发挥自身的光和热。

    本书融入了很多经验丰富的程序员的多种观点,我要向提供这些观点的程序员——可以称为“黑客”或尊称为“专家”的优秀程序员——表达衷心的感谢。正是仰仗这些人的不懈努力和智慧结晶,我们编写的代码才能越来越精美、准确、高效。因此,我希望每位程序员都读一读这本书,也希望从事与编码工作相关业务的其他人员进行参考。

    各位阅读本书时不必按照顺序逐章阅读。虽然与后半部分相比,前半部分更浅显易懂,但只要是写过代码的人,就都能够理解后半部分内容。因此,不必像阅读小说一样从头开始,各位挑选感兴趣的主题研读即可。

    如果感到本书内容不够深入,末尾的附录部分给出了更多参考文献,供各位进行深度学习。但我认为,只要牢记本书收录的精髓并加以运用,就足以大幅提升效率。

    我一直坚持为出版的每一本书写前言,这次也不例外。虽然现在刚刚完稿,身心俱疲,但我总是安慰自己,写前言就像是前进中留下的脚印。这次完成了这本关于编码风格的书,我又向前迈了一步,留下了一个脚印。但愿今天我留下的这个脚印能为后来人指引方向。

    朴晋锈

    这样编码才规范预览

    目录

    第1章 基础知识概述

    1.1 编码风格2

    1.2 编码风格教育缺失3

    1.3 打磨编码风格的时机7

    1.4 必须学习编码风格的原因9

    1.5 编码风格比数学或英语更重要11

    1.6 所有编程语言都需要编码风格12

    1.7 选择用C语言阐述编程风格的原因14

    1.8 编码风格有益于编译执行方式和混合执行方式17

    1.9 基于组件的软件开发方式与编码风格20

    1.10 码农的力量不容小觑23

    1.11 将编码惯例文档化以统一应用24

    第2章 程序设计阶段所需编码准则

    2.1 遵循最新标准28

    2.2 合理限制开发人员的规模29

    2.3 维护旧程序比开发新程序更常见31

    2.4 不要认为修改程序很容易32

    2.5 慎重采用新技术34

    2.6 不要采用RAF策略36

    第3章 间隔相关编码准则

    3.1 一行只写一条语句42

    3.2 区分声明语句和执行语句44

    3.3 区分段落46

    3.4 区分各种控制语句50

    3.5 区分各函数54

    3.6 运算符前后需留出空格61

    3.7 不要在一元运算符与操作数之间插入空格63

    3.8 分号前不要插入空格63

    3.9 不要滥用Tab键64

    3.10 逗号后必须插入一个空格65

    3.11 逗号后不要插入太多空格65

    3.12 变量初始化时的列对齐66

    3.13 一行只声明一个变量70

    第4章 缩进相关编码准则

    4.1 大括号的位置74

    4.2 统一大括号的位置77

    4.3 内部代码块需要缩进78

    4.4 输出部分需要缩进81

    4.5 不要毫无意义地缩进84

    4.6 保持缩进程度的一致性86

    4.7 选择合适的缩进程度87

    4.8 不要编写凸出形式的代码88

    第5章 注释相关编码准则

    5.1 多种注释形态92

    5.2 区分单行注释和注释框94

    5.3 添加“变量字典编写专用注释”98

    5.4 向程序插入伪代码100

    5.5 通过注释标注程序目标102

    5.6 程序起始部分必须添加头注释104

    5.7 在等于运算符旁添加注释110

    5.8 在大括号闭合处添加注释112

    5.9 在函数内部添加详细介绍函数的注释115

    5.10 注释标记原则116

    第6章 标识符名称定义相关编码准则 I

    6.1 系统化定义变量名118

    6.2 用匈牙利表示法命名变量119

    6.3 用变量名前缀表示变量数据类型120

    6.4 用变量名前缀表示变量存储类型122

    6.5 用函数名前缀表示函数功能125

    6.6 编写个人专属前缀127

    第7章 标识符名称定义相关编码准则 II

    7.1 用有意义的名称命名130

    7.2 不要使用相似的变量名131

    7.3 在不影响含义的前提下尽可能简短命名133

    7.4 用下划线和大小写区分较长变量名135

    7.5 变量名不要以下划线开始136

    7.6 不要过度使用下划线137

    7.7 合理使用大小写命名标识符139

    7.8 不要滥用大小写区分 I141

    7.9 不要滥用大小写区分 II142

    7.10 不能用相同名称同时命名类和变量143

    7.11 用大写字母表示变量名中需要强调的部分144

    第8章 运算符相关编码准则

    8.1 恰当应用条件运算符有助于提高可读性146

    8.2 不要凭借运算符优先级排列算式147

    8.3 指针运算符应该紧接变量名148

    8.4 慎选移位运算,多用算术运算150

    8.5 不要追求极端效率151

    第9章 编写清晰代码所需编码准则

    9.1 不要投机取巧,应致力于编写清晰易懂的程序154

    9.2 切忌混淆while语句中关系运算符和赋值运算符的优先级156

    9.3 不要进行隐式“非零测试”158

    9.4 不要在条件表达式中使用赋值语句159

    9.5 避免产生副作用161

    9.6 函数原型中也要标注参数的数据类型164

    9.7 形式参数也需要命名166

    9.8 必须标注返回值的数据类型168

    9.9 留意结果值169

    9.10 在for语句等条件表达式中谨慎运算171

    9.11 大量使用冗余括号172

    9.12 如果else语句使用大括号,那么if语句也应该使用175

    9.13 函数末尾务必编写return语句176

    第10章 编写可移植代码所需编码准则

    10.1 文件名不超过14个字符178

    10.2 不要在文件名中使用特殊字符180

    10.3 利用条件编译提高可移植性181

    10.4 了解编译器的限制183

    10.5 需考虑数据类型大小可能变化185

    10.6 不要指定绝对路径186

    10.7 可移植性和高效性二选一187

    10.8 用数组代替指针以提高可移植性188

    10.9 选择可移植性更好的编程语言189

    10.10 不要插入低级语言编写的代码190

    第11章 编写精确代码所需编码准则

    11.1 计算机并不如想象得那么精确192

    11.2 需要进行精确计算时避开浮点数运算193

    11.3 double型比float型更适合精确计算194

    11.4 确认整数型大小197

    11.5 必须明确计算单位198

    11.6 特别留意除法运算200

    11.7 尽量避免数据类型转换203

    11.8 精通编程语言的语法205

    11.9 留意可能出现的非线性计算结果206

    第12章 提升性能所需编码准则

    12.1 重视性能,限制输出210

    12.2 用简单形式改写运算表达式211

    12.3 需要高效处理大文件时应使用二进制文件212

    12.4 了解并使用压缩/未压缩结构体优缺点213

    12.5 根据运行环境选择编程语言216

    12.6 根据情况选择手段218

    12.7 选择更优秀的数据结构219

    第13章 编写易于理解的代码所需编码准则

    13.1 不要使用goto语句222

    13.2 不要替换C语言组成要素224

    13.3 缩短过长数据类型名称226

    13.4 使用if语句而非三元运算符229

    13.5 数组维数应限制在三维之内230

    13.6 考虑驱动函数main函数的作用231

    13.7 将常量替换为符号常量或const形态常量233

    13.8 考虑变量声明部分的顺序234

    13.9 尽可能不使用全局变量236

    13.10 遵循KISS原则237

    第14章 用户接口处理相关编码准则

    14.1 确保保存输入值的变量足够大240

    14.2 转换说明符和参数个数应保持一致241

    14.3 使用fgets()和sscanf()函数而非scanf()函数243

    14.4 使用fflush()函数清空标准输入/输出设备缓冲245

    第15章 编写零漏洞代码所需编码准则

    15.1 数组下标应从0开始252

    15.2 置换字符串时必须使用括号254

    15.3 文件必须有开就有关255

    15.4 不要无视编译器的警告错误259

    15.5 掌握并在编码时防止运行时错误260

    15.6 用静态变量声明大数组265

    15.7 预留足够大的存储空间267

    15.8 注意信息交换引发的涌现效果268

    原文摘录

    121重视性能,限制输出启动 Linux操作系统的计算机时,会看到很多提示信息。我不禁会想,有时间输出这些信息还不如快点启动。输出大量信息的程序广泛存在,常见的有压缩程序、杀毒软件等。虽然初衷是为了输出必要信息,但反复输出相同信息反而会成为一种负担。

    因此,最好支持用户可以自由设置程序运行时是否输出提示信息。

    也就是说,用户可以选择输出或不输出这些信息。

    用户不满意的地方远不仅止这些输出信息。C语言中,负责格式化输出的 printf函数的运算成本要远高于其他运算。因为将字符串按照一定格式转换为数字的过程非常复杂,而且将字符输出到标准输出设备的过程同样非常耗时。另外,涉及这一过程的 scant或 sscanf0函数的运算成本也非常高。

    如果说加法运算成本为1,那么 printf函数的运算成本接近200!运行一条 printf(0函数的时间可执行近200次加法运算。

    123需要高效处理大文件时应使用二进制文件用C语言处理文件时,一般使用ASC格式的文件。

    ASCII是美国标准协会制定的信息交换代码( AmericanStandard Code for Information Interchange),ASCI格式的文件一般又称文本文件。 Windows系统下,用记事本程序编写的文件就是文本文件。源代码文件也是文本文件之一。

    用AscⅡI格式编写的文件优点是,在任何地方都可以查看该文件,因为任何计算机都提供可以查看ASCⅡ1格式文件(以下统称ASCI文件)的命令或程序。而且,ASCI文件便于移植, Windows上编写的ASCI文件可以直接用于 Linux。因此,大部分文件都是ASCI格式。

    但是,ASCI文件的读写速度要低于二进制文件,而且所占空间更大。

    这样编码才规范截图