話說為什麼會選這本書是因為推薦
但是這本書到底再寫些什麼內容,總不能30天後全部看完才知道吧
又不是推理小說來著的
就讓小的我來稍微簡介一下這本厚厚的原文書吧
30天後如果有人要二手購入的,歡迎內洽喔~
(到底要去哪裡內洽?????)
Guideline - 指導方針
顯然是.NET的一本教科書來著,內容包括
咦?這不是把第一天的東西又打了一次XD
只要照著書中的Guidelines
就可以創造出一個前無古人後無來者驚天動地無所不能的Framework
是不可能的!!!![]()
但是可以創造出一個設計良好容易閱讀方便擴充人見人愛的Framework![]()
話說我連Framework都沒寫過
未來也沒有計畫開發
讀這個真的對目前的我有收穫嗎?
不用擔心,就算沒有那種天分寫出好的Framework造福大眾

我對自己的期許,希望讀完本書後至少能將下列應用到未來的工作上

Framework是我們每天都在使用的東西
好的Framework帶你上天堂,不好的Framework帶你住套房
相信大家都有過一邊Coding一邊幹譙的情況吧
『這甚麼鬼!!這麼難用!!』
『到底這個Method在寫些甚麼?』
『甚麼爛東西?為什麼沒有提供blablabla...功能』
"好" 這件事情其實很主觀的
『可以用來解決問題的就是好東西』
『沒有Bug就是好程式』
『需要全方面考量設計的完美計畫才能叫好』
每個人對於"好程式" "好設計" 的定義都不盡相同

一般而言,想開發一個品質良好的Framework,至少得考量下列幾點
接著就讓我們來各個擊破吧!!
『簡單好用』應該所有工程師在使用別人的套件時最希望遇到的事
很多厲害的傢伙常會迷思在我寫的東西多強大多完美
但寫出來的東西只有自己知道怎麼使用
這種慘品怎麼賣得出去
把功能簡化,按照各種情況獨立開發,不要一個大坨的
如果有更複雜的設計或邏輯,下一個版本再說吧
使用『client-first programming』來測試自己的功能是否方便使用
這裡所謂的client指的就是我們工程師
也就是framework使用者,畢竟framework是開發給工程師用的
決定功能內容與input/output之後
找幾個工程師來問問
『如果有一個blablabla功能
你希望如何使用?
輸入甚麼?
回傳甚麼?』
如果大部分的人回答的內容跟你原先設計的不一樣
那就表示這個設計並不符合client的需求,再調整吧
所以Framework需要甚麼功能,不要甚麼功能
要怎麼定義?怎麼實作?
都是需要Trade-Offs
要不斷經過討論調整
不要想要一個人躲起來想東想西的
出來聽聽聽大家的意見吧阿宅
不要想要用甚麼創新的技術
盡量使用已經經過時間的淬鍊與多人的測試傳承下來的Design Pettern
百年老店,品質保證
不要隨便加入一個新的觀點
那會讓你的Framework增加失敗的機率
這是為了『以防萬一』
雖然強調擴充性,但是為了不讓擴充功能搞壞了整個設計
記得把新的東西加在下一個版本
不要在目前版本放做了一半的半成品
畢竟『需要一直權衡取捨』(Trade-Offs)經過設計與討論之後才有變成產品的價值
這點我覺得有點太龐大
意思是指一個好的Framework必須能夠符合整個開發大環境
包括可以應用在不同的工具、程式語言與應用程式
目前為止有人做到全部嗎?
風格一致是一件很基本很重要卻好像很難做到的事
大家都討厭客戶變來變去的吧
但是其實我們也很常在變來變去
命名風格、設計風格、程式風格一致性
可以讓使用者更快速了解並上手
還記得上面說的『不要標新立異』嗎?
就讓你的Framework像iphone一樣,簡約、舒服
除了Unit Test之外
還要把自己當作使用者來使用Framework
不是做完Unit Test就能宣稱是個tastable的Framework
站在使用者的立場面對自己開發的難用Framework吧
這時請擺脫『自己的小孩總是最可愛』的盲點
這一點應該是跟老闆說的
看完上面的論點之後
應該可以體會到一個好的Framework是需要大量的時間跟人力的
畢竟一分錢一分貨一枝草一點露
一個Alan一個月一個Framework
只想跟主管講

後繼
已無力...
昨晚看到半夜一點半導致失眠...
30天會不會撐不下去咱們明天見