No choice is a good choice

? 愚蠢的實(shí)現(xiàn)各有各的蠢法,好的代碼有相似的氣質(zhì)濒憋。比如說吧悲伶,在一個(gè)既有的函數(shù)里增加一個(gè)分支郊尝,寫法包括

1. 敲一顆釘子進(jìn)去

foo()
{
? ? ……
? ? if(condition)
? ? ? ? ? {statements;}
? ? else
? ? ? ? {other statements;}
? ? ……
}

2. 稍微優(yōu)雅的敲一顆釘子秕铛,封裝個(gè)函數(shù)

foo()
{
……
? ? if(condition)
? ? ? ? ? func1();
? ? else
? ? ? ? func2();
……
}

3. 分離條件和行為

foo()
{
? ? funcs[] = {func1, func2};
? ? ……
? ? funcs[toFuncIdx(condition)]();
? ? ……
}

4.? 策略模式

//init.c
init()
{
? ? ……
? ? func = selector()
? ? ……
}
foo()
{
? ? ……
? ? func();
? ? ……
}

5. 設(shè)計(jì)一種DSL 語法描述它比如

def bhvname prototype {condition_i implement_i};
foo()
{
? ? ……
? ? bhvname();
? ? ……
}

方法5的好處是,隱藏了策略模式的實(shí)現(xiàn)細(xì)節(jié)缩挑。還可以再改進(jìn)但两,設(shè)計(jì)更完整的語法體系,只描述這個(gè)特定領(lǐng)域的業(yè)務(wù)本質(zhì)豹缀,將實(shí)現(xiàn)細(xì)節(jié)盡可能的隱藏叹俏。

講起道理來稠曼,大部分人至少在口頭承認(rèn)不應(yīng)該做霰彈式的改動(dòng),應(yīng)該封裝紧阔,應(yīng)該做一些設(shè)計(jì)。但具體coding的時(shí)候续担,方式1超級簡單啊擅耽。日積月累函數(shù)就長大了;有時(shí)候自己也看不過去了物遇,抽取一個(gè)函數(shù)局部改造一下秫筏;團(tuán)隊(duì)別的同學(xué)稍微有點(diǎn)追求,對某些改動(dòng)采用方法3或4來實(shí)現(xiàn)挎挖≌饩矗總之,怎么做的都有蕉朵,就一個(gè)具體的改動(dòng)而言崔涂,程序員總能找到一個(gè)理由說明自己為何以這種方式實(shí)現(xiàn)而非其它。代碼長得千奇百怪始衅。

大型項(xiàng)目冷蚂,這樣的問題后果尤為嚴(yán)重。

分析這個(gè)過程汛闸,核心問題是將決策點(diǎn)遺留到了最后一步蝙茶。coding的時(shí)候程序員才最終決策行為要怎么拆分,數(shù)據(jù)要怎么設(shè)計(jì)怎么封裝诸老,已經(jīng)最終采用的實(shí)現(xiàn)方式如何隆夯。架構(gòu)設(shè)計(jì),業(yè)務(wù)分析(BA)的原則和意圖沒辦法有效的傳遞下來别伏。最終coding的那個(gè)同學(xué)蹄衷,能力,眼界和職責(zé)都不足以讓他做出長期看最佳的設(shè)計(jì)和實(shí)現(xiàn)厘肮。他只關(guān)心這個(gè)需求盡快交付愧口,如何希望能對代碼演進(jìn)做出合適的判斷呢?

一個(gè)解是通過某種機(jī)制类茂,讓coding的人最終沒有選擇耍属,只能以某種(比較好的)方式來實(shí)現(xiàn)代碼托嚣,且并不需要大量知識(shí)和經(jīng)驗(yàn)來做判斷和選擇。

架構(gòu)師(組)應(yīng)該對系統(tǒng)做頂層設(shè)計(jì)厚骗,劃分業(yè)務(wù)邊界和抽取系統(tǒng)核心復(fù)雜度注益。在軟件設(shè)計(jì)方面的工作內(nèi)容包括定義

1. 系統(tǒng)的框架結(jié)構(gòu)(不是業(yè)務(wù)框架,而是分層結(jié)構(gòu)和核心元素)溯捆;

