国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

[譯]每位開發(fā)者都應(yīng)該知道SOLID原則

go4it / 2995人閱讀

摘要:開閉原則軟件實(shí)體類,模塊,函數(shù)應(yīng)該是可以擴(kuò)展的,而不是修改。函數(shù)并不符合開閉原則,因?yàn)橐坏┯行聞游锍霈F(xiàn),它需要修改代碼。

By Chidume Nnamdi | Oct 9, 2018

原文

面向?qū)ο蟮木幊填愋蜑檐浖_發(fā)帶來了新的設(shè)計(jì)。

這使開發(fā)人員能夠在一個(gè)類中組合具有相同目的/功能的數(shù)據(jù),來實(shí)現(xiàn)多帶帶的一個(gè)功能,不必關(guān)心整個(gè)應(yīng)用程序如何。

但是,這種面向?qū)ο蟮木幊踢€是會讓開發(fā)者困惑或者寫出來的程序可維護(hù)性不好。

為此,Robert C.Martin指定了五項(xiàng)指導(dǎo)方針。遵循這五項(xiàng)指導(dǎo)方針能讓開發(fā)人員輕松寫出可讀性和可維護(hù)性高的程序

這五個(gè)原則被稱為S.O.L.I.D原則(首字母縮寫詞由Michael Feathers派生)。

S:單一責(zé)任原則

O:開閉原則

L:里式替換

I:接口隔離

D:依賴反轉(zhuǎn)

我們在下文會詳細(xì)討論它們

筆記:本文的大多數(shù)例子可能不適合實(shí)際應(yīng)用或不滿足實(shí)際需求。這一切都取決于您自己的設(shè)計(jì)和用例。這都不重要,關(guān)鍵是您要了解明白這五項(xiàng)原則。

提示:SOLID原則旨在用于構(gòu)建模塊化、封裝、可擴(kuò)展和可組合組件的軟件。Bit是一個(gè)幫助你踐行這些原則的強(qiáng)大工具:它可以幫助您在團(tuán)隊(duì)中大規(guī)模地在不同項(xiàng)目中輕松隔離,共享和管理這些組件.來試試吧。

Bit

你也可以在這里學(xué)習(xí)更多關(guān)于SOLID原則和Bit的東西。

?單一責(zé)任原則
“......你有一份工作” - Loki來到雷神的Skurge:Ragnarok

一個(gè)類只實(shí)現(xiàn)一個(gè)功能

一個(gè)類應(yīng)該只負(fù)責(zé)一件事。如果一個(gè)類負(fù)責(zé)超過一件事,就會變得耦合。改功能的時(shí)候會影響另外一個(gè)功能。

筆記:該原則不僅適用于類,還適用于軟件組件和微服務(wù)。

舉個(gè)例子,考慮這個(gè)設(shè)計(jì):

class Animal {
    constructor(name: string){ }
    getAnimalName() { }
    saveAnimal(a: Animal) { }
}

這個(gè)Animal類違反了SRP(單一責(zé)任原則)

怎么違反了呢?

SRP明確說明了類只能完成一項(xiàng)功能,這里,我們把兩個(gè)功能都加上去了:animal數(shù)據(jù)管理和animal屬性管理。構(gòu)造函數(shù)和getAnimalName方法管理Animal的屬性,然而,saveAnimal方法管理Animal的數(shù)據(jù)存儲。

這種設(shè)計(jì)會給以后的開發(fā)維護(hù)帶來什么問題?

如果app的更改會影響數(shù)據(jù)庫的操作。必須會觸及并重新編譯使用Animal屬性的類以使app的更改生效。

你會發(fā)現(xiàn)這樣的系統(tǒng)缺乏彈性,像多米諾骨牌一樣,更改一處會影響其他所有的地方。

讓我們遵循SRP原則,我們創(chuàng)建了另外一個(gè)用于數(shù)據(jù)操作的類:

class Animal {
    constructor(name: string){ }
    getAnimalName() { }
}
class AnimalDB {
    getAnimal(a: Animal) { }
    saveAnimal(a: Animal) { }
}

“我們在設(shè)計(jì)類時(shí),我們應(yīng)該把相關(guān)的功能放在一起,所以當(dāng)他們需要發(fā)生改變時(shí),他們會因?yàn)橥瑯拥脑蚨淖儭H绻且驗(yàn)椴煌脑蛐枰淖兯鼈儯覀儜?yīng)該嘗試把它們分開。” - Steven Fenton

遵循這些原則讓我們的app變得高內(nèi)聚。

開閉原則
軟件實(shí)體(類,模塊,函數(shù))應(yīng)該是可以擴(kuò)展的,而不是修改。

繼續(xù)看我們的Animal類

class Animal {
    constructor(name: string){ }
    getAnimalName() { }
}

