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

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

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


    相關(guān)文章

    我們很樂(lè )意傾聽(tīng)您的聲音!
    即刻與我們取得聯(lián)絡(luò )
    成為日后肩并肩合作的伙伴。

    行業(yè)資訊

    聯(lián)系我們

    13387904606

    地址:新余市仙女湖區仙女湖大道萬(wàn)商紅A2棟

    手機:13755589003
    QQ:122322500
    微信號:13755589003

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

    微信二維碼
    色噜噜狠狠一区二区三区果冻|欧美亚洲日本国产一区|国产精品无码在线观看|午夜视频在线观看一区|日韩少妇一区二区无码|伊人亚洲日韩欧美一区二区|国产在线码观看清码视频