兩人60天輸出有效代碼行15k,基本實現需求。前端
在項目中使用了MyBatis框架,可使用MyBatis Generator生成基礎MyBatis代碼,節省開發時間。同時合理利用IDEA插件能夠提高開發效率。sql
工程結構嚴格按照controller/service/dao層進行封裝,保證controller層簡潔性,dao層只作基本數據庫操做,不使用sql進行復雜邏輯,service層寫具體業務邏輯。數據庫
1)合理的項目結構,方便後期維護,隨着代碼量的增長,這種優點會愈來愈明顯,所以在代碼設計初期,首先要重視工程結構;
2)除了上面的三層結構,通常還須要構造vo/common/exception/utils等層次,用於方便開發和管理json
在common包中能夠定義諸如統一響應,全局常量
在exception中定義須要處理的業務異常,可使用@ExceptionHandler 對異常統一處理
utils能夠定義一些工具,如時間操做、字符操做框架
須要權衡表的數量與業務場景,既要考慮設計儘可能少的表,方便維護,又要考慮業務場景,便於代碼書寫。數據庫設計
1)不能一味追求表數量儘可能少,這樣可能致使代碼處理很複雜
2)也不能爲了代碼書寫方便,隨意增長表,這樣會致使字段重複以及數據庫維護的複雜性
3)每張表都應該包括以下5個字段,軟刪除標識 deleted 建立人 createdBy 建立時間 createdAt 更新人 updatedBy 更新時間 updatedAt (用於排序,保證前臺展現順序),在代碼中能夠寫一個父類包含這幾個屬性,其餘VO能夠都直接繼承該父類。同時因爲軟刪除標誌deleted的存在,全部查詢語句都要加上deleted = 0這個條件來過濾有效數據(0表示未刪除)。工具
1)類文件使用統一前綴,便於閱讀,類名、方法名、變量名遵循業界統計的命名規範便可,如駝峯命名法
2)註釋的合理性,複雜的代碼邏輯須要有註釋,便於後期優化;
3)日誌的合理性,要區分debug info error級別的使用場景,同時使用佔位符方式打日誌不要使用加號,便於提高代碼性能。
4)冗餘代碼清理,隨着業務的複雜性增長,可能須要對原有方法進行修改甚至廢棄,要及時清理無用代碼以及即時修改或清理註釋,錯誤的註釋不如沒有註釋。
5)合理的代碼返回,在上面咱們講過要在common包能夠定義統一的響應體包括 data 數據 message 消息 state 狀態,同時要注意在接口返回前對全部異常進行統一處理,不要讓異常拋到請求方,不然可能出現Feign調用後,解析響應異常(沒法對null或不符合json格式的字符串進行反序列化,報錯,致使接口調用失敗)性能
1)輸出了API文檔,與PC端、APP端以及H5頁面同步作項目時,須要以文檔爲準,一是方便前端人員開發,二是便於後期維護;
2)輸出了數據庫文檔,便於後期維護學習
因爲本次開發是兩我的合做開發,可是因爲習慣性問題,一個使用IDEA,一個使用Eclipse,在開發過程當中屢次由於環境問題浪費開發時間開發工具
改進措施:
1)合做開發的全部人應該統一開發工具,避免浪費精力在調試開發環境上
時間倉促致使代碼結構設計沒有足夠時間,代碼沒有充分考慮性能,同時沒有輸出代碼設計文檔。
本次開發客觀緣由是開發時間較短,應該遵循開發的週期及合理性,不該該盲目追求速度,這樣會給後期增長很大的維護成本。主觀緣由是,開發經驗不足,在開發中還須要不斷查詢一些開發知識,致使開發效率不高。
在開發過程當中因爲只追求實現業務功能,同時需求規格說明不詳細,致使在代碼中的異常處理不充分,不少異常場景沒有統一的處理措施,沒有相應的錯誤碼,致使在調試時耗費了大量時間定位問題。
改進措施:
1)應該提高自身基本開發能力,同時提升溝通能力,合理地將開發中比較耗費人力的地方與業務進行溝通,達成共識。
2)學習代碼設計知識並予以實踐,積累開發能力。
3)在開發代碼前與業務溝通好各類異常的錯誤碼以及返回的錯誤信息,同時在代碼中各類異常都須要以及error級別打印日誌,便於定位問題。
4)對已有代碼進行優化,走讀代碼增長註釋、在適當位置打日誌、對異常場景進行處理
在設計數據庫時沒有充分考慮Oracle數據庫的特性。
在使用MyBatis只考慮瞭如使用子查詢提高查詢效率等基本的數據庫能力,提升性能。
可是因爲數據庫知識匱乏,也犯了一些低級錯誤,如使用了關鍵字當了字段名。
改進措施:
1)系統學習數據庫知識,在設計時,避免低級錯誤
2)學會數據庫調優
因爲對整個系統沒有系統的認識,在自測試期間須要造一些基礎數據過於依賴測試人員。
改進措施: 1)提高對系統的端到端能力培養,同時輸出指導文檔 2)提供測試數據自動化腳本,測試時,直接一鍵執行,能夠完成基礎數據的構造,節省時間,讓開發人員可以聚焦開發的業務場景