摘要:打開和項目,編程工作開始。一般我的節(jié)奏是寫個最簡單的測試用例。要點你未必使用同樣的技術(shù)棧,但你仍然可以擁有同樣的編程節(jié)奏感這種的配方是依賴于,并且頻繁。不要試圖一次寫出完備的測試。
超爽感覺
寫程序的時候最爽的感覺可能就是一切順利了:
每段代碼一寫出來就立即可以工作。
自己心里對于新代碼的工作能力極為自信。
不會被 bug 或者一個問題卡住,而是不斷向前進展,即使遇到問題也可以在很短時間搞定
在我們有這些感覺的時候,往往也是生產(chǎn)力最高的時候,而且結(jié)果一般也非常好。反之,我們代碼磕磕絆絆的時候、被一個問題卡住動彈不得的時候、對代碼沒有任何自信的時候,一般實際的結(jié)果也確實糟糕。
盡管我們經(jīng)常會期待學(xué)習(xí)新的技術(shù)會帶來更多這樣的流暢時刻,所以不斷投入精力和時間去學(xué)習(xí)新的技術(shù),但新技術(shù)卻常常帶來更多的麻煩和困惑,看起來并非這種 flow (流狀態(tài)、請參考 flow)的可靠來源。
而糅合了 git、測試驅(qū)動的編程節(jié)奏感往往能帶來這種超爽的感覺!
一段節(jié)奏這是我自己記錄一段的編程節(jié)奏:
已經(jīng)決定特性 auth-svc 的開發(fā),我打開 SourceTree 軟件,按下 git-flow 按鈕,開始一個新的特性分支 auth-svc。
打開 intelliJ IDEA 和項目,編程工作開始。
立即打開一個終端窗口,在里面運行 lein midje :autotest,讓自動測試開始運行。如果項目已經(jīng)處于良好健康狀況,應(yīng)該很快看到 all tests passed 的綠燈。
新建一個測試單元,或者在現(xiàn)成的測試單元中開始寫 midje 測試用例。在 clojure 下和 midje 下,這一般非常容易,每個測試用例一般就 1-2 行代碼。一般我的節(jié)奏是寫 4-5 個最簡單的測試用例。
把測試用例中假設(shè)會實現(xiàn)的函數(shù)制造出一個空實現(xiàn)。
按下 save all files 按鈕,這時 idea 下的終端窗口會出現(xiàn)測試失敗的紅燈。
仔細檢查所有的錯誤都如同預(yù)期,而且所有的測試都會失敗。
將這些失敗的測試 commit 進 git,commit message 一般是“完成測試代碼寫作”。
鑒于我已經(jīng)完成了些東西,我會起身喝口水聊聊天什么的,或者簡單走動下,預(yù)防頸椎病。
重新坐下開始實現(xiàn)真正的代碼,讓測試通過。每次完成一段代碼,存盤后終端上應(yīng)該會告訴我又有一個新的測試用例通過了。因為我的測試很少而且很小——往往僅僅完成一個功能的一個部分:
如果功能還沒實現(xiàn),我不會處理錯誤輸入。(我也還沒寫錯誤檢查用例)
如果這個實現(xiàn)就是在檢查錯誤,我會將為每個要檢查的錯誤寫至少一個測試用例。
全部測試通過后,又可以看到令人心情愉悅的 all tests passed 的綠燈了!
把成功的實現(xiàn) commit 進 git,然后再起身轉(zhuǎn)一圈去。
重復(fù)上面的循環(huán),直到這個特性全部實現(xiàn)。
大大地休息一下。
回來開始補充文檔,順手重構(gòu)一下剛剛完成的代碼。
將新的改動 commit 回 git。
在 sourceTree 里再次按下 git-flow 按鈕結(jié)束這個特性。
要點你未必使用同樣的技術(shù)棧,但你仍然可以擁有同樣的編程節(jié)奏感!這種 flow 的配方是:
依賴于 git,并且頻繁 commit。極大提高安全感。你不會擔(dān)心在代碼里做實驗,畢竟它比 ctrl-z 要可靠得多。我一般每完成5-20行代碼就 commit 一次。(當(dāng)然這是代碼密度極高的 clojure 程序,如果是 Java 估計要 x4 或者 x5 了)
寫小的測試,先寫。這里的測試驅(qū)動目的其實倒不是質(zhì)量,也是提高完成感。相當(dāng)于給自己先設(shè)置了一個小關(guān)卡。
不要試圖一次寫出完備的測試。這樣實現(xiàn)時心理壓力會太大。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/64176.html
摘要:納尼隔壁少林派表示自家金剛技壓群雄在座各位都是。。。納尼你覺得寫太繁瑣了你不喜歡我們還有或者等等一大堆工具呢。納尼沒有你還是覺得無法接受好吧那么筆者推薦類似這類更友好的工具你可以導(dǎo)入導(dǎo)出其他格式也可以使用其來撰寫。 說起微服務(wù), 想必現(xiàn)在的技術(shù)圈內(nèi)人士個個都能談笑風(fēng)云, 娓娓道來。的確, 技術(shù)變革日新月異, 各種工具框架雨后春筍般涌現(xiàn), 現(xiàn)在我們可以輕巧便捷地根據(jù)自己的業(yè)務(wù)需求, 構(gòu)建...
面向?qū)ο缶幊谈拍?如果你以前從未使用過面向?qū)ο蟮木幊陶Z言,那么在開始編寫任何代碼之前,你需要學(xué)習(xí)一些基本概念,本課將向你介紹對象、類、繼承、接口和包,每個討論都關(guān)注這些概念如何與現(xiàn)實世界相關(guān),同時介紹Java編程語言的語法。 什么是對象? 對象是理解面向?qū)ο蠹夹g(shù)的關(guān)鍵,環(huán)顧四周,你會發(fā)現(xiàn)許多現(xiàn)實世界中的東西:你的狗,你的桌子,你的電視機,你的自行車。 真實世界的對象有兩個特征:它們都有狀態(tài)和行為,...
摘要:的前生今世系統(tǒng)系統(tǒng)作為全球第一大系統(tǒng),基于開發(fā)的移動端有著諸多的性能優(yōu)勢。官方提供了豐富的原生接口封裝系統(tǒng)結(jié)構(gòu)圖像處理引擎年圖像處理引擎成立,用來展示火狐和其他自家的產(chǎn)品使用。而語言早已突破階段,正穩(wěn)步邁向階段。 showImg(https://segmentfault.com/img/remote/1460000018724305); Android 的前生今世 Android 系統(tǒng)...
閱讀 1616·2021-11-17 09:33
閱讀 1327·2021-10-11 10:59
閱讀 2969·2021-09-30 09:48
閱讀 1970·2021-09-30 09:47
閱讀 3095·2019-08-30 15:55
閱讀 2395·2019-08-30 15:54
閱讀 1548·2019-08-29 15:25
閱讀 1708·2019-08-29 10:57