程式設計師的高產之路

程式碼生成技術研究發表於2020-05-21

版權說明:原創文章轉載請註明來源:程式設計師的高產之路 juejin.im/post/5ec61f…

        研發,一個高智商的技術工種,這個行業,擁有的開發大軍,已經非常多了,尤其在疫情這樣的背景下,作為一個程式設計師或者一個團隊,應該優化自己的技能,提高質量,提高速度.研發的高產,應該保證以下幾點,才有意義:

  • 高質量
  • 方便維護
  • 方便擴充套件
  • 開發速度快

高質量

        作為一個開發者,我做了自己的開發框架,慢慢建立獨立的思維方式,有我自己的風格,隨著時間的推移,不停的優化,我的框架,質會越來越高,隨著不停在實際專案中驗證,基礎框架的bug越來越少.我是從以下幾個方面來做的:

  • 儘量將常用的功能,封裝成常用的庫,並且不停的優化
  • 儘量前後端保持一致的開發風格
  • 核心部分,儘量通過介面程式設計,保持一致的介面
  • 框架分層明確,每次寫程式碼,都想清楚,我的這部分程式碼放在那一層,更合理

方便維護

        在長期的專案維護中,專案分層合理,保持一致的介面,這兩個是很重要的

  • 分層合理,每次遇到問題可以在最短的時間之內定位錯誤位置,迅速找到錯誤程式碼,並修復
  • 封裝錯誤庫,記錄錯誤鏈,這樣可以通過日誌來定位錯誤
  • 介面一致,可以讓我們減少很多跟蹤程式碼執行流程,查詢錯誤的時間

方便擴充套件

提前思考整體設計

        這是開發中經常遇到的問題,每次客戶說,我需要增加一個XXX功能,這時候如果你的底層設計不夠靈活,往往你就需要改動其他程式碼了,保持一個整體的思考方法,站在客戶的角度,提前思考使用者可能的變化,這樣我們在設計程式碼的時候,就可以規避很多問題,往往客戶提出修改時,你只要說:這個沒問題,我們之前已經考慮過了.瞬間,客戶對你的信任值又提升了幾個百分點.

介面規範

        在有些專案中,為了方便擴充套件,我們也會採用介面規範,比如說支付,當前使用者只會要求微信支付,可是一段時間之後,突然告訴你,我們現在為了使用者方便,必須要接入支付寶,更有甚者,我們要在東南亞運作,必須要接入PayPal,如果你的程式碼不是介面方式定義的,我相信,出現這種多個支付的,你的臉可能馬上就綠了,或者比馬的還要長.

IM/RPC等其他工具

        還有其他情況,可以增加擴充套件想,降低專案依賴,比如通過IM通訊,就可以減少很多依賴.也有通過rpc實現不同語言之間的通訊,這些本質上,都是降低耦合,提高專案的健壯性.

開發速度

        這是個亙古不變的話題,效率,尤其是你的老闆,總是希望,他要的時候,你就做好,這個是多麼美好的願望:要就可以.(我也希望,看見美女,要就可以.)

時間計算

我們來算算的時間問題:

  • 資料庫欄位修改(加上思考時間,5分鐘)
  • API修改(往往涉及到多個模組都要修改,15分鐘)
  • API執行測試(就算15分鐘)
  • 介面文件的修改(10分鐘)
  • 後端web(對應介面修改,大概10分鐘)
  • 前端(對應程式碼修改15分鐘)
  • 前端打包執行測試(往往需要20分鐘不止,如果漏掉某個地方,再來一次,時間更長)
  • 溝通(前後端溝通時間10分鐘)
  • 上面的時間如果你覺得多了,實際上還有程式碼同步,上傳測試伺服器,上傳正式伺服器等等,永不止境的工作量等著你.

        這種還不包括修改錯誤,重複修改,重複執行,這些時間,就已經有100分鐘了,這麼一來,人生就都在這麼簡單而又無法避免的工作上浪費掉了,這是理想的情況,每個人都積極的配合修改,不然會有更多的時間被浪費掉

        從去年開始,我就一直在研究,如何採用程式碼生成器的方式,來減少重複的工作量,這個也是我開發的重點,我把程式碼生成器作為一個專案來思考;我思考的目標如下:

  • 生成一個可靠穩定的快速啟動框架
  • 生成生成一份精美的文件,每次更新程式碼,自動重建文件
  • 程式碼生成時,保留手動修改的業務邏輯
  • 當設計錯誤時,可以直接刪除不需要的程式碼,重新生成
  • 生成前端API部分,前端可以直接開始寫UI部分和業務邏輯,不用浪費時間在基礎框架的搭建和對接API上,對接API這些應該自動生成

技術思考

從技術實現層面,我需要思考,以下重點:

  • 如何生成專案檔案
    • 對於新檔案,這個不是多大的問題,可以通過模板的方式來生成.
    • 對於編輯的檔案,有點麻煩,比如路由問題,每次新增,都需要在路由的地方新增一條路由記錄,這種在程式碼生成器上就需要定位
  • 生成專案檔案後,如何刪除
    • 新檔案的刪除也比較方便
    • 對於編輯的檔案,從中刪除部分程式碼,這個就比較麻煩,需要定位,定位後準確刪除不需要的程式碼
  • 對於程式碼生成器,如果編輯程式碼,這個我做了一個長期的積累,形成了一個開發庫.

生成器成果

上面只是程式碼生成的一些技術細節,從去年到現在,隨著不斷的優化和完善,我的程式碼生成器,已經實現:

  • golang版的API
  • react的後臺
  • vue的手機端
  • flutter的app端(支援Android和iOS)
  • PHP版的API生成正在除錯中,預計兩三天後可以完成
  • vue的後臺正在開發中

生成演示站

        我做了一個演示站,通過我的程式碼生成器生成後,一個字元都沒有修改,從API到後端介面全都是自動生成的.生成的flutter APP沒有打包,以後空了補上.

賬號:admin
密碼:123456
複製程式碼

愉快做專案

自從我把完善了生成器後,做專案對我來說就三個字"輕鬆了",可以經常可以去喝喝茶,聊聊天.瞬間感覺生活就是這麼美好.

版權說明:原創文章轉載請註明來源:程式設計師的高產之路 juejin.im/post/5ec61f…

喝咖啡


** 我的文章給你提供了更好的思路,或者對你有所幫助,你可以請我喝一杯咖啡,你想進行溝通交流,可以加我微信. **

複製程式碼

聯絡

相關文章