国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

完美的編程節奏

nanfeiyan / 3123人閱讀

摘要:打開和項目,編程工作開始。一般我的節奏是寫個最簡單的測試用例。要點你未必使用同樣的技術棧,但你仍然可以擁有同樣的編程節奏感這種的配方是依賴于,并且頻繁。不要試圖一次寫出完備的測試。

超爽感覺

寫程序的時候最爽的感覺可能就是一切順利了:

每段代碼一寫出來就立即可以工作。

自己心里對于新代碼的工作能力極為自信。

不會被 bug 或者一個問題卡住,而是不斷向前進展,即使遇到問題也可以在很短時間搞定

在我們有這些感覺的時候,往往也是生產力最高的時候,而且結果一般也非常好。反之,我們代碼磕磕絆絆的時候、被一個問題卡住動彈不得的時候、對代碼沒有任何自信的時候,一般實際的結果也確實糟糕。

盡管我們經常會期待學習新的技術會帶來更多這樣的流暢時刻,所以不斷投入精力和時間去學習新的技術,但新技術卻常常帶來更多的麻煩和困惑,看起來并非這種 flow (流狀態、請參考 flow)的可靠來源。

而糅合了 git、測試驅動的編程節奏感往往能帶來這種超爽的感覺!

一段節奏

這是我自己記錄一段的編程節奏:

已經決定特性 auth-svc 的開發,我打開 SourceTree 軟件,按下 git-flow 按鈕,開始一個新的特性分支 auth-svc。

打開 intelliJ IDEA 和項目,編程工作開始。

立即打開一個終端窗口,在里面運行 lein midje :autotest,讓自動測試開始運行。如果項目已經處于良好健康狀況,應該很快看到 all tests passed 的綠燈。

新建一個測試單元,或者在現成的測試單元中開始寫 midje 測試用例。在 clojure 下和 midje 下,這一般非常容易,每個測試用例一般就 1-2 行代碼。一般我的節奏是寫 4-5 個最簡單的測試用例。

把測試用例中假設會實現的函數制造出一個空實現。

按下 save all files 按鈕,這時 idea 下的終端窗口會出現測試失敗的紅燈。

仔細檢查所有的錯誤都如同預期,而且所有的測試都會失敗。

將這些失敗的測試 commit 進 git,commit message 一般是“完成測試代碼寫作”。

鑒于我已經完成了些東西,我會起身喝口水聊聊天什么的,或者簡單走動下,預防頸椎病。

重新坐下開始實現真正的代碼,讓測試通過。每次完成一段代碼,存盤后終端上應該會告訴我又有一個新的測試用例通過了。因為我的測試很少而且很小——往往僅僅完成一個功能的一個部分:

如果功能還沒實現,我不會處理錯誤輸入。(我也還沒寫錯誤檢查用例)

如果這個實現就是在檢查錯誤,我會將為每個要檢查的錯誤寫至少一個測試用例。

全部測試通過后,又可以看到令人心情愉悅的 all tests passed 的綠燈了!

把成功的實現 commit 進 git,然后再起身轉一圈去。

重復上面的循環,直到這個特性全部實現。

大大地休息一下。

回來開始補充文檔,順手重構一下剛剛完成的代碼。

將新的改動 commit 回 git。

在 sourceTree 里再次按下 git-flow 按鈕結束這個特性。

要點

你未必使用同樣的技術棧,但你仍然可以擁有同樣的編程節奏感!這種 flow 的配方是:

依賴于 git,并且頻繁 commit。極大提高安全感。你不會擔心在代碼里做實驗,畢竟它比 ctrl-z 要可靠得多。我一般每完成5-20行代碼就 commit 一次。(當然這是代碼密度極高的 clojure 程序,如果是 Java 估計要 x4 或者 x5 了)

寫小的測試,先寫。這里的測試驅動目的其實倒不是質量,也是提高完成感。相當于給自己先設置了一個小關卡。

不要試圖一次寫出完備的測試。這樣實現時心理壓力會太大。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/64176.html

相關文章

  • 微服務橫行今天, 你文檔跟上節奏了么?

    摘要:納尼隔壁少林派表示自家金剛技壓群雄在座各位都是。。。納尼你覺得寫太繁瑣了你不喜歡我們還有或者等等一大堆工具呢。納尼沒有你還是覺得無法接受好吧那么筆者推薦類似這類更友好的工具你可以導入導出其他格式也可以使用其來撰寫。 說起微服務, 想必現在的技術圈內人士個個都能談笑風云, 娓娓道來。的確, 技術變革日新月異, 各種工具框架雨后春筍般涌現, 現在我們可以輕巧便捷地根據自己的業務需求, 構建...

    liaoyg8023 評論0 收藏0
  • Java? 教程(面向對象編程概念)

    面向對象編程概念 如果你以前從未使用過面向對象的編程語言,那么在開始編寫任何代碼之前,你需要學習一些基本概念,本課將向你介紹對象、類、繼承、接口和包,每個討論都關注這些概念如何與現實世界相關,同時介紹Java編程語言的語法。 什么是對象? 對象是理解面向對象技術的關鍵,環顧四周,你會發現許多現實世界中的東西:你的狗,你的桌子,你的電視機,你的自行車。 真實世界的對象有兩個特征:它們都有狀態和行為,...

    FuisonDesign 評論0 收藏0
  • Google 以 Flutter 作為原生突破口,移動端即將統一了

    摘要:的前生今世系統系統作為全球第一大系統,基于開發的移動端有著諸多的性能優勢。官方提供了豐富的原生接口封裝系統結構圖像處理引擎年圖像處理引擎成立,用來展示火狐和其他自家的產品使用。而語言早已突破階段,正穩步邁向階段。 showImg(https://segmentfault.com/img/remote/1460000018724305); Android 的前生今世 Android 系統...

    skinner 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<