完整后端開發流程


所有的bug修復都要回歸落地到細節,所有的設計也要回歸落地到細節,所以,不浮躁,不着急,重視細節;這樣的流程就是省時間的。

不僅僅要關注功能實現(如果只是一門心思只是從功能實現考慮問題,那么后期的代碼會亂糟糟),也要考慮代碼架構靈活性,健壯性,可維護性等等;

做事要抓住核心,無論是做架構設計,還是做自測等等;

做事不能把需求當做上帝,作為一個項目參與者,你要信奉的是的邏輯,符合用戶使用的邏輯,要有自己的邏輯思考和批判精神;這是活力和成長的來源;

工欲善其事必先利其器:把編輯器字體,把ssh客戶端字體等等設置舒服的,不斷挖掘它們最好的,做到提升效率

1.架構概要設計

 

   多個應用之間的調用怎么做(異步,同步,http,tcp,自己開發,還是使用開源的,還是在開源基礎上二次開發做精簡或者擴展);

 什么情況使用什么技術,依據是什么?(比如你數據量以及數據增長不大,另外,僅需要簡單查詢,倒排索引可以考慮使用lucene,而不是elasticsearh或者solr)

  網絡調用,超時時間怎么設置,設置多少合適,怎么做容錯

   數據結構如何設計,數據怎么存儲,(倒排,讀文件,還是nosql);后面要考慮數據備份,數據量大的情況做sharding等,還有一致性問題等;

   單個應用中的處理流程怎么寫(考慮復用,考慮結合設計模式進行抽象);

  設計模式:知道什么場景需要用什么設計模式?比如,需要創建單例,就用單例+工廠方法模式。需要模板,就用模板方法。需要觀察就用觀察者模式。需要生產消費,就用生產者消費者模式。

 

  要考慮,隨着時間變化,數據量是否增速快,如何應對這種數據增速快等情況,架構也要迭代。

2.日志

  應用日志打印,耗時統計,

3.異常

  單個應用的異常處理,保證健壯性;

  具體比如使用一個對象的方法前,看看對象是不是為空,看看你傳遞的參數(比如,你使用一個變量來取subList(1,x),而x可能為0的情況,對不對。

  TODO:只是調用鏈的最外層打印日志,里面不要打印日志;

4.配置化

   JVM啟動配置化,能夠做到不需要打包,直接讀取配置重啟即可等;

5.測試

   測試要抓住核心進行測試,如果僻重就輕,那么測試的意義就沒有那么大了;

   工欲善其事必先利其器;要學會Idea的高級調試技巧等。這個非常重要,可以提高效率,也可以讓你調試更精准;要不斷挖掘idea開發工具的提供的特性,提升你調試和開發效率。

   單元測試,集成自測等,mock測試,造數據等;

   要采用多版本管理,一個版本OK了,如果要復現或者修復一個問題,應該使用拉一個新分支,測試通過了,再合並到主干,這樣在問題爆發期能夠保證一個可用可測試的版本,

而不是靠越改越亂,甚至搞亂了;

   一般單元測試要至少包括兩個:一個是指定的輸入參數case,一種是盡量隨機組合所有可能的參數組合(把所有參數放到數組中,采用隨機數生成索引獲取值進行組合);

   有些代碼需要這樣的測試,數據是不是有滿足case的數據,這個時候就需要Mock一個判斷,然后打印一個日志等,來證明你的猜想;

   要有一種方法驗證你的數據,比如你使用Lucen倒排索引了你的數據,你要驗證;可以借助Luke等,或者程序Mock的方法;

  程序中進行埋入mock代碼是一種開發者可以一切場合都適用的方法;

   當你提測一個版本后,就不要在這個版本的主干開發了,要挪到分支,測試通過,再合並到master,而且要注意reivew下;

   修改bug不是僅僅為了解決功能,也要考慮代碼的可擴展,可維護等等;

6.優化

   編寫施壓代碼,進行壓測,分析jvm的gc,機器的內存,cpu,網絡帶寬占用,查看網絡連接狀態;

 

7. 心情:

解決bug時,要心平氣和,要冷靜分析,要各個擊破,逐個解決,不要急。

 

 

8.netty和lucene


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM