軟件開(kāi)發(fā)中的常見(jiàn)的15個(gè)定律和原則釋義及應(yīng)用

image

在圍繞軟件開(kāi)發(fā)的討論中冰单,幾乎不可能避免引用一兩條定律。

“這行不通灸促,因?yàn)椤甔法則’诫欠!” 你可能聽(tīng)過(guò)人們說(shuō)涵卵。或者“你不知道‘Y原則’嗎荒叼? 你是哪種軟件開(kāi)發(fā)人員轿偎?”。

有許多法律和原則可以引用被廓,其中大部分都基于真理坏晦。然而,盲目地使用像上面這樣的絕對(duì)陳述來(lái)應(yīng)用它們肯定會(huì)導(dǎo)致自負(fù)和失敗嫁乘。

本文列舉了一些可以應(yīng)用于軟件開(kāi)發(fā)的最流行的規(guī)律和原則昆婿。對(duì)于每條規(guī)律,我們將快速討論其主要命題亦渗,然后探討如何將其應(yīng)用于軟件開(kāi)發(fā)(也許何時(shí)不應(yīng)該)。

帕累托原則(80/20 規(guī)則)

解釋

帕累托原則指出汁尺,通常 80% 的結(jié)果來(lái)自 20% 的原因法精。數(shù)字 80 和 20 無(wú)論如何都不是精確的,但該原理的總體思路是結(jié)果通常分布不均痴突。

我們可以在生活的許多領(lǐng)域遵守這條規(guī)則搂蜓,例如:

  • 世界上最富有的 20% 的人創(chuàng)造了世界上 80% 的收入,
  • 80%的犯罪是由20%的罪犯所為
  • 自 2020 年以來(lái)辽装,我們知道 80% 的病毒傳播來(lái)自 20% 的受感染人群帮碰。

在軟件開(kāi)發(fā)中的應(yīng)用

我們可以從帕累托原則中獲得的主要好處是專注。它可以幫助我們專注于重要的事情(20%)拾积,而不是在不重要的事情(其他 80%)上浪費(fèi)時(shí)間和精力殉挽。不重要的事情對(duì)我們來(lái)說(shuō)似乎很重要,因?yàn)橛刑啵ǘ铱雌饋?lái)很緊急)拓巧。但最好的結(jié)果往往是通過(guò)專注于重要的少數(shù)來(lái)實(shí)現(xiàn)的斯碌。

在軟件開(kāi)發(fā)中,我們可以基于這個(gè)原則來(lái)專注于構(gòu)建正確的功能肛度,例如:

  • 專注于構(gòu)成產(chǎn)品價(jià)值 80% 的 20% 的產(chǎn)品功能傻唾,
  • 專注于導(dǎo)致 80% 用戶沮喪的 20% 錯(cuò)誤,
  • 專注于 80% 的產(chǎn)品功能需要 20% 的總時(shí)間來(lái)構(gòu)建承耿,
  • ......

只是問(wèn)“現(xiàn)在最重要的事情是什么冠骄?” 能夠幫助你完成下一個(gè)最重要的事情,而不是下一個(gè)最緊急的事情加袋。

順便說(shuō)一下凛辣,敏捷和 DevOps 等現(xiàn)代開(kāi)發(fā)方法有助于獲得這種關(guān)注!具有定期用戶反饋的快速迭代允許對(duì)重要事項(xiàng)進(jìn)行數(shù)據(jù)驅(qū)動(dòng)的決策职烧。諸如基于主干的帶有功能標(biāo)記的開(kāi)發(fā)(例如使用 LaunchDarkly)之類的實(shí)踐可以幫助軟件團(tuán)隊(duì)實(shí)現(xiàn)目標(biāo)蟀给。

破窗定理

解釋

一扇被打破的窗戶會(huì)招來(lái)惡意破壞蝙砌,所以用不了多久,所有的窗戶都被打破了跋理。

一般來(lái)說(shuō):混亂會(huì)帶來(lái)更多的混亂择克。

如果我們的環(huán)境是原始的,我們就會(huì)有動(dòng)力保持這種狀態(tài)前普。環(huán)境中的混亂越多肚邢,我們添加混亂的門(mén)檻就越低。畢竟已經(jīng)混亂了……誰(shuí)在乎我們是否再添加一點(diǎn)呢拭卿?

