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