浏览代码

add duplicate code

Fengda HUANG 9 年之前
父节点
当前提交
fd29009f93
共有 3 个文件被更改,包括 43 次插入13 次删除
  1. 15 4
      chapters/3.2.1-readable.md
  2. 15 4
      growth.md
  3. 13 5
      index.html

+ 15 - 4
chapters/3.2.1-readable.md

@@ -13,7 +13,10 @@
  - 减少复杂函数的出现(如,不超过三十行)
  - 然后,你要去测试它。这样你就知道需要什么,实际上要做到这些也不是一些难事。
 
-只是首先,我们要知道我们要自己需要这些。
+只是首先,我们要知道我们要自己需要这些。对于没有太多编程经验的人,建议先从两个基本点做起:
+
+ - 命名
+ - 函数长度
 
 首先要说的就是程序员认为最难的一个话题了——命名。
 
@@ -64,12 +67,20 @@ public void setNumber(String number) {
 
 > 函数是指一段在一起的、可以做某一件事儿的程序。
 
-这就意味着从定义上来说,这段函数应该只做一件事——但是什么才是真正的一件事呢?实际上还是TASKING,将一个复杂的过程一步步地分解成一个个的函数,每个函数只做他的名称对应的事。
+这就意味着从定义上来说,这段函数应该只做一件事——但是什么才是真正的一件事呢?实际上还是TASKING,将一个复杂的过程一步步地分解成一个个的函数,每个函数只做他的名称对应的事。对于一个任务来说,他有一个稳定的过程,在这个过程中的每一步都可以变成一个函数。
 
 因此,长的代码意味着一件事——这个函数可能违反了单一职责原则,即这个类做了太多的事。通常来说,一个类,只有一个引起它变化的原因。当一个类有多个职责的时候,这些代码就容易耦合到一起了。
 
-对于函数长度的控制是为了有效控制分支深度。如果我们用一个函数来实现一个复杂的功能,那么不仅仅在我们下次阅读的时间会花费大量的时间。而且如果我们的代码没有测试话,那么这些代码就会变得越来越难以理解。
+对于函数长度的控制是为了有效控制分支深度。如果我们用一个函数来实现一个复杂的功能,那么不仅仅在我们下次阅读的时间会花费大量的时间。而且如果我们的代码没有测试话,那么这些代码就会变得越来越难以理解。而在我们写这些函数的时候就没有测试,那么这个函数就会变得越来越难以测试,它们就会变成遗留代码。
+
+###其他
+
+虽然只想介绍上面的简单的两点,但是顺便在这里也提一下重复代码~~。
+
+####重复代码
+
+在《重构》一书中首先提到的Code Smell就是重复代码(Duplicate Code)。重复代码看上去并不会影响我们的阅读体验,但是实际上会发生这样的事——重复的代码阅读体验越不好。
 
-###重复代码
+DRY(Don't Repeat Yourself)原则是特别值得玩味的。当我们不断地偏执的去减少重复代码的时候,会导致复杂度越来越高。在适当的时候,由于业务发生变更,我们还需要去拆解这些不重复的代码。
 
 

+ 15 - 4
growth.md

@@ -2769,7 +2769,10 @@ if (EchoesWorks.isObject(words)) {
  - 减少复杂函数的出现(如,不超过三十行)
  - 然后,你要去测试它。这样你就知道需要什么,实际上要做到这些也不是一些难事。
 
-只是首先,我们要知道我们要自己需要这些。
+只是首先,我们要知道我们要自己需要这些。对于没有太多编程经验的人,建议先从两个基本点做起:
+
+ - 命名
+ - 函数长度
 
 首先要说的就是程序员认为最难的一个话题了——命名。
 
@@ -2820,13 +2823,21 @@ public void setNumber(String number) {
 
 > 函数是指一段在一起的、可以做某一件事儿的程序。
 
-这就意味着从定义上来说,这段函数应该只做一件事——但是什么才是真正的一件事呢?实际上还是TASKING,将一个复杂的过程一步步地分解成一个个的函数,每个函数只做他的名称对应的事。
+这就意味着从定义上来说,这段函数应该只做一件事——但是什么才是真正的一件事呢?实际上还是TASKING,将一个复杂的过程一步步地分解成一个个的函数,每个函数只做他的名称对应的事。对于一个任务来说,他有一个稳定的过程,在这个过程中的每一步都可以变成一个函数。
 
 因此,长的代码意味着一件事——这个函数可能违反了单一职责原则,即这个类做了太多的事。通常来说,一个类,只有一个引起它变化的原因。当一个类有多个职责的时候,这些代码就容易耦合到一起了。
 
-对于函数长度的控制是为了有效控制分支深度。如果我们用一个函数来实现一个复杂的功能,那么不仅仅在我们下次阅读的时间会花费大量的时间。而且如果我们的代码没有测试话,那么这些代码就会变得越来越难以理解。
+对于函数长度的控制是为了有效控制分支深度。如果我们用一个函数来实现一个复杂的功能,那么不仅仅在我们下次阅读的时间会花费大量的时间。而且如果我们的代码没有测试话,那么这些代码就会变得越来越难以理解。而在我们写这些函数的时候就没有测试,那么这个函数就会变得越来越难以测试,它们就会变成遗留代码。
+
+###其他
+
+虽然只想介绍上面的简单的两点,但是顺便在这里也提一下重复代码~~。
+
+####重复代码
+
+在《重构》一书中首先提到的Code Smell就是重复代码(Duplicate Code)。重复代码看上去并不会影响我们的阅读体验,但是实际上会发生这样的事——重复的代码阅读体验越不好。
 
-###重复代码
+DRY(Don't Repeat Yourself)原则是特别值得玩味的。当我们不断地偏执的去减少重复代码的时候,会导致复杂度越来越高。在适当的时候,由于业务发生变更,我们还需要去拆解这些不重复的代码。
 
 
 

+ 13 - 5
index.html

@@ -193,7 +193,7 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
 <li><a href="#可读的代码">可读的代码</a><ul>
 <li><a href="#命名">命名</a></li>
 <li><a href="#函数长度">函数长度</a></li>
-<li><a href="#重复代码">重复代码</a></li>
+<li><a href="#其他-2">其他</a></li>
 </ul></li>
 <li><a href="#代码重构">代码重构</a><ul>
 <li><a href="#重命名">重命名</a></li>
@@ -2231,7 +2231,11 @@ $ git config --global user.email &quot;电子邮箱&quot;</code></pre>
 <li>减少复杂函数的出现(如,不超过三十行)</li>
 <li>然后,你要去测试它。这样你就知道需要什么,实际上要做到这些也不是一些难事。</li>
 </ul>
-<p>只是首先,我们要知道我们要自己需要这些。</p>
+<p>只是首先,我们要知道我们要自己需要这些。对于没有太多编程经验的人,建议先从两个基本点做起:</p>
+<ul>
+<li>命名</li>
+<li>函数长度</li>
+</ul>
 <p>首先要说的就是程序员认为最难的一个话题了——命名。</p>
 <h3 id="命名">命名</h3>
 <p>命名是一个特别长的,也是特别忧伤的故事。我想作为一个程序员的你,也相当恐惧这件事。一个好的函数名、变量名应该包含着这个函数的信息,如这个函数是干什么的,或者这个函数是怎么来的,这个变量名存储的是什么。</p>
@@ -2264,10 +2268,14 @@ public void setNumber(String number) {
 <blockquote>
 <p>函数是指一段在一起的、可以做某一件事儿的程序。</p>
 </blockquote>
-<p>这就意味着从定义上来说,这段函数应该只做一件事——但是什么才是真正的一件事呢?实际上还是TASKING,将一个复杂的过程一步步地分解成一个个的函数,每个函数只做他的名称对应的事。</p>
+<p>这就意味着从定义上来说,这段函数应该只做一件事——但是什么才是真正的一件事呢?实际上还是TASKING,将一个复杂的过程一步步地分解成一个个的函数,每个函数只做他的名称对应的事。对于一个任务来说,他有一个稳定的过程,在这个过程中的每一步都可以变成一个函数。</p>
 <p>因此,长的代码意味着一件事——这个函数可能违反了单一职责原则,即这个类做了太多的事。通常来说,一个类,只有一个引起它变化的原因。当一个类有多个职责的时候,这些代码就容易耦合到一起了。</p>
-<p>对于函数长度的控制是为了有效控制分支深度。如果我们用一个函数来实现一个复杂的功能,那么不仅仅在我们下次阅读的时间会花费大量的时间。而且如果我们的代码没有测试话,那么这些代码就会变得越来越难以理解。</p>
-<h3 id="重复代码">重复代码</h3>
+<p>对于函数长度的控制是为了有效控制分支深度。如果我们用一个函数来实现一个复杂的功能,那么不仅仅在我们下次阅读的时间会花费大量的时间。而且如果我们的代码没有测试话,那么这些代码就会变得越来越难以理解。而在我们写这些函数的时候就没有测试,那么这个函数就会变得越来越难以测试,它们就会变成遗留代码。</p>
+<h3 id="其他-2">其他</h3>
+<p>虽然只想介绍上面的简单的两点,但是顺便在这里也提一下重复代码~~。</p>
+<h4 id="重复代码">重复代码</h4>
+<p>在《重构》一书中首先提到的Code Smell就是重复代码(Duplicate Code)。重复代码看上去并不会影响我们的阅读体验,但是实际上会发生这样的事——重复的代码阅读体验越不好。</p>
+<p>DRY(Don’t Repeat Yourself)原则是特别值得玩味的。当我们不断地偏执的去减少重复代码的时候,会导致复杂度越来越高。在适当的时候,由于业务发生变更,我们还需要去拆解这些不重复的代码。</p>
 <h2 id="代码重构">代码重构</h2>
 <p>什么是重构?</p>
 <blockquote>