我們可以從這條規(guī)則中獲得的主要好處是我們應(yīng)該意識(shí)到我們周圍的混亂骡湖。如果人們習(xí)慣于它,不再關(guān)心它了峻厚,那么最好為混亂帶來(lái)一些秩序响蕴。

在軟件開(kāi)發(fā)中的應(yīng)用

在軟件開(kāi)發(fā)中,我們可以將其應(yīng)用于代碼質(zhì)量:我們引入代碼庫(kù)的每一種代碼異味都會(huì)降低我們添加更多代碼異味的門(mén)檻惠桃。我們應(yīng)該 [[開(kāi)始清理]] 并保持代碼庫(kù)干凈以避免這種情況發(fā)生浦夷。許多代碼庫(kù)如此難以理解和維護(hù)的原因是,破窗已經(jīng)悄然出現(xiàn)并且沒(méi)有足夠快地修復(fù)辜王。

我們也可以將這個(gè)原則應(yīng)用到測(cè)試覆蓋率上:一旦有一定數(shù)量的代碼進(jìn)入了未被測(cè)試覆蓋的代碼庫(kù)劈狐,就會(huì)添加更多未被覆蓋的代碼。這是保持 100% 代碼覆蓋率(應(yīng)該覆蓋的代碼的)的論據(jù)呐馆,因此我們可以在窗口破裂之前看到裂縫肥缔。

奧卡姆剃刀

解釋

剃刀哲學(xué)是一種原理,它通過(guò)消除(或“削除”)不可能的解釋來(lái)幫助解釋某些事情汹来。

奧卡姆剃刀指出续膳,如果有多個(gè)假設(shè),我們應(yīng)該選擇假設(shè)最少的假設(shè)(這很可能是解釋最簡(jiǎn)單的假設(shè))收班。

在軟件開(kāi)發(fā)中的應(yīng)用

我們可以在事件分析中應(yīng)用奧卡姆剃刀姑宽。您可能遇到過(guò)這樣的情況:用戶報(bào)告了您的應(yīng)用程序存在問(wèn)題,但您不知道導(dǎo)致問(wèn)題的原因闺阱。因此炮车,您搜索日志和指標(biāo),試圖找到根本原因酣溃。

下次用戶報(bào)告錯(cuò)誤時(shí)瘦穆,維護(hù)一個(gè)事件調(diào)查文檔。寫(xiě)下您對(duì)導(dǎo)致問(wèn)題的原因的假設(shè)赊豌。然后扛或,對(duì)于每個(gè)假設(shè),列出事實(shí)和假設(shè)碘饼。如果一個(gè)假設(shè)被證明是正確的熙兔,則將其標(biāo)記為事實(shí)悲伶。如果某個(gè)假設(shè)被證明是錯(cuò)誤的,請(qǐng)將其從文檔中刪除或?qū)⑵錁?biāo)記為錯(cuò)誤住涉。在任何時(shí)候麸锉,您都可以將時(shí)間集中在最可能的假設(shè)上,而不是浪費(fèi)時(shí)間尋找不相干的東西舆声。

達(dá)克效應(yīng)

解釋

鄧寧-克魯格效應(yīng)表明花沉,沒(méi)有經(jīng)驗(yàn)的人往往會(huì)高估自己的能力,而有經(jīng)驗(yàn)的人往往會(huì)低估自己的能力媳握。

如果你不擅長(zhǎng)某件事碱屁,你會(huì)認(rèn)為你擅長(zhǎng)它。如果你擅長(zhǎng)某事蛾找,你認(rèn)為你不擅長(zhǎng) - 這可能導(dǎo)致騙子綜合癥娩脾,這讓你非常懷疑自己的能力,以至于你在其他具有相似技能的人中感到不舒服 - 不必要地害怕被質(zhì)疑是一個(gè)騙子打毛。

在軟件開(kāi)發(fā)中的應(yīng)用

意識(shí)到這種認(rèn)知偏差已經(jīng)是朝著正確方向邁出的重要一步柿赊。它將幫助您更好地評(píng)估自己的技能,以便您可以尋求幫助隘冲,或克服自我懷疑并自己動(dòng)手闹瞧。

