簡單設(shè)計(jì)中的四條原則就是設(shè)計(jì)的全部了嗎?

在設(shè)計(jì)決策中潮剪,提到了4個(gè)原則應(yīng)對4種要求(需求充分涣楷、可理解性、可修改性抗碰、簡單)狮斗,但設(shè)計(jì)還有其他要求,簡單設(shè)計(jì)為什么沒有考慮將怎么應(yīng)對這些要求的方法納入進(jìn)自己的原則體系弧蝇?

在TDD訓(xùn)練營或重構(gòu)訓(xùn)練營中碳褒,我都會將簡單設(shè)計(jì)作為必講的知識點(diǎn)。我覺得這四條原則非常樸素看疗,也較為容易理解沙峻。并且背后支撐了考量軟件的核心的四個(gè)維度:

  1. 需求充分,編寫的軟件要滿足客戶需求的鹃觉,這個(gè)毋庸置疑专酗,沒什么可討論的。
  2. 可理解性盗扇,編寫的軟件要易于理解祷肯,這個(gè)是廣大開發(fā)人員也不會反對的事實(shí)沉填。
  3. 可修改性,編寫的軟件要易于修改佑笋,這個(gè)也是廣大開發(fā)人員不會反對的實(shí)施翼闹。
  4. 簡單,編寫的軟件要簡單蒋纬,如非必要猎荠,不要加多余的元素,但看這個(gè)點(diǎn)蜀备,很多人也不會反對关摇,但很多人不知道怎么把我。

可能你會說碾阁,軟件設(shè)計(jì)遠(yuǎn)遠(yuǎn)不止這些输虱,還有好多,比如:

  1. 高內(nèi)聚脂凶,低耦合
  2. 面向抽象編程
  3. 組合優(yōu)于繼承
  4. SOLID
  5. 好萊塢原則
  6. DRY
  7. KISS
  8. 設(shè)計(jì)模式
  9. 分層架構(gòu)(洋蔥架構(gòu)宪睹、整潔架構(gòu))
  10. 中臺
  11. ......

仔細(xì)想想,這些名字光鮮華麗的原則蚕钦,哪個(gè)能逃脫的了上述四個(gè)維度亭病?無一例外!

在當(dāng)下的軟件開發(fā)的上下文嘶居,所有的軟件設(shè)計(jì)理念和原則罪帖,都是在滿足需求的前提下,為了提高軟件的可維護(hù)性邮屁,而可維護(hù)性就體現(xiàn)在:容易理解胸蛛,容易修改,簡單樱报。

基于對良好軟件本質(zhì)的思考葬项,Kent Beck提出了簡單設(shè)計(jì)的四條原則:

  1. 通過測試。廣義上滿足客戶需求
  2. 揭示意圖迹蛤。講業(yè)務(wù)語言民珍,軟件模型跟業(yè)務(wù)模型一致。
  3. 消除重復(fù)盗飒。消除重復(fù)代碼(當(dāng)然嚷量,還有很多其他導(dǎo)致難以修改的問題)。
  4. 最少元素逆趣。不要增加沒必要的元素蝶溶。

沒有華麗的辭藻乃沙,用詞樸素储狭,容易被人理解债蜜。這個(gè)框架祖秒,即便初學(xué)者也能立馬用起來,他扮演了一個(gè)智者一直在對你提問田轧,促進(jìn)你去思考:

  1. 你寫的軟件滿足了需求了嗎暴匠?(嘿,跑偏了傻粘,PO沒說要實(shí)現(xiàn)這個(gè)功能...)
  2. 你這個(gè)代碼表達(dá)業(yè)務(wù)意圖了嗎每窖?(嘿,這個(gè)東西在業(yè)務(wù)上不是這么叫的...)
  3. 你的代碼容易修改嗎弦悉?有沒有重復(fù)窒典?(嘿,這段邏輯重復(fù)了稽莉,真討厭...)
  4. 這個(gè)元素對真的有用嗎崇败?(嘿,這個(gè)字段沒用上肩祥,去掉也沒有任何影響...)

初學(xué)者就可以從最基本的代碼命名、重復(fù)代碼缩膝、冗余方面去思考自己實(shí)現(xiàn)軟件的過程混狠,從很小的命名習(xí)慣(也是最重要的習(xí)慣之一)開始培養(yǎng)自己的編碼Sense,避免花里胡哨的炫技疾层,做一個(gè)接地氣的簡約開發(fā)者将饺。

掌握了簡單設(shè)計(jì)原則的標(biāo)志是:你對四條原則的優(yōu)先級的理解和沖突場景下的決策。這個(gè)在簡單設(shè)計(jì)一文中有介紹痛黎。

簡單設(shè)計(jì)只是一個(gè)開始予弧,它代表不了軟件設(shè)計(jì)的全部,它讓初學(xué)者更容易的開始湖饱。要具備軟件設(shè)計(jì)的敏銳的嗅覺掖蛤,還需要日積月累對上文提到的設(shè)計(jì)理念(不限于上述幾條)有深刻的理解。不然井厌,即便掌握簡單設(shè)計(jì)蚓庭,甚至TDD和重構(gòu),也會很快到達(dá)瓶頸期仅仆。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末器赞,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子墓拜,更是在濱河造成了極大的恐慌港柜,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件咳榜,死亡現(xiàn)場離奇詭異夏醉,居然都是意外死亡爽锥,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進(jìn)店門授舟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來救恨,“玉大人,你說我怎么就攤上這事释树〕Σ郏” “怎么了?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵奢啥,是天一觀的道長秸仙。 經(jīng)常有香客問我,道長桩盲,這世上最難降的妖魔是什么寂纪? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮赌结,結(jié)果婚禮上捞蛋,老公的妹妹穿的比我還像新娘。我一直安慰自己柬姚,他們只是感情好拟杉,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著量承,像睡著了一般搬设。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上撕捍,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天拿穴,我揣著相機(jī)與錄音,去河邊找鬼忧风。 笑死默色,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的狮腿。 我是一名探鬼主播该窗,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蚤霞!你這毒婦竟也來了酗失?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤昧绣,失蹤者是張志新(化名)和其女友劉穎规肴,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡拖刃,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年删壮,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片兑牡。...
    茶點(diǎn)故事閱讀 40,675評論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡央碟,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出均函,到底是詐尸還是另有隱情亿虽,我是刑警寧澤,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布苞也,位于F島的核電站洛勉,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏如迟。R本人自食惡果不足惜收毫,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望殷勘。 院中可真熱鬧此再,春花似錦、人聲如沸玲销。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽痒玩。三九已至,卻和暖如春议慰,著一層夾襖步出監(jiān)牢的瞬間蠢古,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工别凹, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留草讶,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓炉菲,卻偏偏與公主長得像堕战,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子拍霜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評論 2 360