热搜关键词: matlab人工智能算法嵌入式雷达电机驱动

pdf

编写可读代码的艺术

  • 1星
  • 2023-11-27
  • 11.01MB
  • 需要1积分
  • 6次下载
标签: 代码

代码

细节决定成败,思路清晰、言简意赅的代码让程序员一目了然;而格式凌乱、拖沓冗长的代码让程序员一头雾水。除了可以正确运行以外,优秀的代码必须具备良好的可读性,编写的代码要使其他人能在最短的时间内理解才行。本书旨在强调代码对人的友好性和可读性。

本书关注编码的细节,总结了很多提高代码可读性的小技巧,看似都微不足道,但是对于整个软件系统的开发而言,它们与宏观的架构决策、设计思想、指导原则同样重要。编码不仅仅只是一种技术,也是一门艺术,编写可读性高的代码尤其如此。如果你要成为一位优秀的程序员,要想开发出高质量的软件系统,必须从细处着手,做到内外兼修,本书将为你提供有效的指导。

主要内容:

■  简化命名、注释和格式的方法,使每行代码都言简意赅。

■  梳理程序中的循环、逻辑和变量来减小复杂度并理清思路。

■  在函数级别解决问题,例如重新组织代码块,使其一次只做一件事。

■  编写有效的测试代码,使其全面而简洁,同时可读性更高。

前言  1

第1章  代码应当易于理解  5

是什么让代码变得“更好”  6

可读性基本定理  7

总是越小越好吗  7

理解代码所需的时间是否与其他目标有冲突  8

最难的部分  8

第一部分  表面层次的改进

第2章  把信息装到名字里  11

选择专业的词  12

避免像tmp和retval这样泛泛的名字  14

用具体的名字代替抽象的名字  17

为名字附带更多信息  19

名字应该有多长  22

利用名字的格式来传递含义  24

总结  25

第3章  不会误解的名字  27

例子:Filter()  28

例子:Clip(text,  length)  28

推荐用first和last来表示包含的范围  29

推荐用begin和end来表示包含/排除范围  30

给布尔值命名  30

与使用者的期望相匹配  31

例子:如何权衡多个备选名字  33

总结  34

第4章  审美  36

为什么审美这么重要  37

重新安排换行来保持一致和紧凑  38

用方法来整理不规则的东西  40

在需要时使用列对齐  41

选一个有意义的顺序,始终一致地使用它  42

把声明按块组织起来  43

把代码分成“段落”  44

个人风格与一致性  45

总结  46

第5章  该写什么样的注释  47

什么不需要注释  49

记录你的思想  52

站在读者的角度  54

最后的思考——克服“作者心理阻滞”  58

总结  59

第6章  写出言简意赅的注释  60

让注释保持紧凑  61

避免使用不明确的代词  61

润色粗糙的句子  62

精确地描述函数的行为  62

用输入/输出例子来说明特别的情况  63

声明代码的意图  64

“具名函数参数”的注释  64

采用信息含量高的词  65

总结  66

第二部分  简化循环和逻辑

第7章  把控制流变得易读  69

条件语句中参数的顺序  70

if/else语句块的顺序  71

?:条件表达式(又名“三目运算符”)  73

避免do/while循环  74

从函数中提前返回  76

臭名昭著的goto  76

最小化嵌套  77

你能理解执行的流程吗  80

总结  81

第8章  拆分超长的表达式  82

用做解释的变量  83

总结变量  83

使用德摩根定理  84

滥用短路逻辑  84

例子:与复杂的逻辑战斗  85

拆分巨大的语句  87

另一个简化表达式的创意方法  88

总结  89

第9章  变量与可读性  91

减少变量  92

缩小变量的作用域  94

只写一次的变量更好  100

最后的例子  101

总结  103

第三部分  重新组织代码

第10章  抽取不相关的子问题  107

介绍性的例子:findClosestLocation()  108

纯工具代码  109

其他多用途代码  110

创建大量通用代码  112

项目专有的功能  112

简化已有接口  113

按需重塑接口  114

过犹不及  115

总结  116

第11章  一次只做一件事  117

