剛接觸tdd的時候我想大家肯定也和我一樣迷茫,到底花費那麼多時間寫測試有沒有必要,尤其是前端開發同學,很多公司不要求你寫測試,所以大環境下前端程式設計師基本不會寫測試。我先列舉自動化測試的優點:
我們的編輯器測試覆蓋率達到87%,覆蓋了所有編輯器與引擎互動的業務邏輯**,在我們專案迭代過程中,我也越來越感受到自動化測試的重要性。此外,測試驅動開發還有乙個優勢就是,我們在進行需求設計的時候,以先寫測試的形式進行開發,在這個開發過程中,我們從使用者角度分析這個需求,進而可以幫助我們完善自己的**設計,在程式設計過程中,又有測試保證**的正確性。
所以在編寫3d引擎或者web富應用(如釘釘,工具類**)的時候,我覺得公司有必要考慮進行自動化測試,不然專案發展起來可能會出現無法迭代的後果。何為契約式設計?
契約式設計(dbc)是一種設計計算機軟體的方法。這種方法描述了,軟體設計者應該為軟體元件定義正式的、準確的、可驗證的介面規範,它擴充套件了抽象資料型別對於先驗條件、後驗條件和不變性的一般定義。這些規範稱為「契約」,它是乙個比喻,類似於商業契約/合同的條件和職責。
我們內部開發的時候,每次完成乙個功能,都會進行**檢查,jack也會根據自己以往的經驗進行重構,在重構過程中我也掌握到契約式設計的好處和必要性。由於我們使用的函式式程式設計正規化,函式是基本單位,所以放大了契約式設計的優勢,所以我們為很多特定函式寫契約,使用先驗條件和後驗條件來保證函式的健壯性。
先驗條件: 保證api的輸入是我們期望的輸入,比如我們設計乙個陣列操作api,那我們需要保證引數為乙個陣列,這時候我們寫先驗條件,保證引數型別為陣列,再進行操作,如果不是則丟擲錯誤。
後驗條件: 保證api的輸出是我們期望的輸出,比如某個特定api,需要輸出資料不為空,這時候我們寫後驗條件,期望他的返回值不為空。團隊內部規範定義是乙個重要的事情,能保證乙個團隊的產出就像乙個人完成的一樣,也使得團隊成員之間能夠無縫銜接完成工作,也不必擔心成員變動等問題。下面我介紹一下我們團隊的規範。
1.git提交規範
我們使用cz-customizable庫以及規範的cz提交規範
2.**規範
**規範主要使用專案負責人的程式設計規範,或者使用成熟團隊的程式設計規範,執行主要使用**審核的方式把新人的程式設計習慣規範下來,每次功能完成以後都花時間進行**審核尤為重要,第一保證新人的工作質量,第二保證新人的程式設計規範。我一直是相信人是會犯錯的,但機器不會,所以我們需要把團隊經常重複手動執行的工作交給機器來做,大公司是專門有內部工具團隊來做這個事情,我們兩個人的話當然也是我們自己寫的自動化工具。
以前在看程式設計師分級的文章裡提到一句話,拋開工具的使用,程式設計師與程式設計師之間的差距並不是很大,而對新工具的使用,能培養程式設計師一套新的思維方式,進而促使他們更新自己的思維。
1.vim操作命令
在我認識jack的時候,當時還沒一起合作,jack在後期給我的指導是學習vim和typescript,而我在三個月的vim學習過程中放棄過無數次,但第二天又再次撿起來,終於能夠形成肌肉記憶,從此感受到vim給我帶來的程式設計快感,而我也從一直手動重複做事情,高階到使用工具快速完成的思維,以前寫**使用鍵盤搭配滑鼠,移動游標慢,導致程式設計速度慢。在使用vim以後純鍵盤操作,在程式設計時經常感受到自己很厲害,常常自我陶醉,這也是程式設計的樂趣之一。
2.emacs
網上經常有人討論vim和emacs孰好孰壞的問題,我使用emacs主要使用emacs-org進行todo管理,依然使用的vim操作命令,還需要學習emacs的基礎命令,在記錄筆記和todo的時候,真心感覺好用。
3.chrome外掛程式
因為我們編輯器主要執行在chrome上,所以使用好的chrome外掛程式可以幫助我們在瀏覽器上進行操作。
我覺得最好的是vimium外掛程式,在瀏覽器上使用vim命令,進行操作,大多數時候都不需要滑鼠就能流暢使用瀏覽器。
還有其他的都是私人外掛程式,根據個人喜好進行選擇,在這我就不多介紹了。
4.自動化部署
把本地專案推送到遠端伺服器時,寫工具實現自動化專案部署,把專案發布能夠保證正確和簡便。
5.ci測試檢查
專案發布新版本,推送到遠端伺服器,先自動執行測試ci檢查,保證所有測試通過再提交。
6.自動化發布
專案發布新版本,自動化更新版本號,執行發布流程。
前端工程化
為什麼出現了前端工程化?09年之前,我們學習的css,div,js只是對頁面設計進行乙個打輔助的功能,當時只能勉強的成為頁面設計師,為什麼會出現前端工程師 1.突然間前端的需求逐漸增多,使用者對介面的要求越來越高,前端範疇越來越大。2.前後端總是保持一致才能進行開發,不能分開開發,提出前端工程化,也...
前端工程化
一 什麼是前端工程化 根據業務特點,將前端開發流程規範化 標準化 包括開發流程 技術選型,規範,構建發布等用於提公升前端工程師開發效率和 質量,提高產品的質量。實現前端工程化的目的 就是通過流程規範 自動化工具來提公升前端的開發效率 效能 質量 多人協作能力以及開發體驗。前端工程化體系分為 元件化 ...
前端工程化
老大考慮到團隊成員學習的曲線,最終選擇thunk 為了更方便團隊人員使用,封裝直接的thunk,和cobinereducer 1 專案分為四大塊,服務治理,資源治理,診斷除錯,分析管理 幾十個元件,不可能將所有的狀態解除安裝乙個reducer裡面來管理 不利於維護 然後因為封裝了元件thunk所以要...