有助于消除達(dá)克效應(yīng)和騙子綜合癥的一種做法是結(jié)對(duì)或群體編程绑雄。你不是獨(dú)自工作展辞,沉浸在自我懷疑或優(yōu)越感中,而是與其他人密切合作万牺,邊工作邊交流思想罗珍、學(xué)習(xí)和教學(xué)。

不過(guò)脚粟,這只適用于安全的環(huán)境覆旱。在個(gè)人主義被美化的環(huán)境中,結(jié)對(duì)或群體編程會(huì)導(dǎo)致更多的自我懷疑或更多的優(yōu)越感妄想核无。

彼得原則

解釋

彼得原則指出扣唱,只要你成功,你就會(huì)得到晉升团南,直到你最終得到一份你不勝任的工作噪沙。由于您不再成功,您將不再獲得晉升吐根,這意味著您將生活在一份不會(huì)給您帶來(lái)滿足感或成功的工作中正歼,通常這種感覺(jué)將在一直伴隨在您的余生。

前景黯淡拷橘。

在軟件開(kāi)發(fā)中的應(yīng)用

在軟件開(kāi)發(fā)中局义,當(dāng)您將角色從開(kāi)發(fā)人員職業(yè)轉(zhuǎn)換為管理職業(yè)時(shí)喜爷,彼得原則通常適用。然而萄唇,成為一名優(yōu)秀的開(kāi)發(fā)人員并不一定意味著你是一名優(yōu)秀的經(jīng)理檩帐。或者穷绵,您可能是一名優(yōu)秀的經(jīng)理轿塔,但卻不能從經(jīng)理工作中獲得開(kāi)發(fā)工作中所能獲得的滿足感,這意味著您沒(méi)有全力以赴(這就是我的情況)仲墨。在任何情況下勾缭,你都很悲慘,在你面前的職業(yè)道路上看不到任何未來(lái)的發(fā)展目养。

在這種情況下俩由,退后一步,決定你想要什么樣的職業(yè)生涯癌蚁。然后幻梯,轉(zhuǎn)換角色(或公司,如果需要)以獲得您想要的角色努释。

帕金森定律

解釋

帕金森定律指出碘梢,工作總是會(huì)占據(jù)分配給它的時(shí)間。如果您的項(xiàng)目在兩周的截止日期伐蒂,則該項(xiàng)目將不會(huì)在此之前完成煞躬。 可能需要更長(zhǎng)的時(shí)間,是的逸邦,但絕不會(huì)少于我們?yōu)樗峙涞臅r(shí)間恩沛,因?yàn)槲覀冋谟貌槐匾墓ぷ骰蛲涎觼?lái)填補(bǔ)時(shí)間。

在軟件開(kāi)發(fā)中的應(yīng)用

帕金森定律的主要驅(qū)動(dòng)因素是:

  • 拖延癥(“截止日期太遠(yuǎn)了缕减,所以我現(xiàn)在不需要趕時(shí)間……”)雷客,還有
  • 范圍蔓延(“當(dāng)然,我們可以添加這個(gè)小功能桥狡,它不會(huì)花費(fèi)我們太多時(shí)間......”)搅裙。

為了戰(zhàn)勝拖延癥,我們可以把最后期限設(shè)置為幾天而不是幾周或內(nèi)個(gè)月裹芝。在接下來(lái)的 2-3 天內(nèi)需要做什么才能朝著目標(biāo)前進(jìn)部逮?一個(gè)(健康的!)截止日期可以給我們足夠的動(dòng)力局雄,讓我們不要陷入拖延癥的泥潭甥啄。

為了防止范圍蔓延,我們應(yīng)該非常清楚地知道我們想要通過(guò)項(xiàng)目實(shí)現(xiàn)什么炬搭。成功的衡量標(biāo)準(zhǔn)是什么蜈漓? 這個(gè)新功能是否會(huì)增強(qiáng)這些指標(biāo)穆桂?那么如果每個(gè)人都明白這項(xiàng)工作需要更長(zhǎng)的時(shí)間,我們應(yīng)該添加它融虽。如果新功能不符合使命享完,那就不用管它。

霍夫施塔特定律

解釋