2. 行為和數(shù)據(jù)的種類丑搔,拆分的原則和必須標(biāo)明的屬性,

3. 根據(jù)這種拆分應(yīng)選擇的實(shí)現(xiàn)形式提揍;

4. 定義DSL和設(shè)計(jì)轉(zhuǎn)換器啤月,將1-3的內(nèi)容固化;

5. 抽取系統(tǒng)特有的基礎(chǔ)設(shè)施層劳跃。

6. 定義業(yè)務(wù)分析和開發(fā)的邊界和工作方式谎仲;

業(yè)務(wù)分析,將系統(tǒng)有效的分解刨仑,并定義開發(fā)所需要完成的元素郑诺。他們描述業(yè)務(wù)本質(zhì),一般并不關(guān)心最終代碼實(shí)現(xiàn)的形式杉武。

架構(gòu)組的工作在項(xiàng)目的早期和中期會(huì)非常繁重辙诞,架構(gòu)師輸出的并非文檔或PPT,而是非常具體的語法轻抱,轉(zhuǎn)換器飞涂,demo∑硭眩可以定義和約束后續(xù)的業(yè)務(wù)分析和開發(fā)较店。

我們談到資源前移時(shí),往往擔(dān)心前移了容燕,未必會(huì)帶來收益梁呈。對于注定長期運(yùn)行的大型項(xiàng)目,一方面要堅(jiān)定資源前移的信念蘸秘,反正一二十人投到故障解決中官卡,恐怕浩瀚的bug海上連一點(diǎn)漣漪都激不起來,不如放到前期設(shè)計(jì)和探索上去秘血,倒可能產(chǎn)生價(jià)值味抖;另一方面,總要給一套具體前移的方法灰粮,畫個(gè)餅說清楚如何更細(xì)致的做好設(shè)計(jì)。注意這個(gè)餅必須要能迭代交付忍坷。目標(biāo)宏大粘舟,夢想著上市敲鐘熔脂,卻拉不來一點(diǎn)投資,再報(bào)怨資本有眼無珠柑肴。投資要一輪一輪來霞揉,一方面看療效,另一方面資本被裹挾進(jìn)來了晰骑,花的越多适秩,資本自然會(huì)幫你一起想辦法,往往事就成了硕舆。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末秽荞,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子抚官,更是在濱河造成了極大的恐慌扬跋,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件凌节,死亡現(xiàn)場離奇詭異钦听,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)倍奢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進(jìn)店門朴上,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人卒煞,你說我怎么就攤上這事余指。” “怎么了跷坝?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵酵镜,是天一觀的道長。 經(jīng)常有香客問我柴钻,道長淮韭,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任贴届,我火速辦了婚禮靠粪,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘毫蚓。我一直安慰自己占键,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布元潘。 她就那樣靜靜地躺著畔乙,像睡著了一般。 火紅的嫁衣襯著肌膚如雪翩概。 梳的紋絲不亂的頭發(fā)上牲距,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天返咱,我揣著相機(jī)與錄音,去河邊找鬼牍鞠。 笑死咖摹,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的难述。 我是一名探鬼主播萤晴,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼胁后!你這毒婦竟也來了店读?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤择同,失蹤者是張志新(化名)和其女友劉穎两入,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體敲才,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡裹纳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了紧武。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片剃氧。...
    茶點(diǎn)故事閱讀 40,133評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖阻星,靈堂內(nèi)的尸體忽然破棺而出朋鞍,到底是詐尸還是另有隱情,我是刑警寧澤妥箕,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布滥酥,位于F島的核電站,受9級特大地震影響畦幢,放射性物質(zhì)發(fā)生泄漏坎吻。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一宇葱、第九天 我趴在偏房一處隱蔽的房頂上張望瘦真。 院中可真熱鬧,春花似錦黍瞧、人聲如沸诸尽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽您机。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間往产,已是汗流浹背被碗。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工某宪, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留仿村,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓兴喂,卻偏偏與公主長得像蔼囊,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子衣迷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評論 2 355

推薦閱讀更多精彩內(nèi)容