任务可以很小  119

从对象中抽取值  120

更大型的例子  124

总结  126

第12章  把想法变成代码  127

清楚地描述逻辑  128

了解函数库是有帮助的  129

把这个方法应用于更大的问题  130

总结  133

第13章  少写代码  135

别费神实现那个功能——你不会需要它  136

质疑和拆分你的需求  136

保持小代码库  138

熟悉你周边的库  139

例子:使用Unix工具而非编写代码  140

总结  141

第四部分  精选话题

第14章  测试与可读性  145

使测试易于阅读和维护  146

这段测试什么地方不对  146

使这个测试更可读  147

让错误消息具有可读性  150

选择好的测试输入  152

为测试函数命名  154

那个测试有什么地方不对  155

对测试较好的开发方式  156

走得太远  158

总结  158

第15章  设计并改进“分钟/小时计数器”  160

问题  161

定义类接口  161

尝试1:一个幼稚的方案  164

尝试2:传送带设计方案  166

尝试3:时间桶设计方案  169

比较三种方案  173

总结  174

附录  深入阅读  175

展开预览

评论

登录/注册

意见反馈

求资源

回顶部

推荐内容

热门活动

热门器件

随便看看

  • 请教一个串口波特率方面的问题
    我最近在使用MSP430串口通信时遇到一个问题我使用2个MSP430相互通信,一个跑16M主频,一个跑1M主频16M主频的发送一条22个字节的数据,1M主频的收到数据反馈一个22字节的数据两个单片机的串口波特率都设置成9600现在他们可以相互通信,电脑也能通过9600的波特率监听他们的通信但是我用示波器测量了一下波形,发现两组数据的长度不一样16M单片机发送的22字节数据用时24ms左右1M单片机
  • XA9500XL:高性能3.3V CPLD汽车电子XA系列
    XA9500XL:高性能3.3V CPLD汽车电子XA系列器件,采用0.35um CMOS工艺,AEC-Q100器件资格,工作温度-40度到85度C和-40度到125度C,系统时钟100MHz(10ns),宏单元36到144,可用门从800到3200个,寄存器从36到144个,最佳工作电压3.3V,5V I/O容差接受5V,3.3V和2.5V信号,具有在系统中编程的功能,优异的引脚锁住和信号路由,
  • ZT:值得你跟随的十种老板
    一、能够在员工需要的时候给员工提供指导,帮助员工发展的老板  老板虽然与下属是上下级关系,但是没有下属的支持和协作,再出色的老板都无法独自让公司正常运作。对企业来说,员工是重要的组成部分,但员工不 能完全等同于“零件”,过于关心业绩增长,而忽略员工的感受以及职业发展的老板,在团队中的威信就会降低,随之而来的怠工及人员流动频繁势必会造成公司人 力成本增加,销售额下降等不良后果。而通过帮助员工的个人发
  • 【外包】升级上网卡miniport驱动NDIS5.1至6.2。 已有源码及文档
    现有一个NDIS5.1的无线上网卡miniport驱动程序,根据微软的要求需要升级到NDIS6.2版本。我们现在手头有的材料包括NDIS5.1源程序,相关文档资料。还需要做的就是根据NDIS6.2的文档进行升级,要求升级后的驱动能够实现相应的功能,并且能够通过微软的徽标测试。时间:1个月左右工作量:参考WDK7.0中的Porting NDIS 5.x Drivers to NDIS 6.0Port
  • MSP430 G2553 Launchpad实现电容测量
    测试代码main.c程序:复制代码1 // C meter 2015.9.262 //3 // P1.5(TA0.0) --[||||]----------- P1.4(CA3)4 //R=10kOhm|5 //-----6 //cap -----7 //|8 //GND9 //[url]http://zlbg.cnblogs.com[/url]10 ///////////////////////
  • 百利通-CDMA短信猫,深圳短信猫,八口短信猫池(400-657-8590)
  • [建议]对下载中心实现初步预览效果的想法
  • You must call ros::init() before creating the first NodeHandle
  • 求助此运放的规格书
  • 全国大学生电子竞赛430竞赛体验

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
×