霍夫施塔特定律指出:“即使考慮了霍夫施塔特定律有额,它所花的時(shí)間也比你預(yù)期的長(zhǎng)”般又。

即使您了解了這條法律,并增加了項(xiàng)目的時(shí)間分配巍佑,它仍然會(huì)比您預(yù)期的要長(zhǎng)茴迁。這與帕金森定律密切相關(guān),即工作總是會(huì)填滿分配給它的時(shí)間萤衰。只是霍夫施塔特定律說(shuō)它填充的時(shí)間超過(guò)了分配的時(shí)間堕义。

這條定律得到了心理學(xué)的支持。我們?nèi)菀追杆^的“計(jì)劃謬誤”脆栋,即在估算工作量時(shí)倦卖,我們通常不會(huì)考慮所有可用信息,即使我們認(rèn)為我們已經(jīng)考慮了椿争。我們的估計(jì)幾乎總是主觀的珊泳,很少是正確的七芭。

在軟件開(kāi)發(fā)中的應(yīng)用

在軟件開(kāi)發(fā)(以及任何其他基于項(xiàng)目的工作)中垒棋,我們?nèi)祟惖臉?lè)觀情緒發(fā)揮了很大作用爬范。評(píng)估幾乎總是過(guò)于樂(lè)觀。

為了減少霍夫施塔特定律的影響洋侨,我們可以嘗試盡可能客觀地進(jìn)行估計(jì)舍扰。

寫(xiě)下關(guān)于項(xiàng)目的假設(shè)和事實(shí)倦蚪。將每個(gè)項(xiàng)目標(biāo)記為假設(shè)或事實(shí)希坚,以使數(shù)據(jù)質(zhì)量可見(jiàn)并管理預(yù)期。

不要依賴直覺(jué)陵且,因?yàn)槊總€(gè)人的感受都不一樣裁僧。寫(xiě)下估算值,讓你的大腦思考它們慕购。將它們與其他人的估計(jì)進(jìn)行比較聊疲,然后討論差異。

即便如此沪悲,它仍然只是一個(gè)估計(jì)获洲,很可能不能反映現(xiàn)實(shí)。如果估算不是基于統(tǒng)計(jì)數(shù)據(jù)或其他歷史數(shù)據(jù)殿如,那么它的價(jià)值就非常低贡珊,因此與要求您估算的人一起管理預(yù)期總是好的——這總是會(huì)出錯(cuò)的最爬。如果你讓它盡可能客觀,它就會(huì)減少錯(cuò)誤门岔。

康威定律

解釋

康威定律指出爱致,一個(gè)組織創(chuàng)建的任何系統(tǒng)都與該組織的團(tuán)隊(duì)和溝通結(jié)構(gòu)相似。系統(tǒng)將在構(gòu)建系統(tǒng)的團(tuán)隊(duì)有接口的地方具備接口寒随。如果你有 10 個(gè)團(tuán)隊(duì)在一個(gè)系統(tǒng)上工作糠悯,你很可能會(huì)得到 10 個(gè)相互通信的子系統(tǒng)。

在軟件開(kāi)發(fā)中的應(yīng)用

我們可以應(yīng)用所謂的逆康威策略:創(chuàng)建最能支持我們想要構(gòu)建的系統(tǒng)架構(gòu)的組織結(jié)構(gòu)妻往。

沒(méi)有固定的團(tuán)隊(duì)結(jié)構(gòu)互艾,而是要有足夠的靈活性來(lái)創(chuàng)建和解散團(tuán)隊(duì),這對(duì)系統(tǒng)的當(dāng)前狀態(tài)是最好的讯泣。

墨菲定律

解釋

墨菲定律說(shuō)忘朝,任何可能出錯(cuò)的事情,都會(huì)出錯(cuò)判帮。它經(jīng)常在意外發(fā)生后被引用局嘁。

在軟件開(kāi)發(fā)中的應(yīng)用

軟件開(kāi)發(fā)是一個(gè)容易出錯(cuò)的職業(yè)。出錯(cuò)的主要來(lái)源是錯(cuò)誤晦墙。沒(méi)有任何一款軟件不存在漏洞或事故悦昵,從而考驗(yàn)測(cè)試用戶的耐心。

我們可以通過(guò)在日常軟件開(kāi)發(fā)實(shí)踐中養(yǎng)成減少錯(cuò)誤影響的習(xí)慣來(lái)抵御墨菲定律晌畅。我們無(wú)法完全避免錯(cuò)誤但指,但我們可以而且應(yīng)該減少它們對(duì)用戶的影響。

對(duì)抗墨菲定律最有用的做法是特征標(biāo)記抗楔。如果我們使用像 LaunchDarkly 這樣的功能標(biāo)記平臺(tái)棋凳,我們可以在功能標(biāo)記后面將更改部署到生產(chǎn)中。然后连躏,我們可以使用有針對(duì)性的推出來(lái)激活內(nèi)部 dogfooding 的標(biāo)志剩岳,然后為少量友好的 Beta 用戶激活它,最后將其發(fā)布給所有用戶入热。這樣拍棕,我們可以從越來(lái)越挑剔的用戶群體那里獲得關(guān)于變更的反饋。如果更改出錯(cuò)(并且在某些時(shí)候會(huì)出錯(cuò))影響就很小勺良,因?yàn)橹挥幸恍〔糠钟脩艚M會(huì)受到它的影響绰播。而且,該標(biāo)志可以快速關(guān)閉尚困。

布魯克定律

解釋

在經(jīng)典著作《人月神話》中蠢箩,弗雷德·布魯克 (Fred Brook) 有句名言:為延期的項(xiàng)目增加人力會(huì)使項(xiàng)目延期更多

盡管本書(shū)討論的是軟件項(xiàng)目,但它適用于大多數(shù)類型的項(xiàng)目谬泌,甚至是軟件開(kāi)發(fā)之外的項(xiàng)目示弓。

添加人員不會(huì)提高項(xiàng)目速度的原因是項(xiàng)目的通信開(kāi)銷隨著添加到項(xiàng)目中的每個(gè)人呈指數(shù)增長(zhǎng)。2 個(gè)人有 1 條通信路徑呵萨,5個(gè)人已經(jīng)有 5! = 120 條可能的通信路徑奏属。新人安頓下來(lái)并確定他們需要的溝通路徑需要時(shí)間,這就是為什么在項(xiàng)目中添加新人時(shí)潮峦,遲到的項(xiàng)目會(huì)更晚囱皿。

在軟件開(kāi)發(fā)中的應(yīng)用

很簡(jiǎn)單。改變截止日期忱嘹,而不是在已經(jīng)延期的項(xiàng)目中增加人力嘱腥。

對(duì)于向軟件項(xiàng)目中增加新人的期望要切合實(shí)際。將人員添加到項(xiàng)目中可能會(huì)在某個(gè)時(shí)候提高速度拘悦,但并非總是如此齿兔,當(dāng)然也不是立竿見(jiàn)影。人員和團(tuán)隊(duì)需要時(shí)間來(lái)適應(yīng)日常工作础米,而在某些時(shí)候分苇,工作無(wú)法充分并行化,因此增加更多人是沒(méi)有意義的屁桑。 仔細(xì)考慮一個(gè)新人應(yīng)該完成什么任務(wù)医寿,以及在將該人添加到項(xiàng)目中時(shí)您期望什么。

波斯特定律

解釋

波斯特定律也被稱為穩(wěn)健性原則蘑斧,它指出你應(yīng)該“在你所做的事情上保守靖秩,在你接受別人的事情上自由”。

換句話說(shuō)竖瘾,您可以接受多種不同形式的數(shù)據(jù)沟突,以使您的軟件盡可能靈活,但您在處理這些數(shù)據(jù)時(shí)應(yīng)該非常小心捕传,以免因無(wú)效或惡意數(shù)據(jù)而損害您的軟件惠拭。

在軟件開(kāi)發(fā)中的應(yīng)用

該定律源于軟件開(kāi)發(fā),因此非常適于直接使用乐横。

為了增強(qiáng)健壯性求橄,您的軟件與其他軟件或人之間的接口應(yīng)允許不同形式的輸入:

  • 為了向后兼容今野,新版本的接口應(yīng)該接受舊版本和新版本的數(shù)據(jù)葡公,
  • 為了更好的用戶體驗(yàn),UI 中的表單應(yīng)該接受不同格式的數(shù)據(jù)条霜,這樣用戶就不必?fù)?dān)心格式催什。

但是,如果我們?cè)敢饨邮懿煌袷降臄?shù)據(jù)宰睡,我們?cè)谔幚磉@些數(shù)據(jù)時(shí)就必須保守蒲凶。我們必須審查無(wú)效值气筋,并確保我們不會(huì)因?yàn)樵试S太多不同的格式而損害系統(tǒng)的安全性。SQL 注入是一種可能的攻擊旋圆,它是通過(guò)對(duì)用戶輸入過(guò)于寬松而啟用的宠默。

克希霍夫原理

解釋

克狭榍桑霍夫原理指出搀矫,加密系統(tǒng)應(yīng)該是安全的,即使它的方法是公知的刻肄。只有您用來(lái)解密某些東西的密鑰才需要是私有的瓤球。

在軟件開(kāi)發(fā)中的應(yīng)用

這很簡(jiǎn)單,真的敏弃。永遠(yuǎn)不要相信要求其方法是私有的加密系統(tǒng)卦羡。這被稱為“隱藏的安全”。像這樣的系統(tǒng)本質(zhì)上是不安全的麦到。一旦該方法向公眾公開(kāi)绿饵,它就容易受到攻擊。

相反瓶颠,依靠公開(kāi)審查和可信的對(duì)稱和非對(duì)稱加密系統(tǒng)蝴罪,這些系統(tǒng)是在可以公開(kāi)審查的開(kāi)源包中實(shí)現(xiàn)的。每個(gè)想知道他們內(nèi)部如何工作的人都可以查看代碼并驗(yàn)證它們是否安全步清。

萊納斯定律

解釋

在關(guān)于 Linux 內(nèi)核開(kāi)發(fā)的《教堂與集市》一書(shū)中要门,埃里克·雷蒙德 (Eric Raymond) 寫(xiě)道:“只要有足夠的眼光,所有 bug 都是微不足道的”廓啊。他將此稱為“萊納斯定律”以紀(jì)念萊納斯·托瓦茲欢搜。

意思是,如果很多人看代碼谴轮,那么相比很少人看代碼而言炒瘟,可以更好地揭露代碼中的錯(cuò)誤。

在軟件開(kāi)發(fā)中的應(yīng)用

如果您想擺脫 bug第步,請(qǐng)讓其他人查看您的代碼疮装。

源于開(kāi)源社區(qū)的一種常見(jiàn)做法是讓開(kāi)發(fā)人員提出包含代碼更改的拉取請(qǐng)求(pull request),然后讓其他開(kāi)發(fā)人員在將拉取請(qǐng)求合并到主分支之前審查該拉取請(qǐng)求粘都。這種做法也進(jìn)入了閉源開(kāi)發(fā)廓推,但根據(jù) Linus 定律,拉取請(qǐng)求在閉源環(huán)境(只有少數(shù)人查看它)中的作用不如在開(kāi)源環(huán)境中(其中 可能很多貢獻(xiàn)者都在看它)翩隧。

其他為代碼添加更多眼球的做法是結(jié)對(duì)編程和群體編程樊展。至少在閉源環(huán)境中,這些在避免錯(cuò)誤方面比拉取請(qǐng)求審查更有效,因?yàn)槊總€(gè)人都參與了代碼的初始階段专缠,這為每個(gè)人提供了更好的上下文來(lái)理解代碼和潛在的錯(cuò)誤雷酪。

沃斯定律

解釋

沃斯定律指出,軟件變慢的速度比硬件變快的速度要快涝婉。

在軟件開(kāi)發(fā)中的應(yīng)用

不要依賴強(qiáng)大的硬件來(lái)運(yùn)行性能不佳的代碼哥力。相反,代碼要加強(qiáng)性能優(yōu)化墩弯。

這必須與 [[軟件開(kāi)發(fā)定律#Knuth 的優(yōu)化原則]] 的格言相平衡省骂,該格言說(shuō)“過(guò)早的優(yōu)化是萬(wàn)惡之源”。要把精力花在為用戶構(gòu)建新功能上最住,而不是用于代碼的性能優(yōu)化上钞澳。

通常,這是一種平衡的藝術(shù)涨缚。

克努斯****優(yōu)化原則

解釋

唐納德·克努斯 (Donald Knuth) 在他的一部作品中寫(xiě)下了“過(guò)早優(yōu)化是萬(wàn)惡之源”這句話轧粟,這句話經(jīng)常斷章取意,并被用作根本不關(guān)心優(yōu)化代碼的借口脓魏。

在軟件開(kāi)發(fā)中的應(yīng)用

根據(jù)克努斯定律兰吟,我們不應(yīng)該浪費(fèi)精力過(guò)早地優(yōu)化代碼。然而茂翔,根據(jù)沃斯定律混蔼,我們也不應(yīng)該依賴硬件足夠快來(lái)執(zhí)行未經(jīng)優(yōu)化的代碼。

最后珊燎,這就是我從這些原則中得出的結(jié)論:

  • 優(yōu)化可以輕松完成且不需要太多努力的代碼:例如惭嚣,編寫(xiě)幾行額外代碼以避免經(jīng)歷可能有很多項(xiàng)的循環(huán)
  • 優(yōu)化一直在執(zhí)行的代碼路徑中的代碼
  • 除此之外,不要在優(yōu)化代碼上花太多精力悔政,除非你已經(jīng)確定了一個(gè)性能瓶頸晚吞。

保持懷疑

定律和原則是好的。它允許我們從某個(gè)角度評(píng)估某些情況谋国,如果沒(méi)有它們槽地,我們可能不會(huì)有這些情況。

然而芦瘾,盲目地將法律和原則應(yīng)用于每種情況是行不通的捌蚊。每一種情況都會(huì)帶來(lái)微妙的變化,這可能意味著某個(gè)原則不能或不應(yīng)該被應(yīng)用近弟。

對(duì)你遇到的原則和定律保持懷疑缅糟。世界并不是非黑即白的。


本文譯自: Laws and Principles of Software Development - Reflectoring

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末藐吮,一起剝皮案震驚了整個(gè)濱河市溺拱,隨后出現(xiàn)的幾起案子逃贝,更是在濱河造成了極大的恐慌谣辞,老刑警劉巖迫摔,帶你破解...
    沈念sama閱讀 221,695評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異泥从,居然都是意外死亡句占,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)躯嫉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)纱烘,“玉大人,你說(shuō)我怎么就攤上這事祈餐±奚叮” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,130評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵帆阳,是天一觀的道長(zhǎng)哺壶。 經(jīng)常有香客問(wèn)我,道長(zhǎng)蜒谤,這世上最難降的妖魔是什么山宾? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,648評(píng)論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮鳍徽,結(jié)果婚禮上资锰,老公的妹妹穿的比我還像新娘。我一直安慰自己阶祭,他們只是感情好绷杜,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,655評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著濒募,像睡著了一般接剩。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上萨咳,一...
    開(kāi)封第一講書(shū)人閱讀 52,268評(píng)論 1 309
  • 那天懊缺,我揣著相機(jī)與錄音,去河邊找鬼培他。 笑死鹃两,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的舀凛。 我是一名探鬼主播俊扳,決...
    沈念sama閱讀 40,835評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼猛遍!你這毒婦竟也來(lái)了馋记?” 一聲冷哼從身側(cè)響起号坡,我...
    開(kāi)封第一講書(shū)人閱讀 39,740評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎梯醒,沒(méi)想到半個(gè)月后宽堆,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,286評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡茸习,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,375評(píng)論 3 340
  • 正文 我和宋清朗相戀三年畜隶,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片号胚。...
    茶點(diǎn)故事閱讀 40,505評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡籽慢,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出猫胁,到底是詐尸還是另有隱情箱亿,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布弃秆,位于F島的核電站届惋,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏驾茴。R本人自食惡果不足惜盼樟,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,873評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望锈至。 院中可真熱鬧晨缴,春花似錦、人聲如沸峡捡。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,357評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)们拙。三九已至稍途,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間砚婆,已是汗流浹背械拍。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,466評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留装盯,地道東北人坷虑。 一個(gè)月前我還...
    沈念sama閱讀 48,921評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像埂奈,于是被迫代替她去往敵國(guó)和親迄损。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,515評(píng)論 2 359

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