漫談項(xiàng)目設(shè)計(jì)&重構(gòu)&性能優(yōu)化

重構(gòu)的好處:

重構(gòu)能夠改進(jìn)軟件設(shè)計(jì)窑多,隨著項(xiàng)目需求的變更仍稀,項(xiàng)目體積的變大早已與最初的設(shè)計(jì)大相徑庭,代碼結(jié)構(gòu)變得凌亂埂息、復(fù)雜技潘,如果不進(jìn)行重構(gòu),則很難添加新的功能千康。

1享幽、使項(xiàng)目代碼更容易理解

很多情況下是由于項(xiàng)目趕進(jìn)度和不注重質(zhì)量導(dǎo)致的。那么通過重構(gòu)可以幫助代碼維持自己該有的形態(tài)拾弃。

項(xiàng)目開始的時(shí)候值桩,設(shè)計(jì)并沒有考慮到方方面面,因?yàn)槟悴豢赡茴A(yù)測(cè)到后面的所有需求豪椿。同時(shí)你也不能把每個(gè)功能都做預(yù)留奔坟,做成靈活可變,如果最后你預(yù)測(cè)失敗搭盾,那么意味著你所做的靈活性是多余的蛀蜜,浪費(fèi)了時(shí)間且增加了開發(fā)難度。這種情況叫做過度設(shè)計(jì)增蹭。

為了避免這樣的情況,項(xiàng)目之初只做必要的設(shè)計(jì)磅摹。隨著項(xiàng)目的變更滋迈,軟件結(jié)構(gòu)需要重新調(diào)整。通過重構(gòu)可以改良最初的設(shè)計(jì)户誓,使得項(xiàng)目符合最新的需求饼灿。

經(jīng)驗(yàn)告訴我們,當(dāng)下只管建造可運(yùn)行的最簡(jiǎn)化的系統(tǒng)帝美,至于靈活而復(fù)雜的設(shè)計(jì)碍彭,多數(shù)時(shí)候你都不會(huì)需要它。

2、幫助你找到BUG

重構(gòu)需要你深入代碼結(jié)構(gòu)庇忌,這樣使得你搞清楚程序結(jié)構(gòu)的同時(shí)舞箍,找出隱含的BUG。

3皆疹、重構(gòu)提高編碼速度

重構(gòu)后的代碼疏橄,代碼結(jié)構(gòu)被改良,良好的設(shè)計(jì)能夠加快開發(fā)速度略就。

重構(gòu)與性能優(yōu)化:

重構(gòu)是為了讓代碼易于理解捎迫,你常會(huì)做出一些使程序運(yùn)行變慢的修改。

重構(gòu)的過程中表牢,不要同時(shí)最求優(yōu)化性能窄绒。特別當(dāng)重構(gòu)代碼優(yōu)化與性能優(yōu)化兩者出現(xiàn)沖突的時(shí)候

通常情況下重構(gòu)會(huì)使代碼優(yōu)雅,性能優(yōu)化為了提高性能不得不采用一些技巧來實(shí)現(xiàn)從而有可能使得代碼變得復(fù)雜

而且崔兴,有時(shí)性能好壞不是單憑感覺出來彰导,多了幾個(gè)for循環(huán)帶來的性能下降通常沒有你想象中那么大,一定要量化恼布,能測(cè)出數(shù)據(jù)來證明是否由此導(dǎo)致的性能下降螺戳。

此時(shí)要注意我們的目的是重構(gòu),重構(gòu)的手法可能會(huì)使得軟件性能有所下降折汞,也應(yīng)該往下執(zhí)行倔幼。

性能優(yōu)化屬于另外一個(gè)關(guān)注點(diǎn),等重構(gòu)完成后爽待,項(xiàng)目設(shè)計(jì)良好损同,此時(shí)再去做性能優(yōu)化也更容易。

若僅憑感覺來決定說為了提高性能而放棄重構(gòu)代碼鸟款,這是一個(gè)錯(cuò)誤的想法膏燃。

正確的做法是:

首先寫出可運(yùn)行的軟件,然后調(diào)整它以求獲得更快的速度何什。

如果當(dāng)你在開發(fā)的過程中時(shí)刻追求軟件的性能组哩,首先會(huì)導(dǎo)致開發(fā)難度增加、開發(fā)時(shí)間變長(zhǎng)处渣。同時(shí)大多數(shù)情況下來分析伶贰,你會(huì)發(fā)現(xiàn)你花費(fèi)的大部分時(shí)間都是在調(diào)整一些小部分的代碼上以追求性能的增加,實(shí)際上這小部分代碼最終被執(zhí)行的概率沒有你想象中的那么頻繁罐栈。這意味著你大部分時(shí)間做的是無用功黍衙。

