|
@@ -168,11 +168,11 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
|
|
|
<li><a href="#版本控制">版本控制</a></li>
|
|
|
<li><a href="#git">Git</a></li>
|
|
|
</ul></li>
|
|
|
-<li><a href="#写代码只是在码字">写代码只是在码字</a></li>
|
|
|
<li><a href="#tasking">Tasking</a><ul>
|
|
|
<li><a href="#如何tasking一本书">如何Tasking一本书</a></li>
|
|
|
<li><a href="#tasking文章">Tasking文章</a></li>
|
|
|
</ul></li>
|
|
|
+<li><a href="#写代码只是在码字">写代码只是在码字</a></li>
|
|
|
<li><a href="#如何编写测试">如何编写测试</a><ul>
|
|
|
<li><a href="#测试金字塔">测试金字塔</a></li>
|
|
|
<li><a href="#测试用例">测试用例</a></li>
|
|
@@ -207,6 +207,7 @@ code > span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Inf
|
|
|
<li><a href="#内联函数-1">内联函数</a></li>
|
|
|
<li><a href="#查询取代临时变量">查询取代临时变量</a></li>
|
|
|
</ul></li>
|
|
|
+<li><a href="#重构到设计模式">重构到设计模式</a></li>
|
|
|
</ul></li>
|
|
|
<li><a href="#上线">上线</a><ul>
|
|
|
<li><a href="#容器">容器</a><ul>
|
|
@@ -1902,45 +1903,6 @@ $ git config --global user.email "电子邮箱"</code></pre>
|
|
|
<img src="chapters/images/after-add.png" alt="After add" /><figcaption>After add</figcaption>
|
|
|
</figure>
|
|
|
<p>可以看到状态的变化是从黄色到绿色,即unstage到add。</p>
|
|
|
-<h2 id="写代码只是在码字">写代码只是在码字</h2>
|
|
|
-<p>编程这件事情实际上一点儿也不难,当我们只是在使用一个工具创造一些东西的时候,比如我们拿着电烙铁、芯片、电线等去焊一个电路板的时候,我们学的是如何运用这些工具。虽然最后我们的电路板可以实现相同的功能,但是我们可以一眼看到差距所在。</p>
|
|
|
-<p>换个贴切一点的比喻,比如烧菜做饭,对于一个优秀的厨师和一个像我这样的门外汉而言,就算给我们相同的食材、厨具,一段时间后也许一份是诱人的美食,一份只能喂猪了——即使我模仿着厨师的步骤一步步地来,也许看上去会差不多,但是一吃便吃出差距了。</p>
|
|
|
-<p>我们还做不好饭,还焊不好电路,还写不好代码,很大程度上并不是因为我们比别人笨,而只是别人比我们做了更多。有时候一种机缘巧遇的学习或者bug的出现,对于不同的人的编程人生都会有不一样的影响(ps:说的好像是蝴蝶效应)。我们只是在使用工具,使用的好与坏,在某种程序上决定了我们写出来的质量。</p>
|
|
|
-<p>写字便是如此,给我们同样的纸和笔(ps:减少无关因素),不同的人写出来的字的差距很大,写得好的相比于写得不好的 ,只是因为练习得更多。而编程难道不也是如此么,最后写代码这件事就和写字一样简单了。</p>
|
|
|
-<p>刚开始写字的时候,我们需要去了解一个字的笔划顺序、字体结构,而这些因素相当于语法及其结构。熟悉了之后,写代码也和写字一样是简简单单的事。</p>
|
|
|
-<h4 id="学习编程只是在学造句">学习编程只是在学造句</h4>
|
|
|
-<blockquote>
|
|
|
-<p>?多么无聊的一个标题</p>
|
|
|
-</blockquote>
|
|
|
-<p><code>计算机语言同人类语言一样</code>,有时候我们也许会感慨一些计算机语言是多么地背离我们的世界,但是他们才是真正的计算机语言。</p>
|
|
|
-<p>计算机语言是模仿人类的语言,从 if 到其他,而这些计算机语言又比人类语言简单。故而一开始学习语言的时候我们只是在学习造句,用一句话来概括一句代码的意思,或者可以称之为函数、方法(method)。</p>
|
|
|
-<p>于是我们开始组词造句,以便最后能拼凑出一整篇文章。</p>
|
|
|
-<h4 id="编程是在写作">编程是在写作</h4>
|
|
|
-<blockquote>
|
|
|
-<p>?编程是在写作,这是一个怎样的玩笑?这是在讽刺那些写不好代码,又写不好文章的么</p>
|
|
|
-</blockquote>
|
|
|
-<p>代码如诗,又或者代码如散文。总的来说,这是相对于英语而言,对于中文而言可不是如此。<strong>如果用一种所谓的中文语言写出来的代码,不能像中文诗一样,那么它就算不上是一种真正的中文语言。</strong></p>
|
|
|
-<p>那些所谓的写作逻辑对编程的影响</p>
|
|
|
-<ul>
|
|
|
-<li>早期的代码是以行数算的,文章是以字数算的</li>
|
|
|
-<li>代码是写给人看的,文章也是写给人看的</li>
|
|
|
-<li>编程同写作一样,都由想法开始</li>
|
|
|
-<li>代码同文章一样都可以堆砌出来(ps:如本文)</li>
|
|
|
-<li>写出好的文章不容易,需要反复琢磨,写出好的代码不也是如此么</li>
|
|
|
-<li>构造一个类,好比是构造一个人物的性格特点,多一点不行,少一点又不全</li>
|
|
|
-<li>代码生成,和生成诗一样,没有情感,过于机械化</li>
|
|
|
-<li>。。。</li>
|
|
|
-</ul>
|
|
|
-<p>然而好的作家和一般的写作者,区别总是很大,对同一个问题的思考程度也是不同的。从一个作者到一个作家的过程,是一个不断写作不断积累的过程。而从一个普通的程序员到一个优秀的程序员也是如此,需要一个不断编程的过程。</p>
|
|
|
-<p>当我们开始真正去编程的时候,我们还会纠结于“<strong>僧推月下门</strong>”还是“<strong>僧敲月下门</strong>”的时候,当我们越来越熟练就容易决定究竟用哪一个。而这样的“推敲”,无论在写作中还是在编程中都是相似的过程。</p>
|
|
|
-<blockquote>
|
|
|
-<p>写作的过程真的就是一次探索之旅,而且它会贯穿人的一生。</p>
|
|
|
-</blockquote>
|
|
|
-<p>因此:</p>
|
|
|
-<blockquote>
|
|
|
-<p>编程只是在码字,难道不是么?</p>
|
|
|
-</blockquote>
|
|
|
-<p>真正的想法都在脑子里,而不在纸上,或者IDE里。</p>
|
|
|
<h2 id="tasking">Tasking</h2>
|
|
|
<p>初到ThoughtWorks时,Pair时候总会有人教我如何开始编码,这应该也是一项基础的能力。结合日常,重新演绎一下这个过程:</p>
|
|
|
<ol type="1">
|
|
@@ -1982,6 +1944,45 @@ $ git config --global user.email "电子邮箱"</code></pre>
|
|
|
<p>而与一般的Tasking不同的是,写书的 Tasking需要从大到小的一步步的Tasking。</p>
|
|
|
<h4 id="章节规划">章节规划</h4>
|
|
|
<h3 id="tasking文章">Tasking文章</h3>
|
|
|
+<h2 id="写代码只是在码字">写代码只是在码字</h2>
|
|
|
+<p>编程这件事情实际上一点儿也不难,当我们只是在使用一个工具创造一些东西的时候,比如我们拿着电烙铁、芯片、电线等去焊一个电路板的时候,我们学的是如何运用这些工具。虽然最后我们的电路板可以实现相同的功能,但是我们可以一眼看到差距所在。</p>
|
|
|
+<p>换个贴切一点的比喻,比如烧菜做饭,对于一个优秀的厨师和一个像我这样的门外汉而言,就算给我们相同的食材、厨具,一段时间后也许一份是诱人的美食,一份只能喂猪了——即使我模仿着厨师的步骤一步步地来,也许看上去会差不多,但是一吃便吃出差距了。</p>
|
|
|
+<p>我们还做不好饭,还焊不好电路,还写不好代码,很大程度上并不是因为我们比别人笨,而只是别人比我们做了更多。有时候一种机缘巧遇的学习或者bug的出现,对于不同的人的编程人生都会有不一样的影响(ps:说的好像是蝴蝶效应)。我们只是在使用工具,使用的好与坏,在某种程序上决定了我们写出来的质量。</p>
|
|
|
+<p>写字便是如此,给我们同样的纸和笔(ps:减少无关因素),不同的人写出来的字的差距很大,写得好的相比于写得不好的 ,只是因为练习得更多。而编程难道不也是如此么,最后写代码这件事就和写字一样简单了。</p>
|
|
|
+<p>刚开始写字的时候,我们需要去了解一个字的笔划顺序、字体结构,而这些因素相当于语法及其结构。熟悉了之后,写代码也和写字一样是简简单单的事。</p>
|
|
|
+<h4 id="学习编程只是在学造句">学习编程只是在学造句</h4>
|
|
|
+<blockquote>
|
|
|
+<p>?多么无聊的一个标题</p>
|
|
|
+</blockquote>
|
|
|
+<p><code>计算机语言同人类语言一样</code>,有时候我们也许会感慨一些计算机语言是多么地背离我们的世界,但是他们才是真正的计算机语言。</p>
|
|
|
+<p>计算机语言是模仿人类的语言,从 if 到其他,而这些计算机语言又比人类语言简单。故而一开始学习语言的时候我们只是在学习造句,用一句话来概括一句代码的意思,或者可以称之为函数、方法(method)。</p>
|
|
|
+<p>于是我们开始组词造句,以便最后能拼凑出一整篇文章。</p>
|
|
|
+<h4 id="编程是在写作">编程是在写作</h4>
|
|
|
+<blockquote>
|
|
|
+<p>?编程是在写作,这是一个怎样的玩笑?这是在讽刺那些写不好代码,又写不好文章的么</p>
|
|
|
+</blockquote>
|
|
|
+<p>代码如诗,又或者代码如散文。总的来说,这是相对于英语而言,对于中文而言可不是如此。<strong>如果用一种所谓的中文语言写出来的代码,不能像中文诗一样,那么它就算不上是一种真正的中文语言。</strong></p>
|
|
|
+<p>那些所谓的写作逻辑对编程的影响</p>
|
|
|
+<ul>
|
|
|
+<li>早期的代码是以行数算的,文章是以字数算的</li>
|
|
|
+<li>代码是写给人看的,文章也是写给人看的</li>
|
|
|
+<li>编程同写作一样,都由想法开始</li>
|
|
|
+<li>代码同文章一样都可以堆砌出来(ps:如本文)</li>
|
|
|
+<li>写出好的文章不容易,需要反复琢磨,写出好的代码不也是如此么</li>
|
|
|
+<li>构造一个类,好比是构造一个人物的性格特点,多一点不行,少一点又不全</li>
|
|
|
+<li>代码生成,和生成诗一样,没有情感,过于机械化</li>
|
|
|
+<li>。。。</li>
|
|
|
+</ul>
|
|
|
+<p>然而好的作家和一般的写作者,区别总是很大,对同一个问题的思考程度也是不同的。从一个作者到一个作家的过程,是一个不断写作不断积累的过程。而从一个普通的程序员到一个优秀的程序员也是如此,需要一个不断编程的过程。</p>
|
|
|
+<p>当我们开始真正去编程的时候,我们还会纠结于“<strong>僧推月下门</strong>”还是“<strong>僧敲月下门</strong>”的时候,当我们越来越熟练就容易决定究竟用哪一个。而这样的“推敲”,无论在写作中还是在编程中都是相似的过程。</p>
|
|
|
+<blockquote>
|
|
|
+<p>写作的过程真的就是一次探索之旅,而且它会贯穿人的一生。</p>
|
|
|
+</blockquote>
|
|
|
+<p>因此:</p>
|
|
|
+<blockquote>
|
|
|
+<p>编程只是在码字,难道不是么?</p>
|
|
|
+</blockquote>
|
|
|
+<p>真正的想法都在脑子里,而不在纸上,或者IDE里。</p>
|
|
|
<h2 id="如何编写测试">如何编写测试</h2>
|
|
|
<p>写测试相比于写代码来说算是一种简单的事。多数时候,我们并不需要考虑复杂的逻辑。我们只需要按照我们的代码逻辑,对代码的行为进行覆盖。</p>
|
|
|
<p>需要注意的是——在不同的团队、工作流里,测试可能是会有不同的工作流程:</p>
|
|
@@ -2317,6 +2318,7 @@ System.<span class="fu">out</span>.<span class="fu">println</span>(<span class="
|
|
|
}
|
|
|
|
|
|
}</code></pre></div>
|
|
|
+<h2 id="重构到设计模式">重构到设计模式</h2>
|
|
|
<h1 id="上线">上线</h1>
|
|
|
<p>作为一个开发人员,我们也需要去了解如何配置服务器。不仅仅因为它可以帮助我们更好地理解Web开发,而且有时候很多Bug都是因为服务器环境引起的——如臭名昭著地编码问题。</p>
|
|
|
<ul>
|