2019 年新課程,【Clean Coder:#DI與AOP進階實戰】,往軟體架構師前進的第一塊敲門磚。
怎麼樣避免成為架構太空人,怎麼樣能捲起袖子針對新系統從無到有,針對 legacy 系統重構成剛好的 clean code,讓你不用再為了擴充的彈性與可測試性煩惱,透過重構讓你不會 over design。
※ 這門課主軸絕對不是在介紹 DI/AOP 框架怎麼樣,而是介紹你能怎樣透過最基本的設計原則、設計模式來解決問題。框架可以幫助你達到哪些便利性。
▍傳送門https://dotblogs.com.tw/hatelove/2018/11/14/201905-dependency-injection-and-aspect-oriented-programming
※ 首梯次課程優惠折抵 3600,錯過不再。
※ 2019 年預計會逐步開一些更進階一點的培訓內容,把整個 clean coder 的 road map 大致底定下來。
▍課程簡介
這門培訓會從物件導向的基本,以解決實務問題與需求為出發點,深入淺出帶著大家了解,為何我們的系統設計需要使用 interface,需要依賴注入。
在沒有依賴注入框架的協助下,你該怎麼用基本原則來解決耦合過高的問題。怎麼應用設計模式來幾解決複雜度過高的設計問題。接著說明,我們可以透過依賴注入框架來幫助我們更方便地處理哪些繁瑣的處理。
帶著大家手把手,把 legacy code 重構成乾淨的設計,如何較無痛地引入依賴注入與 AOP 設計,讓你具備基本的軟體架構設計能力,從此不再為擴充性跟可測試性煩惱。
解決實務設計的問題,例如:
① 你怎麼避免需求異動時,寫出像波動拳一般的 if/else,導致複雜度指數增加,測試案例全都要跟著調整。
② 需求異動時,怎麼樣可以只寫新的類別,靈活地切換實作類別,並組合出新的功能,達到開放封閉原則。
怎麼把安全性的處理(如 Authentication/Authorization)、例外處理、log 與 Cache 等與業務獨立的設計拆分出來,既滿足單一職責,關注點分離,且能在系統上像外掛一般加載設計。
③ 了解如何透過標記式(Attribute/Annotation)設計來優化你的架構設計。
▍課程主題涵蓋範圍
● 耦合過高導致的問題,以及為何會出現複雜度過高
● 依賴反轉原則、介面導向設計、依賴注入設計
● 工廠模式(Factory)、策略模式(Strategy)、裝飾者模式(Decorator)、單例模式(Singleton)
● 依賴注入框架簡介
● 橫切面攔截器設計、獨立測試攔截器
※ 本課程不適合只想嘴砲的人,兩天都是實作,沒有投影片跟講義,只有 dropbox paper + GitHub + flip charts
「深入淺出 設計 模式 github」的推薦目錄:
- 關於深入淺出 設計 模式 github 在 91 敏捷開發之路 Facebook 的最佳貼文
- 關於深入淺出 設計 模式 github 在 Re: [請益]對於如何增進自己覺得一片茫然- 看板Soft_Job 的評價
- 關於深入淺出 設計 模式 github 在 kib06277/Head-First-Design-Patterns: 深入淺出設計模式 的評價
- 關於深入淺出 設計 模式 github 在 awesome-books/Java/Head First 设计模式(中文版).pdf ... 的評價
- 關於深入淺出 設計 模式 github 在 book/Head First 设计模式(中文版).pdf at master 的評價
- 關於深入淺出 設計 模式 github 在 Books1/深入浅出设计模式.pdf at master 的評價
- 關於深入淺出 設計 模式 github 在 深入淺出設計模式(Head First Design Patterns) #3 的評價
- 關於深入淺出 設計 模式 github 在 HEAD FIRST设计模式(中文版) 的評價
- 關於深入淺出 設計 模式 github 在 设计模式pdf github 的評價
- 關於深入淺出 設計 模式 github 在 .NET 依賴注入: 簡體中文版 - 第 18 頁 - Google 圖書結果 的評價
- 關於深入淺出 設計 模式 github 在 玩真的!Git ✕ GitHub 實戰手冊- coding 實境、協同開發 ... 的評價
- 關於深入淺出 設計 模式 github 在 深入浅出 ASP.NET Core - Google 圖書結果 的評價
- 關於深入淺出 設計 模式 github 在 一小时实践入门java-design-patterns(github代码) 的評價
- 關於深入淺出 設計 模式 github 在 人工智能云平台:原理、设计与应用 - Google 圖書結果 的評價
- 關於深入淺出 設計 模式 github 在 GITHUB、STACKOVERFLOW和網紅們這樣回答 的評價
- 關於深入淺出 設計 模式 github 在 大話設計模式繁體pdf :: 讀書心得分享網站 的評價
- 關於深入淺出 設計 模式 github 在 一周GitHub 开源项目推荐 的評價
- 關於深入淺出 設計 模式 github 在 霸榜GitHubTrending的设计模式教程出纸质书啦 的評價
- 關於深入淺出 設計 模式 github 在 GitHub - 标签- 老王Plus 的評價
- 關於深入淺出 設計 模式 github 在 精选github开源的重量级精品java教程,学会这个你敢说 ... 的評價
- 關於深入淺出 設計 模式 github 在 意外流出的字節內部Spring Security源碼手冊,在Github上標 ... 的評價
- 關於深入淺出 設計 模式 github 在 Other Posts 的評價
- 關於深入淺出 設計 模式 github 在 12天,这本《重学Java设计模式》PDF书籍下载量9k 的評價
- 關於深入淺出 設計 模式 github 在 [買起來書單] 那些最常在Stack Overflow 被提到的30 本工程師 ... 的評價
深入淺出 設計 模式 github 在 kib06277/Head-First-Design-Patterns: 深入淺出設計模式 的推薦與評價
第一章- 介紹設計模式-歡迎到來設計模式 · 1.介紹設計模式 · 2.類別與次類別之間的關係 · 3.繼承的缺失 · 4.把會變動的部分取出並「封裝」起來,好讓其他部份部受到影響。 · 5. ... <看更多>
深入淺出 設計 模式 github 在 awesome-books/Java/Head First 设计模式(中文版).pdf ... 的推薦與評價
Head First 设计模式(中文版).pdf ... ... <看更多>
深入淺出 設計 模式 github 在 Re: [請益]對於如何增進自己覺得一片茫然- 看板Soft_Job 的推薦與評價
學習一項新技術,通常是找一個項目來做,這樣是最快的,但是通常很難找到適合的項目
以我看過的書,用一個項目來教學,且前後連貫的,就是 "跟Adobe徹底研究Flex4.5"
真是很佩服作者可以寫的淺顯易懂,而且自然而然的就會跟著實作。
一般網路上會建議去github找一個有興趣的,但是通常github上面的項目都已經發展一段
時間
光是要切入就需要花上一段時間,通常這時候就會放棄了,我目前也沒有找到適合的初學者
項目。
我有嘗試過將下列書籍描述的系統,用spirng實作
"線上運動博弈網站程式設計"
"Struts 2權威指南"
但是實際上還是不夠快,最建議的方式就是直接買對岸的視頻,保證學的又快又好。
打這篇文章還找到當年給我靈感去買視頻的文章!!
https://www.javaworld.com.tw/jute/post/view?bid=22&id=230926
所以會建議你去買對岸視頻,你可以自行考慮看看。
下面大概是我工作這幾年,有看過或學習過的東西,希望對你有幫助。
1. Spring、SpringMvc、Hibernate 3個框架
- 這3個框架是目前Java使用率最高的框架,先學習這個就對了,這邊完全不推薦自學,
直接去找看看或買看看有沒有對岸進行IT培訓的視頻,
人家老師幫你整理好,手把手的教,有時還會說明一些實作原理
,看一個視頻真的比你看幾本書都來得有用,
而且老師通常只會教最泛用的做法,
你如果看官方文件或是書籍,光是DB設定就有好幾種方式,你頭就暈了.
- 如果要自學,也不要從頭看到尾,有些東西其實用不到,下述是我的心得
- Spring : AOP章節不太需要看,其它大概都需要了解,
另外千萬不要使用Spring boot,Spring boot藏了太多東西
,是給老手或是想快速建立環境的人使用的。
- Spring MVC : 會設定Controoler,然後傳參數進來、回傳參數給Client
,大概就足夠了.
- Hibernate : 這個比較麻煩,因為我看視頻,覺得學得蠻快的,通常就宣告Entity,
然後可以做CRUD動作就可以了,我曾經嘗試看過書,很多東西用文字解釋
,要看好幾次才會會理解。
- 另外推薦幾本書,我當初看得當然都過時了,
不過可以找看看是不是有後續版本或是類似的書籍
- Spring 2.0 技術手冊
- Spring 已經發展到4啦 QQ ,但是這部書簡單易懂,是我的第一本入門書
- Spring Recipes: A Problem-Solution Approach
- 2010年的書,這本書在每個章節都使用大量例子來說明
,缺點是書中程式碼沒有很詳細,需要一直搭配程式碼來看,
Amazon 4顆星評價。
- Pro Spring MVC: With Web Flow
- 2012年的書,有點難,好處是會講到較為底層的東西,
不然我一直搞不懂Spring mvc那一堆設定。
- 精通Spring 4.x :企業應用開發實戰
- 這本我沒看過,但是我認為不錯。
- 這邊的結論就是,去買視頻吧,真的快很多!!!!!
2. 測試框架 Junit
- 學習一個測試框架,這邊強烈建議搭配書本學習,
我看的是Junit in action 第二版。
搭配書本學習主要是學習作者觀念,例如如果你的程式很難測試,代表寫法有問題
,另外書中也教了許多測試案例寫法,會讓你的程式往 "好味道" 程式碼的方向前進。
- 暫時跳過mock技術,除非你有時間或是會使用到,mock技術對我來說沒有幫助
,如果真的有需要,之後再去學,一開始了解一下mock機制就可以了。
3. 了解Servlet
- Java框架封裝太多東西了,有些基本與底層的東西反而越來越少說明,
這邊建議可以看一下,"深入淺出Servlets與JSP",我回頭來看這部書時,覺得獲益良多。
JSP相關技術就瞄一下就好,過時了 T T .
4. 設計模式
- 一定要看一下設計模式,學習設計模式的用意,是讓你更了解物件導向設計,
以及那些程式碼可以拆分出來,你會更清楚介面、繼承、
以及static method如何使用。
剛開始學習,可以什麼程式碼都套設計模式,後續應該要自行判斷如何撰寫程式碼。
- 這邊唯一推薦看 "設計模式之禪" , 非常淺顯易懂,不過這本書在 "裝飾模式" 寫的
不好,可以另外參考 "王者歸來:品味Java的21種設計模式" .
5. Java多執行緒
- 因為多執行緒實際上用不到很難的部分,通常不需要另外看書,但是如果有需要的話,
推薦 "Java 7 Concurrency Cookbook" 真是非常容易理解,
千萬不要一開始就看 "Java Concurrence in practice",這本書很多人推薦
,但是真的太難了,講了一堆東西,但是都用不到.
6. Git版本控制
- Git很紅,所以我認為應該要學,不過如果你的公司沒有用git,那學習的效率其實不好
,因為一個人用不會有什麼大衝突,也就一些技術都不會用到。
- 如果要學git,這邊只推薦看 "Git權威指南", 其它的書跟它比起來跟小廢廢沒什麼
兩樣。
7. Scrum
- 了解一下Scrum吧,這邊推薦 "輕鬆Scrum之旅"
,類似一本故事書,畢竟這種專案管理取決於公司文化,能快速了解一下即可。
8. Maven
- Maven跟gradle我都有使用過,個人開發的話,gradle我覺得不好用,學習曲線比較高
,而且在eclipse支援不佳,而Maven較容易學習,
不過缺點在eclipse有時會因為同步問題,導致jar檔一直找不到。
我是覺得個人開發就是用maven吧,除非你們整個導入devops架構。
- 書籍推薦 "Maven實戰" , 保證你很快就會學會並使用。
9. 其它相關書籍
- 重構:改善既有程式的設計
- 非常好的書籍,我採取的策略是快速瞄一次,然後看一下可能會用到的部分,
這本書我沒有真的看完,只有了解重構的理念以及一些重構技術。
- 這邊要特別說明,不用去看其它講重構的書,
不會比較好也不會比較快,看這本就對了。
- Kent back的實作模式
- 買來(2013)還沒有時間看,但是快速翻一下,非常好的書。
- 無瑕的程式碼:敏捷軟體開發技巧守則
- 買來沒時間看.....QQ
- 編程創藝 編寫出卓越的程式碼
- 買來沒時間看.....QQ
- Java 效能優化指南
- 買來沒時間看.....QQ
- 分佈式Java應用
- 感覺沒什麼用,講一些分佈式的東西。
- 大規模web服務開發技術
- 還不錯,說明一個系統怎麼因為使用人數成長,而更改系統架構。
不過看完有點惆悵,我們家的系統沒有那麼多人使用啊 ><. 所以用不太上。
所以其實是很多東西可以學的,好好加油啦!!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.168.149.219
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1490543503.A.C63.html
※ 編輯: achaos (118.168.149.219), 03/26/2017 23:52:48
... <看更多>