author: 乘著風去破浪
所有的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
軟體的完整開發流程
軟體產品開發流程 下圖所示的是乙個軟體產品開發大體上所需要經歷的全部流程 具體流程如下 啟動在專案啟動階段,主要確定專案的目標及其可行性。我們需要對專案的背景 干係人 解決的問題等等進行分析。並制定專案章程和組建專案團隊,包括 產品經理 架構工程師 ui工程師 開發工程師 測試工程師等。完成以上準備...
APP開發完整流程
一.需求階段 1.初期由leader 或者專案責任人和 pm溝通下階段開發計畫,確認需求的可行性和優先順序等初步達成共識 2.接下來pm 提供詳細 ue文件 需求顆粒感盡可能小 發起三方會議,由產品 開發和 qa確認需求並達成一致,開發和 qa可以對產品任意方面,提出看法和建議 3.最終的需求定稿,...
數字後端流程
1.資料準備。對於 cdn 的 silicon ensemble而言後端設計所需的資料主要有是foundry廠提供的標準單元 巨集單元和i o pad的庫檔案,它包括物理庫 時序庫及網表庫,分別以.lef tlf和.v的形式給出。前端的晶元設計經過綜合後生成的門級網表,具有時序約束和時鐘定義的指令碼...