摘要:
專訪李運華:程序員如何在技術上提升自己
方法:
1 寫博客
2 鏈式學習:從一個點不斷學習相關的知識
3 閉環學習:瞭解整個功能或業務的全流程實現,涉及了哪些模塊和系統,每個模塊和系統主要負責什麼功能,涉及到什麼技術,性能怎樣,有什麼注意點。
圖書推薦:
羊皮卷、異類、隨機漫步的傻瓜
優秀程序員的技能和修養:
1 快速學習的能力;4W2H,
a 這個技術解決什麼問題?
b 比較適合在哪些場景應用?
c 這個技術跟已經掌握的哪個知識或技能類似,有什麼差別、特點、優缺點;
d 寫demo,應用;
e 研究機制、看源碼;
2 良好的理解能力;(理解需求)
3 持續不斷的學習;
4 樂於分享;
如何安排時間:
利用碎片時間
團隊管理心得:
1 不能完全放棄技術;
2 幫助組員提升;
3 身先士卒;
面向對象和編程語言
專欄《面向對象葵花寶典》
心中的大牛
能夠設計和實現一個完整的系統
-----------
-----------
延伸閱讀:專欄《面向對象葵花寶典》 http://blog.csdn.net/column/details/oobaodian.html
1 (4)面向對象是瑞士軍刀還是一把錘子?
a 面向對象的核心是“可擴展性”;
b 面向對象的應用範圍是“經常變化的地方”(企業應用、互聯網應用)
???可伸縮性、可移植性、可維護性跟面向對象沒有關係嗎?
2 (5) 面向對象迷思:面向對象導致性能下降?
a 性能好壞是由設計決定的,而不是由語言決定的,更不會因爲採用了面向對象而導致性能的降低;
3 (6)不要說你懂“類”
a 類是一組相似事物的統稱。
4 (7) 對象
a 對象是類的一個實例
5 (8) 接口
a 接口是一組相關的交互功能點定義的集合;
6 (9)抽象類
a 抽象類只能繼承,不能實例化
b 是介於類和接口之間的概念,同時具備類和接口的部分特性。
7 (10)抽象詳解
a 抽取出來比較像的部分
b 抽象的作用:劃分類別,隔離關注點,降低複雜度。
8 (11)封裝(12)繼承(13)多態
a 什麼需要封裝?不想讓別人知道的東西。
b 爲什麼封裝?保護隱私,隔離複雜度,
9 (14)面向對象技術流程
a 需求模型
(記錄客戶需求;和客戶一起分析問題,完善需求;引導客戶的需求)
(用例分析、功能點提取、用例圖、系統順序圖)
b 領域模型
(找名稱、加屬性、連關係)
c 設計模型
(靜態模型主要用於指導類的聲明,包括類名稱,屬性名,方法名;而動態模型主要用於指導類的實現,主要就是每個方法內部的具體實現)
d 實現模型(類模型)
(領域類映射--告訴你類從哪裏來:從需求來,暈暈暈)
(應用設計原則和設計模式:)
(設計原則SOLID:單一職責、開放/封閉[對於擴展開放、對於修改封閉????]
、Liskov替換[對象應該是可以在不改變程序正確性的前提下被它的子類所替代]
、接口隔離[多個特定客戶端接口要好於一個寬泛用途的接口]
、依賴反轉[依賴於抽象而不是一個實例]
擴展閱讀,《敏捷軟件開發:原則、模式與實踐》)
(設計模式:擴展閱讀,《設計模式--可複用面向對象軟件的基礎》)
(拆分輔助類)
(不是一個設計的步驟、而是實施的一個步驟)
10 動態模型設計
待續。。。