- 1、本文档共137页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
易读程序之美学(一)~(五)
第一章 程序代码应该易于理解
程序代码应该易于理解
重要概念
Node* node = list-head;
if (node == NULL) return;
while (node-next != NULL) {
Print(node-data);
node = node-next;
}
「易于」的意义?
for (Node * node = list-head; node != NULL; node = node-next)
Print(node-data);
改良版
return exponenet = 0? mantissa * ( 1 exponent) : mantissa / (1 -exponent);
另一个例子
if (exponet = 0) {
return mantissa * ( 1 exponent);
} else {
return mantissa / (1 -exponent);
}
有比较好吗?
第一种写法比较简洁。
第二种写法比较容易了解。
结论
撰写程序时应该将读者理解所需的时间降到最短。
可读性基本定理
assert((!(bucket = FindBucket(key))) || !bucket-IsOccupied());
比较短的程序都比较好吗?
bucket = FindBucket(key);
if (bucket != NULL) assert(!bucket-IsOccupied());
这样写是不是容易理解
// hash = (65599 * hash) + c 快速版
hash = (hash 6) + (hash 16) - hash + c;
增加批注也不错
程序效率
良好的架构
可测试性
最短理解时间是否与其他目标冲突?
需要额外的功夫
需要将大脑切换到撰写时没有用到的部分
如果以此为目标:
更好的程序设计师
较少的bug
对成品更有认同感
别人乐于使用
困难所在
我们就开始吧!
第一部份 表层改善
第二章 富含信息的名称
让名称包含信息(名称可视为简短的批注)
重要概念
选择词汇
避免通用性的名称(或知道何时该使用通用名称)
优先使用具体名称而非抽象名称
利用前缀或字尾加入额外信息
决定名称该有的长度
利用格式加入更多的信息
本章主题
范例一
def GetPage(url):
...
选择词汇
这样会不会比较好?
def FetchPage(url):
...
def DownloadPage(url):
...
选择词汇
范例二:Binary Tree
class BinaryTree {
int Size();
...
}
选择词汇
这样会不会比较好?
Size() Height()
NumNodes()
MemoryBytes()
选择词汇
范例三:Thread 类别
class Thread {
int Stop();
...
}
选择词汇
这样会不会比较好?
Size() Kill()『Thread无法复原』
Pause()『 Thread可复原』
(与Resume()搭配)
选择词汇
字汇
可替代的字汇
send
deliver, dispatch, announce, distribute, route
find
search, extract, locate, recover
start
launch, create, begin, open
make
create, setup , build, generate, compose, add, new
请用「鲜明」的字汇
在PHP语言中,explode()与split()有何不同?
不要走火入魔
此Function 是用来处理字符串分割的
用法如下
$output_string = explode( , $input_string);
//explode 会跟据 内的字符对字符串进行分割的动作
并把结果输出到output_string 这个变数中(Array)
要取得结果就用 $output_string[0] 就可以捉到第一个分割的 结果.
PHP:Explode用法
此Function 是用来处理字符串分割的
用法如下
$output_string = split(“[/.-
文档评论(0)