當(dāng)前位置:聯(lián)升科技 > 技術(shù)資訊 > 開發(fā)技術(shù) >

開發(fā)者必備!Github上1.6W星的「黑魔法」,早知道就不會(huì)禿頭了

2020-10-20    作者:佚名    來源:新智元    閱讀:
當(dāng)程序員談?wù)撻_發(fā)設(shè)計(jì)時(shí),常常會(huì)聊到非常多的定律,而Github上的一個(gè)名為「hacker-laws」的倉庫收錄了一些最常見的定律、原則等,獲得了16.3k的Star。
還記得所有AI教程必提的「奧卡姆剃刀原則」嗎?即:如無必要,勿增實(shí)體。這條原則也被收藏,還有一些不太常見的費(fèi)茨法則、蓋爾定律、康威定律等,都被一一收入囊中。
寫代碼累了困了?這些法則讓工作事半功倍
90-9-1法則(1%法則)
90-9-1 法則表明,在諸如維基這樣的互聯(lián)網(wǎng)社區(qū)中,90% 的用戶只看內(nèi)容并不參與互動(dòng),9% 的用戶會(huì)參與討論,而只有 1% 的用戶會(huì)創(chuàng)造內(nèi)容。
現(xiàn)實(shí)世界的例子:2014 年,對四個(gè)健康的數(shù)字社交網(wǎng)絡(luò)進(jìn)行的一項(xiàng)研究發(fā)現(xiàn),排名前 1% 的人創(chuàng)造了 73% 的帖子,緊隨其后的 9% 平均占 25%,其余的 90% 的人平均占 2%。
類似的,帕累托法則也指出:生活中大多數(shù)事情不是均勻分布的。這個(gè)原則也被稱為二八法則,重要的少數(shù)法則和因素稀疏原則。
技術(shù)成熟度曲線法則
技術(shù)成熟度曲線是高德納咨詢公司對技術(shù)最初興起和發(fā)展的視覺展現(xiàn)。一圖勝千言:
簡而言之,這個(gè)曲線表明,新技術(shù)及其潛在影響通常會(huì)引發(fā)一輪浪潮。團(tuán)隊(duì)快速使用這些新技術(shù),但有時(shí)會(huì)對結(jié)果感到失望,這可能是因?yàn)樵摷夹g(shù)還不夠成熟,或者現(xiàn)實(shí)應(yīng)用還沒有完全實(shí)現(xiàn)。
經(jīng)過一段時(shí)間后,技術(shù)的能力提高了,使用它的實(shí)際機(jī)會(huì)會(huì)增加,最終團(tuán)隊(duì)也可以提高工作效率。
羅伊·阿馬拉簡潔地總結(jié)了這一點(diǎn):我們傾向于高估技術(shù)短期內(nèi)的影響,并低估其長期效應(yīng)。
破窗效應(yīng)
在破窗理論中認(rèn)為,一些明顯的犯罪跡象(或缺乏環(huán)保意識)會(huì)導(dǎo)致進(jìn)一步的、更嚴(yán)重的犯罪(或環(huán)境的進(jìn)一步惡化)。
破窗理論已應(yīng)用于軟件開發(fā)中,它表明劣質(zhì)代碼可能會(huì)影響后續(xù)優(yōu)化的效率,從而進(jìn)一步造成代碼劣化;隨著時(shí)間的推移,這種效應(yīng)將會(huì)導(dǎo)致代碼質(zhì)量大幅下降。
沒那么常見的法則,但也暗藏工作秘訣
阿姆達(dá)爾定律
阿姆達(dá)爾定律是一個(gè)顯示計(jì)算任務(wù)潛在加速能力的公式。這種能力可以通過增加系統(tǒng)資源來實(shí)現(xiàn),通常用于并行計(jì)算中。
它可以預(yù)測增加處理器數(shù)量的實(shí)際好處,然而增加處理器數(shù)量會(huì)受到程序并行性的限制。
舉例說明:如果程序由兩部分組成,A部分必須由單個(gè)處理器執(zhí)行,B部分可以并行運(yùn)行。那么向執(zhí)行程序的系統(tǒng)添加多個(gè)處理器只能獲得有限的好處。
它可以極大地提升部分 B 的運(yùn)行速度,但部分 A 的運(yùn)行速度將保持不變。
下圖展示了一些運(yùn)行速度的提升潛能的例子:
可以看出,50% 并行化的程序在使用大于 10 個(gè)處理單元之后的速度提升收效甚微,而 95% 并行化的程序在使用超過一千個(gè)處理單元之后仍然可以顯著提升速度。
隨著摩爾定律逐漸失效,單個(gè)處理器的速度增加緩慢,并行化是提高性能的關(guān)鍵。
圖形編程是一個(gè)極好的例子,現(xiàn)代著色器可以并行渲染單個(gè)像素或片段。這也是現(xiàn)代顯卡通常具有數(shù)千個(gè)處理核心(GPU 單元)的原因。
德墨忒爾定律
得墨忒耳定律又稱最少知識原則,是一條與面向?qū)ο笳Z言有關(guān)的軟件設(shè)計(jì)原則。
該定律表明,軟件的一個(gè)單元應(yīng)該只與其直接合作者交談。
比如對象 A 引用了對象 B,對象 B 引用了對象 C,則 A 可以直接調(diào)用 B 的方法,但不應(yīng)直接調(diào)用 C 的方法。所以如果 C 有一個(gè) dothing() 的方法,A 不應(yīng)該直接調(diào)用,而是用 B.getC().doThis()。
遵循這一定律可以限制代碼更改的范圍,使其以后更容易維護(hù)、更安全。
坎寧漢姆定律
在網(wǎng)絡(luò)上想得到正確答案的最好方法不是提問題,而是發(fā)布一個(gè)錯(cuò)誤的答案。
除了以上的這些法則,該倉庫還給出了很多的原則。
職場相關(guān)原則
死海效應(yīng)原則:在任何一個(gè)組織中,工程師的技能、才華和效能往往與他們在公司的時(shí)間呈反比。
能力強(qiáng)的人更有可能離開,能力差的人反而會(huì)留下。
呆伯特原則:公司會(huì)傾向于系統(tǒng)地將工作能力差的員工提升到管理層,以使他們脫離工作流程。技術(shù)相關(guān)的原則:
單一功能原則:每個(gè)模塊或者類只應(yīng)該有一項(xiàng)功能。
開閉原則:實(shí)體應(yīng)開放擴(kuò)展并關(guān)閉修改。
里氏替換原則:可以在不破壞系統(tǒng)的情況下,用子類型替換類型。
接口隔離原則:不應(yīng)強(qiáng)制任何客戶端依賴于它不使用的方法。
依賴翻轉(zhuǎn)原則:高級模塊不應(yīng)該依賴于低級實(shí)現(xiàn)。
還有一些具有哲學(xué)意味的原則:
魯棒性原則:在自己所做的事情上要保守, 在接受別人的事情上要自由。
你不需要它法則:只有當(dāng)你需要某些東西的時(shí)候,才去實(shí)現(xiàn)它們,而不是在你預(yù)見的時(shí)候。
KISS原則:保持簡單和直白。
還有很多的法則和原則沒有一一指出,需要的小伙伴請點(diǎn)擊下面的鏈接打開查看。
參考鏈接:
https://github.com/nusr/hacker-laws-zh


相關(guān)文章

我們很樂意傾聽您的聲音!
即刻與我們?nèi)〉寐?lián)絡(luò)
成為日后肩并肩合作的伙伴。

行業(yè)資訊

聯(lián)系我們

13387904606

地址:新余市仙女湖區(qū)仙女湖大道萬商紅A2棟

手機(jī):13755589003
QQ:122322500
微信號:13755589003

江西新余網(wǎng)站設(shè)計(jì)_小程序制作_OA系統(tǒng)開發(fā)_企業(yè)ERP管理系統(tǒng)_app開發(fā)-新余聯(lián)升網(wǎng)絡(luò)科技有限公司 贛ICP備19013599號-1   贛公網(wǎng)安備 36050202000267號   

微信二維碼