我們想要遍歷動物列表并且設(shè)置它們的聲音。

//...
const animals: Array = [
    new Animal("lion"),
    new Animal("mouse")
];
function AnimalSound(a: Array) {
    for(int i = 0; i <= a.length; i++) {
        if(a[i].name == "lion")
            return "roar";
        if(a[i].name == "mouse")
            return "squeak";
    }
}
AnimalSound(animals);

AnimalSound函數(shù)并不符合開閉原則,因?yàn)橐坏┯行聞游锍霈F(xiàn),它需要修改代碼。

如果我們加一條蛇進(jìn)去,

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/98809.html

相關(guān)文章

  • 前端思考 - 收藏集 - 掘金

    摘要:并嘗試用為什么你統(tǒng)計(jì)的方式是錯(cuò)的掘金翻譯自工程師的文章。正如你期望的,文中的前端開發(fā)單一職責(zé)原則前端掘金單一職責(zé)原則又稱單一功能原則,面向?qū)ο笪鍌€(gè)基本原則之一。 單頁式應(yīng)用性能優(yōu)化 - 首屏數(shù)據(jù)漸進(jìn)式預(yù)加載 - 前端 - 掘金前言 針對首頁和部分頁面打開速度慢的問題,我們開始對單頁式應(yīng)用性能進(jìn)行優(yōu)化。本文介紹其中一個(gè)方案:基于 HTTP Chunk 的首屏數(shù)據(jù)漸進(jìn)式預(yù)加載方案,該方案總...

    LinkedME2016 評論0 收藏0
  • []為什么前端初學(xué)者必須要明白發(fā)布訂閱模式

    摘要:應(yīng)用需要正確并合適響應(yīng)各種網(wǎng)絡(luò)請求用戶操作計(jì)時(shí)事件和各種延時(shí)動作。好了,我們的新流程圖畫出來了提示城市名稱查找不是很復(fù)雜,谷歌地圖為此提供了非常簡單的。形象點(diǎn)表示就是,函數(shù)是一等公民。 By Hubert Zub | Oct 3, 2018 原文 當(dāng)你將關(guān)注點(diǎn)從樣式,美學(xué)和網(wǎng)格系統(tǒng)轉(zhuǎn)移到邏輯,框架和編寫JavaScript代碼時(shí)。一切都開始了,你會發(fā)現(xiàn)你處于你的web開發(fā)歷程中最激動人...

    miqt 評論0 收藏0
  • 4分鐘學(xué)會網(wǎng)頁樣式[]

    摘要:編寫的內(nèi)容,就像你目前正在閱讀的文章,組成了超過的網(wǎng)頁。為這個(gè)文本內(nèi)容添加樣式將有一個(gè)很長的路要走。添加讓我們借這個(gè)機(jī)會,來提高文本格調(diào)。瞧按照網(wǎng)頁設(shè)計(jì)的基本原則,我們在短短幾分鐘內(nèi)設(shè)計(jì)了一個(gè)像樣的頁面。 showImg(https://segmentfault.com/img/bVCrlL); 比方說,你想要在自己網(wǎng)站上分享一個(gè)產(chǎn)品,或者是一個(gè)作品集,又或者僅僅只是一個(gè)靈感。在你發(fā)布...

    gaomysion 評論0 收藏0
  • 4分鐘學(xué)會網(wǎng)頁樣式[]

    摘要:編寫的內(nèi)容,就像你目前正在閱讀的文章,組成了超過的網(wǎng)頁。為這個(gè)文本內(nèi)容添加樣式將有一個(gè)很長的路要走。添加讓我們借這個(gè)機(jī)會,來提高文本格調(diào)。瞧按照網(wǎng)頁設(shè)計(jì)的基本原則,我們在短短幾分鐘內(nèi)設(shè)計(jì)了一個(gè)像樣的頁面。 showImg(https://segmentfault.com/img/bVCrlL); 比方說,你想要在自己網(wǎng)站上分享一個(gè)產(chǎn)品,或者是一個(gè)作品集,又或者僅僅只是一個(gè)靈感。在你發(fā)布...

    Kylin_Mountain 評論0 收藏0
  • ELSE 技術(shù)周刊(2017.10.16期)

    摘要:前端中的計(jì)算機(jī)領(lǐng)域的通常認(rèn)為起源于。并對其主要內(nèi)容作了自己的解讀。搬到另一個(gè)地區(qū)會導(dǎo)致名氣降低。年度報(bào)告,年最受歡迎的編程語言年上最流行的種編程語言及前十最火熱的項(xiàng)目排行榜,分別由及登頂。技術(shù)周刊由小組出品,匯聚一周好文章,周刊原文。 showImg(https://segmentfault.com/img/bVWHC4?w=1000&h=710); 本期推薦 反擊爬蟲,前端工程師的腦...

    0xE7A38A 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<