你所做的性能優(yōu)化是你臆想出來的。

只有當(dāng)你做出可運(yùn)行的項(xiàng)目荠诬,并且對(duì)整個(gè)項(xiàng)目結(jié)構(gòu)了解清楚之后琅翻,知道性能瓶頸在哪位仁,有針對(duì)性的進(jìn)行優(yōu)化,通常會(huì)有意想不到的收獲方椎。

何時(shí)重構(gòu):

重構(gòu)可以隨時(shí)進(jìn)行聂抢,不一定要專門騰出時(shí)間來進(jìn)行重構(gòu)。(當(dāng)然辩尊,你也可以這么做涛浙,前提是團(tuán)隊(duì)的意見是一致,并征得老板同意摄欲,說服老板重構(gòu)能夠改良設(shè)計(jì)不僅代碼質(zhì)量提高同時(shí)加快開發(fā)速度轿亮。)

但注意一定要將重構(gòu)和添加功能的兩種狀態(tài)進(jìn)行劃分,在重構(gòu)的時(shí)候不要添加功能胸墙。否則你不知道BUG是重構(gòu)時(shí)導(dǎo)致還是添加功能時(shí)導(dǎo)致我注,增加重構(gòu)的難度齿诞。

這兩種狀態(tài)可以來回切換尼变,但不能重疊。

何時(shí)不該重構(gòu):

項(xiàng)目已近最后期限致份,因?yàn)橐呀?jīng)沒有足夠的時(shí)間重構(gòu)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末智袭,一起剝皮案震驚了整個(gè)濱河市奔缠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌吼野,老刑警劉巖校哎,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異瞳步,居然都是意外死亡闷哆,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門单起,熙熙樓的掌柜王于貴愁眉苦臉地迎上來抱怔,“玉大人,你說我怎么就攤上這事嘀倒∏簦” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵测蘑,是天一觀的道長(zhǎng)灌危。 經(jīng)常有香客問我,道長(zhǎng)帮寻,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任赠摇,我火速辦了婚禮固逗,結(jié)果婚禮上浅蚪,老公的妹妹穿的比我還像新娘。我一直安慰自己烫罩,他們只是感情好惜傲,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著贝攒,像睡著了一般盗誊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上隘弊,一...
    開封第一講書人閱讀 51,125評(píng)論 1 297
  • 那天哈踱,我揣著相機(jī)與錄音,去河邊找鬼梨熙。 笑死开镣,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的咽扇。 我是一名探鬼主播邪财,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼质欲!你這毒婦竟也來了树埠?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤嘶伟,失蹤者是張志新(化名)和其女友劉穎怎憋,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體奋早,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡盛霎,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了耽装。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片愤炸。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖掉奄,靈堂內(nèi)的尸體忽然破棺而出规个,到底是詐尸還是另有隱情,我是刑警寧澤姓建,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布诞仓,位于F島的核電站,受9級(jí)特大地震影響速兔,放射性物質(zhì)發(fā)生泄漏墅拭。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一涣狗、第九天 我趴在偏房一處隱蔽的房頂上張望谍婉。 院中可真熱鬧舒憾,春花似錦、人聲如沸穗熬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽唤蔗。三九已至探遵,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間妓柜,已是汗流浹背箱季。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留领虹,地道東北人规哪。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像塌衰,于是被迫代替她去往敵國和親诉稍。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

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

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,071評(píng)論 25 707
  • 1最疆、hibernate是一個(gè)開放源代碼的對(duì)象關(guān)系映射框架杯巨,它對(duì)JDBC進(jìn)行了非常輕量級(jí)的對(duì)象封裝,使得java程序...
    StoneHell閱讀 290評(píng)論 0 0
  • 三年后的自己: 你還好嗎努酸?這時(shí)的你是否已然踏出了新的步伐服爷,呼吸著新鮮的空氣了呢?是否做著自己想做的事情获诈,過...
    消失了的三年半閱讀 905評(píng)論 0 3
  • 星期二 我是102號(hào)星寶寶舔涎,正在參加小牛媽媽日記星球21天蛻變之旅課程訓(xùn)練笼踩。這是我第140篇原創(chuàng)日記。相信水滴穿石...
    ABC輔導(dǎo)歐陽閱讀 651評(píng)論 2 0