• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            關(guān)于設(shè)計

             

            關(guān)于設(shè)計

            設(shè)計是一項把需求轉(zhuǎn)換為編碼方案的活動。設(shè)計在軟件開發(fā)中是必定存在的,無論何種情況下,我們都需要把需求轉(zhuǎn)化為編碼方案。
            設(shè)計是一個不斷完善的過程,設(shè)計的缺陷可能在設(shè)計之初無法被發(fā)現(xiàn),直到設(shè)計完成時才被察覺到,這導(dǎo)致了再次設(shè)計的需要。注意,我們在首次設(shè)計時應(yīng)該盡可能的避免缺陷的出現(xiàn),而不是視而不見以求下次解決。
            設(shè)計上的付出是必要的,在設(shè)計階段發(fā)現(xiàn)錯誤并改正比編碼后發(fā)現(xiàn)相同錯誤并改正的代價低的多,如果設(shè)計的錯誤拖延到維護階段,那就更加不堪設(shè)想。
            設(shè)計存在優(yōu)劣,必須明確這一點。敷衍的進行設(shè)計后果是很嚴重的(雖然偶爾也能更加快速的產(chǎn)生產(chǎn)品),糟糕設(shè)計的最大特點是無法響應(yīng)需求變更。但也應(yīng)該注意,優(yōu)秀的設(shè)計有多種,糟糕的設(shè)計也有多種。
             
            事物的本質(zhì)屬性是一件事物必須具有的,如果不具有則就不在是該事物。事物的偶然屬性是不起解決性作用的屬性。例如,車總有輪子,沒有了輪子就不在是車,那么輪子就是本質(zhì)屬性,但是輪子可能有 4 個,也可能有 3 個,無論多少個輪子依然是車,那輪子的數(shù)目就是偶然屬性。
            本質(zhì)復(fù)雜度源于需求,無論采取何種手段,何種技術(shù)都不會對本質(zhì)復(fù)雜度造成任何影響,所以有人才會說,軟件開發(fā)本身就很復(fù)雜(無論使用何種技術(shù)開發(fā)都是復(fù)雜的)。我們需要管理好偶然復(fù)雜度(偶然性的復(fù)雜度),例如,需求是開發(fā)一個可用的計算器程序(圖形界面可有可無),這時,開發(fā)命令行的計算器就比開發(fā) GUI 的計算器的偶然復(fù)雜度小,用 C++ 進行開發(fā)其偶然復(fù)雜度就比用 Dephi 高。敏捷開發(fā)和 Unix 中都強調(diào) KISS,而敏捷開發(fā)更加強調(diào)應(yīng)該使用簡單的技術(shù)和工具,這都是為了避免偶然復(fù)雜度過高帶來額外的成本開銷。

            設(shè)計者應(yīng)該真正理解偶然復(fù)雜度,如果設(shè)計出來的框架,在進行開發(fā)時需要開發(fā)人員關(guān)注于系統(tǒng)的每個細節(jié),那么對于程序員來說偶然復(fù)雜度是高的,相比下,對于每個功能的開發(fā),程序員只需要關(guān)心當前編寫的任務(wù),那么偶然復(fù)雜度是低的(COM 的設(shè)計非常強調(diào)的一點是封裝,而不是復(fù)用)。

             

            設(shè)計的基本的原則:

            1)盡量降低偶然復(fù)雜度。如果可以簡單的解決問題,那為什么不這么做了?另外某些角度來說:

            模塊化的系統(tǒng)(系統(tǒng)對“模塊”一詞有確切的定義),在一定程度上偶然復(fù)雜度較低,模塊化的系統(tǒng)讓程序員只需要關(guān)心當前開發(fā)的部分。

            2)盡量保持高內(nèi)聚,低耦合。高耦合的系統(tǒng)懼怕變動(動一處而牽動全身),變動帶來的問題通過關(guān)聯(lián)進行傳遞。高耦合的系統(tǒng)的關(guān)鍵點在于:系統(tǒng)組成部分的關(guān)聯(lián)過多,導(dǎo)致過多的相互影響,當關(guān)聯(lián)數(shù)量到一定程度,整個系統(tǒng)就會很不穩(wěn)定。

            具體來說:

            <1> 集成的困難:高耦合的各個程序組成部分需要花費較多時間進行集成。

            <2> 測試的困難:一個部分的問題通過與其他部分關(guān)聯(lián)傳遞到其他部分,那么意味著一個部分的變動可能導(dǎo)致整個系統(tǒng)的重新測試。

            低耦合:在類這個層次上來說,除了底層的工具類(例如 STL)之外(工具類允許和系統(tǒng)中的大部分類發(fā)生關(guān)聯(lián)),應(yīng)該盡可能的減少類之間的關(guān)聯(lián)。

            3)可擴展??蓴U展的一個標志是,無需改變系統(tǒng)底層,即可增加新的功能。

            4)可移植性??梢浦残苑浅L貏e(似乎違背低偶然復(fù)雜度原則),它不同于軟件的其他的特性,除非你保證你的項目永遠無需移植到其他的環(huán)境中去,否則,你應(yīng)該注意這點,因為通常來說,時間越長,越難移植,甚至最后只能重寫,代價非常之高。

            5)分層。分層的系統(tǒng)相對來說偶然復(fù)雜度較低,關(guān)聯(lián)較少。每層都有每層的工作,相互影響較小。

             

            另外,類的粒度也比較重要,大粒度的類間關(guān)聯(lián)少,但是不可避免的就是類自身過于復(fù)雜。小粒度的類自身很簡單,易于開發(fā)和維護,但是類間關(guān)聯(lián)變多,通訊太頻繁。粒度過大和過小都會帶來較多的問題,應(yīng)該根據(jù)經(jīng)驗作合理設(shè)計。

            在 C++ 中使用巨大的類無異于使用 C 語言進行編程,這意味著你拋棄了 C++ 強大的抽象能力。含有巨類的系統(tǒng)中的一個顯著的標志是:含有大量重復(fù)代碼或者相似代碼(這歸結(jié)于 C 語言不夠強大的抽象能力和項目在時間上的壓力)

             

            最后要說的一句是:KISS 和敏捷給太多人以誤解,請仔細斟酌它們的含義(有幾個人懂得 KISS 的真正含義)。設(shè)計是不可避免的,好的設(shè)計是至關(guān)重要的。好的設(shè)計在一定程度上控制了軟件的成本,即使你的老板并不明白,但是你應(yīng)該這么做。

             

            author: killercat

            posted on 2009-05-04 20:38 Randy 閱讀(268) 評論(0)  編輯 收藏 引用

            <2009年5月>
            262728293012
            3456789
            10111213141516
            17181920212223
            24252627282930
            31123456

            導(dǎo)航

            統(tǒng)計

            常用鏈接

            留言簿(3)

            隨筆檔案

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            99久久国产亚洲高清观看2024 | 久久99精品国产99久久6男男| 囯产极品美女高潮无套久久久 | 久久婷婷激情综合色综合俺也去| 亚洲AV日韩精品久久久久久| 大伊人青草狠狠久久| 久久精品亚洲欧美日韩久久| 热re99久久精品国99热| 久久久久97国产精华液好用吗| 久久五月精品中文字幕| 亚洲人成无码久久电影网站| 久久久久亚洲AV无码网站| 久久精品国产精品国产精品污| 老司机午夜网站国内精品久久久久久久久 | 久久久久亚洲AV综合波多野结衣| 久久久久亚洲av成人网人人软件| 2021久久精品国产99国产精品| 亚洲国产成人乱码精品女人久久久不卡| 看久久久久久a级毛片| 中文字幕亚洲综合久久菠萝蜜| 久久99国产精品久久久| 亚洲AV无码成人网站久久精品大| 久久久久国产一区二区| 国内精品久久久久影院网站| 国产成人久久精品一区二区三区| 狠狠综合久久AV一区二区三区| 久久精品这里只有精99品| 亚洲?V乱码久久精品蜜桃| av午夜福利一片免费看久久| 久久天天躁夜夜躁狠狠躁2022 | 色噜噜狠狠先锋影音久久| 久久人人爽人人爽人人AV东京热| 伊人久久大香线蕉AV一区二区| 国产精品美女久久久久av爽| 99久久精品免费看国产免费| 日韩精品久久久久久| 国产午夜精品久久久久九九| 日本久久久精品中文字幕| 国产叼嘿久久精品久久| 色综合色天天久久婷婷基地| 国产亚州精品女人久久久久久 |