今天終於劃掉待辦清單中,歷時 4 ~ 5 個月的待辦項目啦!(中間大概有40個小待辦)
相關網址:https://tdd.best/book/tdd-by-example/
(天瓏可預購)
翻譯還是很花時間,這讓人挺痛苦的。即使我已經這麼熟悉 TDD,這書翻起來還是吃力。(程式碼是最好懂的語言了)
最難翻的是文字很少又語帶雙關的章節標題,其次是 1980 年代的哏,反而對 Kent Beck 自言自語式的描述感到熟悉,因為我自己也很習慣會這樣寫東西。
最後,我最想感謝的,還是 Kent Beck 同意我的提議,允許我把書裡面每一個範例的演進過程,都放到 GitHub public repository 的 commits 裡面,因為看到全貌很重要,看到差異也很重要,只看書是很難透過自己的腦袋記住這些全貌的。
就如 TDD 最有用的地方之一,就是讓你可以專心專注在單一個東西上,心裡既有全局,又可以專注,又可以安全可靠,又可以從任何一個點重新再來。
當時買了 https://tdd.best 的 domain,就是因為接下來翻譯這本書的任務。我對這本書,心裡是感到有點責任的。就像 2017 年翻譯《單元測試的藝術》一樣,我深信這能為台灣軟體業、開發人員帶來本質上的改善。
這是一本 2002 年的老書,Kent Beck 在寫書時就已經用當年的 Python TDD 出 xUnit 的原型。你沒看錯,用 TDD 來測試驅動開發出它自己的 test framework。
我們,還要落後這個世界現代的開發方法多少年呢?
#KentBeck的測試驅動開發
--
感謝博碩出版社買下版權,感謝編輯 Sam 能讓大家在農曆過年前能買到這本經典鉅作來看。(應該來得及)
kentbeck的測試驅動開發 在 Kent Beck的測試驅動開發:案例導向的逐步解決之道 - YouTube 的美食出口停車場
先求有,再求好,後求美 Kent Beck的測試驅動開發 ,帶領你快速突破軟體開發的重重難關! 讓你不再糾結、不再徬徨、不再浪費寶貴的時間! ... <看更多>
kentbeck的測試驅動開發 在 91 敏捷開發之路- 來了來了!《Kent Beck 的測試 ... - Facebook 的美食出口停車場
來了來了!《Kent Beck 的測試驅動開發》到貨啦!! 那一排的書也都是我推薦的,如果你想要developer 職涯能持續保持初心、獲得快樂、成長、享受團隊合作、用正確舒服 ... ... <看更多>
kentbeck的測試驅動開發 在 [心得] RIP TDD(BY Kent Beck) - 看板Soft_Job - 批踢踢實業坊 的美食出口停車場
前言:
本翻譯有翻譯不精準且有自行增添字眼,請邊參考原文對照著看。
https://www.facebook.com/notes/kent-beck/rip-tdd/750840194948847
=============
TDD是一種用測試來進行開發的模式,所以他的本質其實是為了開發而非測試。
Kent Beck(設計模式的先驅者)在RIP TDD裡舉出了8個你應該使用TDD的理由。
1. Over-engineering(過度設計):
EX:
今天你被授命要做一個會員登入的系統,你老闆只要你串facebook登入,結果你多寫了一個google登入。
這樣就過度設計了,程式碼裡不要擺用不到的東西,會造成後面維護上的困擾。
TDD每一個測試都是需求,而你不應該寫需求以外的程式,TDD力求以最簡單的方法讓測試通過。
2. API feedback(介面回饋):
因為TDD會根據使用者的需求寫測試,當你發現 你的介面不敷使用於測試時,就會去修改介面,這會使你的介面越來越貼近使用者。
3. Logic errors(邏輯錯誤):
TDD裡面不會有任何的邏輯(if else)判斷,所以如果出來的結果不符合就是你的method有問題。
而且TDD一次只會有一個測試失敗,所以一定是你剛增加的code有問題。
4. Documentation(文件):
每個工程師都會跟你說他討厭程式沒有文件,但實際上會寫文件的很少,後面會繼續維護的更少了。
TDD的測試即文件,當你看完測試你就會瞭解這隻程式怎用了。
而且如果需求改變,你的測試也會改變,就會很自然地維護它了。
5. Feeling overwhelmed:
標題無關。
TDD的宗旨是先寫測試在開發,意味著即使沒有程式依然可以先寫測試,
6. Separate interface from implementation thinking(從邏輯來實踐獨立介面):
EX:
今天有個需求是串金流API,但是開發API的人說他要等上線前10天才能給你測試。
TDD遇到這種問題時就會做一個介面,測試時實作這個介面,去模擬API的行為。
這樣你就不用因為別人拖延自己的進度。
7. Agreement(同意)
當你把需求解掉了以後,你要如何說服發出需求的人妳已經把問題解決掉了?
顯然用測試是一個好方法。
8. Anxiety(焦慮)
當老闆問你一切是否OK時,TDD可以不用讓你提心吊膽的說OK。
工商廣告時間XD:
https://skilltree.my/events/mbh
十分推薦,我覺得每個程式設計師都應該聽聽TDD,而91的課淺顯易懂,
絕對讓你滿載而歸。
我本身就是學員之一,聽完有如獲重生的感覺。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.163.30.31
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1446442345.A.17D.html
更何況套一句FB流行的話。
你有想過QA測你的程式的心情嗎?沒有,因為你只想到你自己。
沒有測試的情況下,你敢跟QA保証說沒有任何錯誤嗎?
※ 編輯: y2468101216 (118.163.30.31), 11/02/2015 13:57:41
我打算有空就翻譯這樣。
※ 編輯: y2468101216 (118.163.30.31), 11/02/2015 14:36:10
再強調一遍TDD是開發模式,只是他利用測試作為開發工具,一魚兩吃。
phpunit好用很多。facebook/webdriver的文件寫的就是比nightwatch.js爛。
我最近應該會fork facebook/webdriver的example,2年前的範例到現在都不能用了= =。
※ 編輯: y2468101216 (118.163.30.31), 11/03/2015 09:22:10
... <看更多>