Bob大叔的忠告做一個專業軟體開發者必須精通的事項
這兩天讀Bob 大叔的《程式設計師的職業素養》,感覺作為一個專業的軟體開發人員不容易,身上頓時感覺壓力山大。
Bob 大叔認為作為一個專業軟體開發必須精通以下幾點:
- 設計模式。必須能描述GOF書中全部24種模式,同時還要有POSA書中的多數模式的實戰經驗。
- 設計原則。必須瞭解SOLID原則 ,而且要深刻理解元件設計原則。
- 方法。必須理解XP、Scrum、精益、看板、瀑布、結構化分析及結構化設計等。
- 實踐。必須掌握測試驅動開發、物件導向設計、結構化程式設計、持續整合和結對程式設計。
- 工件。必須瞭解如何使用UML圖、DFD圖、結構圖、Petri網路圖、狀態遷移圖表、流程圖和決策圖。
自我總結,在Bob 大叔說的這幾點中,我能做到幾點呢?認真思考一下,發現大概有這麼幾點能做到:
設計模式,這些年來國內很多關於設計模式的書,讀大學時代看《大話設計模式》,只是把大鳥和小菜的對話當做故事書來看,很多設計模式的知識只是看了就忘記。後來工作後買了本《Java與模式》來看,發現其中設計模式的思想挺好的。作者通過講些中國傳統故事來形容和講述設計模式,通過這本書學習到了不少設計模式的思想,但總是會忘。後面隨著程式設計經驗的增長,瞭解到設計模式其實就是OO思想和設計原則的產物,設計模式不是去學的,應該是感悟的,是我們程式設計師通過工作經驗去感悟的。感悟設計模式才能掌握設計模式的精髓,才能學會怎麼去開發高可擴充套件性程式。設計模式是一種怎麼開發高擴充套件高可維護性程式的思想和實踐。說來慚愧設計模式現在24種大多數都瞭解其思想,但是現實程式設計使用的不多。如果要學習重構程式設計法,設計模式必不可少,福勒的《重構》很多手法就是往設計模式方面靠攏。
設計原則SOLID,以下這些是我這幾年個人的感悟:
SRP The Single Responsibility Principle 單一責任原則 :當需要修改某個類的時候原因有且只有一個,讓一個類只有一個職責,當這個類需要承當其他型別的責任的時候,就需要分解這個類。這也是bob大叔在《程式碼整潔之道》關於類這一章說的,讓類小盡可能的小,承擔的職責單一,這樣才能保持程式碼的整潔性,不會讓這個類經常由於其他職責的原因而需要修改,這也是達到關閉修改的方式和手段。
OCP The Open Closed Principle 開放封閉原則 :對擴充套件是開放的,而對修改是封閉的。這個原則是諸多物件導向程式設計原則中最抽象、最難理解的一個。其實這個原則我感覺是OO思想最核心的思想,怎麼樣提高程式的擴充套件性而又不用去修改以前的程式碼,這是我們變成中需要注意的問題,當然很多設計模式就可以達到這種效果,工廠、策略模式等都是為了這些而工作的。
LSP The Liskov Substitution Principle 里氏替換原則:所有的子類都可以替換其基類,這個原則其實是對程式語言的要求,只有實現這個原則,我們才能使用多型去創造靈活的程式。
DIP The Dependency Inversion Principle 依賴倒置原則 :高層模組不應該依賴於低層模組,二者都應該依賴於抽象。抽象不應該依賴於細節,細節應該依賴於抽象。其實這些都是為了對擴充套件開放這個原則服務的,Spring的IOC,策略模式這類東西都通過介面去宣告其實現類,達到修改和替換子類不影響現有程式碼的實現。一切都依賴於介面,程式直接的耦合在於其抽象而不在於其具體實現,bridge模式和抽象工廠就是其經典實現。
ISP The Interface Segregation Principle 介面分離原則 :不能強迫使用者去依賴那些他們不使用的介面。換句話說,使用多個專門的介面比使用單一的總介面總要好。 這個原則想表達的思想和單一責任原則有點像,一個介面的方法多了,所有的子類都需要去實現它們,當有一天某幾個子類需要增加一個方法時候,考慮把它放到介面裡面,但是又影響了其他子類,使得其他子類需要實現這個方法,所以介面要儘可能的小。
方法:XP、Scrum、精益、看板、瀑布、結構化分析及結構化設計,這些只是對瀑布、Scrum、迭代開發實踐過,極限程式設計(XP)、精益、結構化分析及結構化設計都是瞭解一些皮毛,這些方面都得努力去學習和實踐。
實踐:測試驅動開發、物件導向設計、結構化程式設計、持續整合和結對程式設計,對物件導向設計有所涉及但不深入只能說剛入門,測試驅動開發瞭解這種思想,只會寫簡單的單元測試,沒有在專案中經歷過測試覆蓋開發的工作,其他結構化程式設計、持續整合和結對程式設計都是瞭解一點沒有深入理解和實踐過。
使用過UML和流程圖,其他幾個圖都沒有用過和了解過。UML圖在工作中只有半年多的設計工作中使用過,需要深入理解。
路漫漫其修遠兮,吾將上下而求索,學習技術之路很漫長。做一個專業的程式設計師不容易,需要多加努力,使自己成為一個專業的程式設計師,成為一個具備職業素養的程式設計師。
本文轉自ITeye部落格:做一個專業軟體開發必須精通的事項
原文地址:http://a5728238.iteye.com/blog/1890259
相關文章
- 做一個好前端必須要知道的事——JS語言前端JS
- 做一個軟體開發者的最大挑戰
- 作為一個程式開發者在職場中必須注意的7件事
- 一個技術總監的忠告:你精通那麼多技術,為何還是做不好一個專案?
- 15個必須知道的chrome開發者技巧Chrome
- 企業使用ERP系統必須瞭解的注意事項
- 除了專業還必須具備的12種軟能力
- 一個2年安卓開發者的一些忠告安卓
- 開發一個 Web App 必須瞭解的那些事WebAPP
- Bob大叔提出程式設計師宣言程式設計師
- 做一個成功的軟體專案經理(轉)
- 每一個C#開發者必須知道的13件事情C#
- 寫專案程式碼之前必須要做的事
- 每個Android開發者必須知道的記憶體管理知識Android記憶體
- 程式設計師:難做但又必須做的 9 件頭疼事程式設計師
- 《程式設計師的職業素養》讀後感:一本Bob大叔的錯誤大全程式設計師
- Perl開發者必須瞭解的14個資源
- 高效Android開發者必須知道的4個工具Android
- 一個 2 年 Android 開發者的 18 條忠告Android
- 找一個精通javascript的朋友做一個客戶端專案(需全職做)JavaScript客戶端
- 一腔熱血做遊戲——遊戲程式設計師必須瞭解的事遊戲程式設計師
- 網路上做網賺淘寶銷量必須用換ip軟體!
- 在深入 Web 開發之前您必須瞭解的事項Web
- Bob大叔:程式設計“老師傅”和他的職業素養(圖靈訪談)程式設計圖靈
- 鮑勃大叔是一個從未交付過軟體的欺詐者? - Nico
- 專案經理之軟體專案經理必須具備的素質
- 技術主管必須做的事情
- [翻譯]Bob大叔:反思極限程式設計程式設計
- 15個必知的Android開發者選項Android
- 想從事資料行業?你必須掌握這個最核心的技能行業
- 開發者須知:女性玩家和手機遊戲注意事項遊戲
- 一個專業的缺陷跟蹤管理軟體:JIRA
- JS 開發者必須知道的十個 ES6 新特性JS
- 每個 Android 開發者必須知道的資源集錦Android
- 軟體開發中專案管理的注意事項(轉)專案管理
- 每個Web開發者必備的9個軟技能Web
- [英]Bob大叔:程式設計“老師傅”和他的職業素養(圖靈訪談)程式設計圖靈
- 移動開發者必須瞭解的三大職業趨勢移動開發