乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      代碼的抽象三原則

       quasiceo 2013-01-31

      代碼的抽象三原則

      軟件開發(fā)是"抽象化"原則(Abstraction)的一種體現(xiàn)。 

      所謂"抽象化",就是指從具體問題中,提取出具有共性的模式,再使用通用的解決方法加以處理。

      開發(fā)軟件的時(shí)候,一方面,我們總是希望使用別人已經(jīng)寫好的代碼,另一方面,又希望自己寫的代碼盡可能重用,以求減少工作量。要做到這兩個(gè)目標(biāo),這需要"抽象化"。 

      最近,我讀到美國程序員Derick Bailey的一篇文章,談到"抽象化"應(yīng)該遵循的三個(gè)原則,覺得很有啟發(fā)。 

      一、DRY原則 

      DRY是 Don't repeat yourself 的縮寫,意思是"不要重復(fù)自己"。

      軟件工程名著《The Pragmatic Programmer》首先提出了這個(gè)原則。它的涵義是,系統(tǒng)的每一個(gè)功能都應(yīng)該有唯一的實(shí)現(xiàn)。也就是說,如果多次遇到同樣的問題,就應(yīng)該抽象出一個(gè)共同的解決方法,不要重復(fù)開發(fā)同樣的功能。 

      這個(gè)原則有時(shí)也稱為"一次且僅一次"原則(Once and Only Once)。 

      二、YAGNI原則 

      YAGNI是 You aren't gonna need it 的縮寫,意思是"你不會(huì)需要它"。 

      這是"極限編程"提倡的原則,指的是你自以為有用的功能,實(shí)際上都是用不到的。因此,除了最核心的功能,其他功能一概不要部署,這樣可以大大加快開發(fā)。 

      它背后的指導(dǎo)思想,就是盡可能快、盡可能簡單地讓軟件運(yùn)行起來(do the simplest thing that could possibly work)。 

      但是,這里出現(xiàn)了一個(gè)問題。仔細(xì)推敲的話,你會(huì)發(fā)現(xiàn)DRY原則和YAGNI原則并非完全兼容。前者追求"抽象化",要求找到通用的解決方法;后者追求"快和省",意味著不要把精力放在抽象化上面,因?yàn)楹芸赡?你不會(huì)需要它"。所以,就有了第三個(gè)原則。 

      三、Rule Of Three原則 

      Rule of three 稱為"三次原則",指的是當(dāng)某個(gè)功能第三次出現(xiàn)時(shí),才進(jìn)行"抽象化"。 

      這是軟件開發(fā)大家Martin Fowler在《Refactoring》一書中提出的。 

      它的涵義是,第一次用到某個(gè)功能時(shí),你寫一個(gè)特定的解決方法;第二次又用到的時(shí)候,你拷貝上一次的代碼;第三次出現(xiàn)的時(shí)候,你才著手"抽象化",寫出通用的解決方法。 

      這樣做有幾個(gè)理由: 

      • 省事。如果一種功能只有一到兩個(gè)地方會(huì)用到,就不需要在"抽象化"上面耗費(fèi)時(shí)間了。
      • 容易發(fā)現(xiàn)模式。"抽象化"需要找到問題的模式,問題出現(xiàn)的場合越多,就越容易看出模式,從而可以更準(zhǔn)確地"抽象化"。比如,對于一個(gè)數(shù)列來說,兩個(gè)元素不足以判斷出規(guī)律:1, 2, _, _, _, _,;第三個(gè)元素出現(xiàn)后,規(guī)律就變得較清晰了:1, 2, 4, _, _, _。
      • 防止過度冗余。如果一種功能同時(shí)有多個(gè)實(shí)現(xiàn),管理起來非常麻煩,修改的時(shí)候需要修改多處。在實(shí)際工作中,重復(fù)實(shí)現(xiàn)最多可以容忍出現(xiàn)一次,再多就無法接受了。

      綜上所述,"三次原則"是DRY原則和YAGNI原則的折衷,是代碼冗余和開發(fā)成本的平衡點(diǎn),值得我們在"抽象化"時(shí)遵循。

       

       

      轉(zhuǎn)自 http://www./news/27106

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多