個人知識管理系統Version1.0開發記錄(12)


      最近碰到個問題,在五個工作日內閱讀一個百萬行左右代碼量的新項目集合,如何解決呢?

  第一個工作日,環境觀察。待在那個項目組,看項目成員們在做些什么事情,開發,測試,聊天,或多或少可以收集到一些項目相關的零散信息,這是看和聽了。適當向項目成員咨詢一下平時項目的一些基本情況,這就是問了。第一個工作日對項目開發環境有一定了解就好,比如開發的方式,是一步步的瀑布法,還是一個個功能的敏捷法;比如數據權限,是有測試環境和生產環境之分的;比如項目組成員情況,每個人的做事風格是有區別的,如果留心觀察和思考,會發現他們寫的代碼往往帶有一些個人習慣,或縝密,或條件繁瑣,或簡單快速,或者套路化,或者千篇一律一個樣,這就是個人,團隊和項目三者的大致關系了,他們是如何在一個環境中存在的。代碼是人寫的,是團隊合作出來的,是在一種生產環境運行的,最開始了解代碼產生的環境,在腦子里面有個大概思維形狀是個好的開始。

  第二個工作日,文檔收集。每個項目或多或少都有一些相關文檔,比如項目是用什么框架實現的,各個項目是通過什么協議傳輸數據的,包名類名規范,基礎類繼承要求等。最開始因為不熟悉項目,文檔看着是有點頭疼的,因為感覺多散亂,從簡單的自己熟悉的方面開始看就好。可以按照自己喜歡的類型,將文檔進行分類,方便形成結構化的文檔集。就象數據庫建模,最開始收集到數據是沒有數據庫表和對象的,把一類物質歸納到一起,抽取他們共同的屬性和方法,可以反復調用他們,就產生了數據庫表和對象了。文檔分類類似,習慣把文檔按照什么類型分類,然后歸納為一類,一類文檔解答一類問題,把沒有關系的信息因為可以解答一類問題這個關系而歸納為一類有關系的信息。阿拉伯數字和中文漢字是一個非常好的組合,01+幾個簡明扼要的中文漢字,就可以明白闡述一類文檔了。OK,有特例怎么辦,可以看用途,有的特例有使用條件,有的特例可以多處使用,有的特例就是例外,我們可以寫個帶參方法(條件即參數),可以寫個工具類(可以反復調用),可以寫個異常和日志記錄(觸發例外則按異常處理)。

  第三個工作日,結構整理。理清技術相關信息,了解基本運行原理。人們往往毫無頭緒或者思緒混亂,是因為未知,理解未知的常用方法是用已知的知識結構去解析。

1,jdk1.6,jdk1.6中文API文檔。

2,運行java的網絡服務器,tomcat7。

3,IDE,Eclipse。

4,數據庫,Oracle;數據庫操作,PlsqlDeveloper。

5,數據訪問框架,Mybatis,數據訪問層dao。

6,業務邏輯和控制框架,SpringMVC,基於方法復用service。

7,界面,jQuery EasyUI。

8,系統間數據交互,spring HttpInvoke。

9,分布式緩存框架,EhCache。

10,sql優化方案...

  第四個工作日,業務邏輯。一個常用的方法,就是把自己當成用戶,操作用戶界面,看看實現了哪些功能模塊,然后結合代碼看看這些功能模塊是如何實現的。從哪里收集的數據,如何加工數據到界面上的,用戶需要這些數據有什么價值,系統額外做了什么,與其他系統產生了什么交互。然后用筆紙大致畫畫業務邏輯圖。可以對照數據庫表,想想這些表是如何抽象出來的,如何讓一些沒有關系的數據建立起數據模型的。可以從核心功能,常用功能看起。

  第五個工作日,方法抽象。整合前面收集的信息,對方法和步驟進行一定的結構化歸納。

1,細節。日志記錄要清晰,sql語句效率要高,數據流通清晰明白,等。

2,流程。需求分析,設計文檔,業務邏輯,結構清晰,溝通順暢,等。

3,復用。某個功能模塊,類,方法適用於大量業務場景,抽取這些邏輯組織復用性高的代碼。

4,合作。涉及到多系統交互,數據訪問調用接口這些必然存在問題,事先考慮時效等相關問題,運用一些數學統籌方法,調整事務順序,是有好處的。

5,學習。若沒有網絡,我們如何解決未知問題?嘗試,排除,類比都是可以的。學習基礎知識快速開發的同時,學習一些反復使用的經典方法是有益的。

  我們沒有思路,是因為我們還沒有看懂,還沒有想明白,多看,多聽,多寫,多畫,多想,多動手。求快就快點寫,寫好了實現功能出現問題再改;求穩就按照步驟做,邊做邊檢查邊測試,按部就班即可;求復用,就要多動腦子模擬場景,把東西挖出來形成一個功能齊全的獨立整體就好了;求收益好,就多想想實用性,逆向思考就好...年輕的我們一天天成長,每天都有進步就好了;圖書館和運動場多去逛逛,是有好處的,這是一件重要不緊急的事情。


免責聲明!

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



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