摘要:1. 使测试易于阅读和维护 测试代码的可读性和被测试代码同样重要。很多程序员会把测试代码看做非正式文档,它记录了代码如何工作及如何使用。 当测试代码多得让人望而却步,程序员不敢修改真实代码,不会再增加新的测试。从而对测试代码丧失信心。 2. 有问题的测试代码示例,后面要一一对它们进行修改。 1 vo
阅读全文
随笔分类 - 代码可读性
摘要:1. 使测试易于阅读和维护 测试代码的可读性和被测试代码同样重要。很多程序员会把测试代码看做非正式文档,它记录了代码如何工作及如何使用。 当测试代码多得让人望而却步,程序员不敢修改真实代码,不会再增加新的测试。从而对测试代码丧失信心。 2. 有问题的测试代码示例,后面要一一对它们进行修改。 1 vo
阅读全文
摘要:最好读的代码就是没有代码 1. 别费神实现那个功能--你不会需要它 程序员倾向于高估有多少功能对项目来讲是必不可少的。 程序员还倾向于低估实现一个功能所要花费的功夫。 2. 质疑和拆分你的需求 不是所有的程序都要求运行得快,100%准确,并且能处理所有的输入。 如果把需求削减成一个简单的问题,那么也
阅读全文
摘要:代码应当用“自然语言”编写 1. 清楚地描述逻辑 1 $is_admin = is_admin_request(); 2 if ($document) { 3 if (!$is_admin && ($document['username'] != $_SESSION['username'])) {
阅读全文
摘要:应该把代码组织得一次只做一件事,任务可以很小 vote_changed(old_vote, new_vote); // each vote is "Up", "Down", or "" var vote_changed = function (old_vote, new_vote) { var sc
阅读全文
摘要:所谓工程学就是把大问题拆成小问题,再把这些问题的解决方案放回一起。把这条原则应用于代码会使代码更健壮且更易读。 本章建议是:积极发现并抽取出不相关的子逻辑。 1. 纯工具代码 1 //C++中没有一个库函数读取整个文件,所以不可避免地要写以下的代码: 2 ifstream file(file_nam
阅读全文
摘要:变量的草率运用会让代码更难理解 1. 减少变量 1)没有价值的临时变量 1 now = datetime.datetime.now() 2 root_message.last_view_time = now 3 4 #上面的 now 没有拆分复杂的表达式;没有更多的澄清;只用了一次。因此是冗余的。
阅读全文
摘要:代码中的表达式越长,它就越难理解。本章看看各种操作和拆分代码以使它们更容易理解的方法。 1. 用做解释的变量 if line.split(':')[0].strip() == "root": -- username 为解释变量 username = line.split(':')[0].strip(
阅读全文
摘要:1. 条件语句中参数的顺序 左边更倾向于使用变化的,右边更倾向于使用稳定的。 1 if (length >= 10) 2 // or 3 if (10 <= length) 4 5 while (bytes_received < bytes_expected) 6 //or 7 while (byt
阅读全文
摘要:1. 让注释保持紧凑 1 //反面示例 2 // The int is the CategoryType. 3 // The first float in the inner pair is the 'score', 4 // the second is the 'weight'. 5 typede
阅读全文
摘要:1. 什么样的注释是不需要的 下面的例子中的全部注释没有提供任何新的信息,所以没有价值。 不要为能从代码中快速推断的事实写注释。 1 // The class definition for Account 2 class Account { 3 public: 4 // Constructor 5
阅读全文
摘要:1. 为什么审美这么重要? 让人愉悦的代码更易读,因此更容易使用。 2. 重新安排换行来保持一致和紧凑 下面的代码有着优雅一致的风格,并且很容易从头看到尾快速浏览。 但是缺憾在于用了更多的纵向空间,并且注释重复了三遍。 1 public class PerformanceTester { 2 pub
阅读全文
摘要:1. Filter(condition) "filter"是个二义性单词,应避免使用。因为不清楚是应该满足condition,还是应该不满足condition,容易引起误解。 2. Clip(text, length) Clip(text, length) //易产生歧义,不知道是保留前半部分还是后
阅读全文
摘要:1.选择专业的词 GetPage(url) 应改为 FetchPage(url) or DownloadPage(url) BinaryTree::Size() 应改为 BinaryTree::Height() , BinaryTree::NumNodes() , or BinaryTree::Me
阅读全文
摘要:此随笔由《编写可读代码的艺术》中抽取的主要思想及示例代码集合而成。
阅读全文
|