剛發現這篇被貼上去了! 先聲明! 這篇只是學習筆記! 大家請看原文不要被我爛英文誤導! 原文寫的不賴,會接觸到 "專案" 人看到,應該會點頭如搗蒜! 此篇為方便本人有需要看的導讀文! 非翻譯文!
基本上,我是因為看到 一網打盡軟體開發的設計模式、錯誤模式、重構 這篇推推王的介紹才知道這個網頁,我只能說這是我最愛的菜啊!
資訊很多的壞處就是:
- 很難一次吸收!
- 要用時找不到!
- 吸收完又還給它!
所以為幫助自己學習,就只好邊看邊寫,寫些無聊的話語加強記憶了! 原則上有看就寫,先看個大概(快速掃描),日後碰到可先看此篇找到繼續看下去的入口(資訊太多的下場 Orz). 今天先看 Antipatterns 這部份:
整篇看完,發現大部份的議題著重在政治面上,再來是設計,幾乎沒有編碼技巧的部份.
Reinvent the Wheel
不要重新造輪子!
Death by Planning
不要過度設計!
Intellectual Violence
因為專業知識造成的誤解. 可靠團體內知識分享的會議來解除.
Design by Committee
什麼都要靠開會決定!
The Feud
人際關係! 解法: Pizza Party Orz
Throw It over the Wall
知識傳達的正確性.
Irrational Management
不當的管理(這應該是很多人的痛)!
Spaghetti Code
一堆爛到不行的程式碼,連寫的人都看不懂. 解法: 重構,寫之前先動腦...
Cover Your Assets
一堆沒有做出決定的文件.
Fear of Success
專案快結束了卻開始害怕東害怕西!
Viewgraph Engineering
做不完的圖表報告!
Project Mismanagement
直接翻譯: 專案的不當管理. Orz
The Blob
一個 Class 負擔了太多的責任,裡頭包含了大量的程序,看起來像是 procedural-style .
這讓我想起最近改寫的惡夢 - 一個 OK 按鈕下去就是 500 行以上的爛扣!
解法: 把責任分散出去.
- 根據設計合約來檢查屬性和方法,將其移至合適的地方.
- 生命會自己找到出口(原文也很玄,原諒我用這種不負責任的翻譯方法!). 將它放到它該住的地方. 狗身上不會有狗的鼻子,看不出來,你就不是個夠格的 RD!
- 移除關聯性太弱的連結.
- 移除弱連結,加上合理的新連結. 有點像公司的組織,董事長不會跟每個人都有聯結,一定是他管理你的老闆,你的老闆再管理你. 此例中,就是移除董事長身上跟所有基層員工的連結(因為這不合理),然後每個中頭目跟小頭目上加入他所管理的成員.
- 將可抽取的行為搬出來(Strategy Pattern).
Continuous Obsolescence
使用的語言,函式庫...不斷地改版.
Lava Flow
時間一拉長造成的問題:
- 程式碼越來越龐大.
- 逐漸失去正確性的註解.
- 專案成員的替舊換新.
總歸一句, "專案依舊,人事全非".
Ambiguous Viewpoint
恕小弟無知,我看不懂!
Functional Decomposition
自以為用 Java 就是在寫物件導向的程式.
Poltergeists
"我不知道這個 Class 做啥的,但我知道不能刪掉它!" - 工程師 菜先生(28)
Boat Anchor
做一個沒有市場(或自以為有市場)的產品!
Golden Hammer
黃金鎚! Orz
Dead End
修改了一個原本廠商已經沒有在維護的可重用元件,之後維護的工作就落在自己身上.
Input Kludge
沒有針對使用者的輸入做合理的處理.
Walking through a Minefield
Bug 無所不在!
Cut-and-Paste Programming
CP 大法!
Mushroom Management
管理方式導致 程式設計師 跟 使用者 想法上的差距.
Autogenerated Stovepipe
軟體改版成分散式架構所遭遇到的問題.
Stovepipe Enterprise
一個企業應用程式下,分成各自獨立的多個系統,造成後續開發或維護需要付出更多的成本.
Stovepipe System
一整個就是廢的系統!
Jumble
垂直式的設計方式和水平(層級)式的設計方式不適當的混用,造成架構上的混亂及很難重新使用寫好的程式碼.
Vendor Lock-In
專案依賴第三廠商開發的軟體,該軟體的改變有造成整個專案實作需要修改.
解法: 在程式架構中加入一個新的中間層次,將抽象概念和實作概念切割開來.
Wolf Ticket
產品宣稱符合了新的標準. 但實際上,與其說符合新標準替使用者帶來好處,不如說是廠商為了增加品牌可見度而開發了該產品.
Architecture by Implication
做過類似的專案,而輕乎了現在手頭上類似的案子.
Warm Bodies
20個 RD 開發一個專案的效率 != 20 * (1個 RD 開發一個專案的效率)
Swiss Army Knife
一支包山包海能上天能遁地的 Class.
The Grand Old Duke of York
編碼員 vs 系統架構師
Blowhard Jamboree
太多自以為內行的專家,討論或散佈不一定正確的資訊.
Analysis Paralysis
過多為了追求完美的設計或行為.
Corncob
組織內的麻煩人物.
Smoke and Mirrors
一開始行銷或承諾畫了一塊大餅,在不可能達成的時限內,使用者往往只是拿到一個殘缺不全的四不像.
E-mail Is Dangerous
E-Mail 在某些狀況下不是個好的工具.
Fire Drill
管理階層花了大半的時間在規劃,壓縮到編碼及測試的時間.
0 則回應: