本文內(nèi)容來源于infoQ公眾號
墨菲定律
可能是最著名的定律之一,主要是因為它不僅適用于軟件開發(fā)跪妥。
該定律指出:如果事情可能出錯英上,它就會出錯。
第一個推論:那些有效的(代碼)矢棚,你可能反而沒有寫出來。
第二個推論:詛咒是唯一一門所有程序員都能流利說出來的語言府喳。
結(jié)論:電腦會按照你所寫的(代碼)去做幻妓,而不是按照你所想的去做。
防御性編程劫拢、版本控制肉津、末日場景(針對那些該死的僵尸服務(wù)器攻擊)、TDD舱沧、MDD妹沙,等等,這些都是針對這一定律的防御性實踐熟吏。
布魯克定律
這個定律指出:
為已經(jīng)延期的軟件項目增加人手只會讓項目延期得更厲害距糖。
如果一個項目出現(xiàn)了延期,只是簡單地增加人手很可能會帶來災(zāi)難性的后果牵寺。對編程效率悍引、軟件開發(fā)方法、技術(shù)架構(gòu)等因素進(jìn)行評審總是會帶來更好的結(jié)果帽氓。如果沒有趣斤,那說明霍夫施塔特定律也在起作用。
霍夫施塔特定律
這個定律指出:
即使你考慮到了霍夫施塔特定律黎休,項目的實際完成時間總是比預(yù)期的要長浓领。
這個“定律”是關(guān)于準(zhǔn)確預(yù)估完成復(fù)雜任務(wù)所需時間的難度。這個定律具有遞歸性势腮,反映了預(yù)估復(fù)雜項目的難度联贩,盡管你可能已經(jīng)做出了最大的努力,而且也知道任務(wù)的復(fù)雜性捎拯。
這就是為什么在進(jìn)行項目預(yù)估時必須要有一個緩沖區(qū)泪幌。
?康威定律
軟件的結(jié)構(gòu)反映了開發(fā)軟件的組織的結(jié)構(gòu)。
或者說得更清楚一點:
組織所設(shè)計的系統(tǒng)的結(jié)構(gòu)受限于組織的通信結(jié)構(gòu)。
很多組織是根據(jù)功能性技能來劃分團(tuán)隊的祸泪,所以會有前端開發(fā)團(tuán)隊吗浩、后端開發(fā)團(tuán)隊和數(shù)據(jù)庫開發(fā)團(tuán)隊。簡單地說浴滴,如果某人想要改變的東西屬于其他人拓萌,那么他就很難改變這些東西岁钓。
現(xiàn)在越來越多的組織根據(jù)有界上下文來組建團(tuán)隊升略,而微服務(wù)等架構(gòu)也在根據(jù)服務(wù)邊界而不是孤立的技術(shù)架構(gòu)分區(qū)來組建團(tuán)隊。
因此屡限,根據(jù)目標(biāo)軟件架構(gòu)來組建團(tuán)隊可以更容易實現(xiàn)軟件架構(gòu)品嚣,而這就是對抗康威法律的一種有效方式。
波斯托定律或魯棒性法則
保守輸出钧大,自由輸入翰撑。
Jon Postel 最初將它作為實現(xiàn)健壯的 TCP 的一個原則。這個原則也體現(xiàn)在 HTML 中啊央,HTML 的成敗可以歸因于它的很多屬性眶诈,但究竟 HTML 是成功的還是失敗的,不同的人有不同的看法瓜饥。
帕累托法則或 80/20 法則
對于很多現(xiàn)象逝撬,80%的后果源于 20%的原因。
80%的 bug 來自 20%的代碼乓土,這個說的就是帕累托法則宪潮。
還有人說,公司里 80%的工作是由 20%的員工完成的趣苏,問題是你并不清楚是哪 20%員工狡相。
彼得法則
這是一個相當(dāng)令人沮喪的定律,特別是如果你碰巧親身經(jīng)歷過食磕。
在一個等級制度中尽棕,每個員工都傾向于晉升到他無法勝任的職位。
基爾霍夫法則
在密碼學(xué)中彬伦,系統(tǒng)應(yīng)該是安全的萄金,即使系統(tǒng)的所有東西都是公開的——除了一小部分信息——秘鑰。
這是公鑰密碼學(xué)的主要法則媚朦。
萊納斯定律
這是以 Linux 之父 Linus Torvalds 的名字命名的氧敢,該定律指出:
如果有足夠多的眼睛,所有的 bug 都將無所遁形询张。
可以使用著名的《大教堂與集市》來描述這個定律孙乖,它解釋了兩種不同的自由軟件開發(fā)模型之間的對比:
大教堂模型——每個軟件發(fā)行版都提供源代碼,但發(fā)行版之間的代碼開發(fā)僅限于一組專有的軟件開發(fā)人員。
集市模型——代碼開發(fā)通過互聯(lián)網(wǎng)公開進(jìn)行唯袄。
結(jié)論弯屈?對源代碼進(jìn)行更廣泛的公開測試、評審和實驗恋拷,就會更快地發(fā)現(xiàn)各種形式的 bug资厉。
摩爾定律
單位成本的計算機(jī)算力每 24 個月翻一番。
最流行的版本是說:
集成電路上的晶體管數(shù)量大約每 18 個月會增加一倍蔬顾。
或者:
計算機(jī)的處理速度每兩年翻一番宴偿!
沃斯定律
軟件比硬件更容易變慢。
參考一下摩爾定律吧诀豁!
九九法則
前 90%的代碼占用了 10%的時間窄刘,其余的 10%代碼占用了剩下的 90%時間。
有人不同意這個的嗎舷胜?
克努特優(yōu)化法則
過早優(yōu)化是萬惡之源娩践。
先寫代碼,然后找出瓶頸烹骨,最后才修復(fù)翻伺!
諾維格定律
任何超過 50%滲透率的技術(shù)都不會再次翻倍(無論在多少個月內(nèi))
安迪-比爾定理
原話是 “Andy gives, Bill takes away.” 安迪指英特爾前CEO安迪·格魯夫,比爾指微軟前任CEO比爾·蓋茨沮焕,這句話的意思是吨岭,
硬件提高的性能,很快被軟件消耗掉了
反摩爾定律
是Google的前CEO埃里克·施密特提出的:如果你反過來看摩爾定律遇汞,
一個IT公司如果今天和18個月前賣掉同樣多的未妹、同樣的產(chǎn)品,它的營業(yè)額就要降一半空入。
IT界把它稱為反摩爾定律络它。