• <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>

            woaidongmao

            文章均收錄自他人博客,但不喜標題前加-[轉貼],因其丑陋,見諒!~
            隨筆 - 1469, 文章 - 0, 評論 - 661, 引用 - 0
            數據加載中……

            一定要堅守的原則

            1、不能從算法和數據結構的組織這個層面上考慮設計,而應該從從模塊和數據流的層面上考慮設計。把數據流搞清楚,按照需求,拆分成能夠完成需求的各自獨立的模塊,讓數據從起點到終點流動,被處理,最后得到結果。

                  比如:數據存儲模塊、價格發生器、價格過濾器、交叉盤價格合成器、價格發布器、視圖模塊;

            image

            2、根據數據流圖,拆分出來的獨立模塊,設計類;

            3、類的分別原則是:屬于流程不同模塊,即使功能相似或者相近,也不能合成一個類;

            4、一個類只做有限的事情,大而全的類雖然有可能是一種方案,但決不是最好的方案,它增加了耦合和復雜性,維護性也很低;

            5、類的實現部分,盡量不要直接調用類成員以外的數據,比在類的函數中,直接對某個全局對象調用方法,這樣類函數執行的前提是:這個全局對象必須存在,而這是一種耦合。解耦是簡單的,那就是把這個全局對象作為類函數的參數傳入;

            6、類的方法接口,應該只接受能夠完成類方法所需要的數據,如果傳遞一個指針,這個指針包含的內容,可能遠遠超過類方法所需要的;

            7、關于上一點的解決辦法是:構建類需要參數的POD,不要怕轉換,不要怕生成臨時對象,事實上我需要這樣做。

             

            ===========================================================================================

            改進后的版本

            1、界面視圖本來可以承擔控制器的作用,也就是MVC簡化成MV。但是這樣就必須讓視圖來處理命令,試圖必須具備雙向的能力:即解析命令,并向下執行同步到模型(數據);根據模型(數據),同步視圖,向上更新界面;

            2、控制器和視圖集中在視圖里面,增加了視圖的復雜性,如果增加一個命令控制器,最終變成MVC,那么視圖就只需要具備向上更新UI的能力,向下執行命令更改模型(數據)的能力交給了命令控制器。這樣就實現了一上一下,各司其職的架構;

            3、形成視圖的經常不只是一種數據流,往往多種數據流共同形成一個視圖:比如下面的結構中,視圖是由:配置流,價格流,日志流三種組合而成的;

            4、增加命令控制器的作用的事顯而易見的,它讓業務控制的接口可以脫離視圖而存在。反過來理解,如果用視圖來同時充當用戶命令接口,那么用戶命令接口存在的前提是視圖必須存在。而視圖是多變的,或者說可以根本不存在,那么把用戶命令接口放在其中極其不合適。試想一下,一個項目它可以是個對話框,可以是個多文檔,也可以是個控制臺,多變的界面,多變的視圖,但是用戶命令接口確實不便的,把用戶命令耦合到視圖的實現里面去,就不合適了;

            5、把命令控制器抽離出來的另一個好處是:集中管理用戶的命令,便于維護。試想一個如果對用戶命令的處理分散在若干個.cpp文件,幾十個C***Dailog的On***Button()消息相應函數里面,理解,調試,維護起來,將是一件多為痛苦的事情;

            6、更多想寫的一句話,就是業務邏輯,不要和界面耦合起來,界面需要做的就是:顯示視圖,接受用戶命令兩個功能,其他的都沒必要在界面里面存在。舉個例子,用得很多的MFC OnTimer()函數,事實上定時操作應該是業務邏輯的部分,放在界面里執行就不合適了;

            7、檢測界面與業務邏輯耦合程度的一個標志就是:把程序里界面代碼剝離后,業務邏輯依然完整,程序依然可以運行。如上面所說的,界面中處理OnTImer()函數,則去掉界面代碼后,業務邏輯就不完整了,少了執行定時業務處理的部分,這就是一中明顯的界面與業務邏輯耦合。

            image

            8、程序可以分為很多功能模塊,命令控制器能夠控制這些功能模塊的行為是應該,這些功能模塊輸出信息到視圖里面也是應該的。

             

            ===========================================================================================

            struct ViewResult
            {
                struct ViewSource
                {
                    char  symbol[12];
                    int        digits;
                    double minprice;
                    double minspread;
                    double peerminm;
                    BOOL    usepremium;
                    double premiumex;
                    char   session_current;
                    char    remark[256];
                    BOOL   session_enable;
                } view_source;
                struct ViewTrans
                {
                    BOOL   b_bid_success;
                    BOOL    b_ask_success;
                }view_trans;
                struct ViewPrice
                {
                    double bid;
                    double ask;
                }view_price;
            };

             

                BOOL UpdateViewSource(int index, const ViewResult::ViewSource& vs);
                BOOL UpdateViewTrans(int index, const ViewResult::ViewTrans& vt);
                BOOL UpdateViewPrice(int index, const ViewResult::ViewPrice& vp);
                BOOL UpdateViewMsg(const ViewMsg& vm);
            p

            posted on 2008-08-05 23:47 肥仔 閱讀(412) 評論(0)  編輯 收藏 引用 所屬分類: 編程思想

            亚洲伊人久久综合影院| 久久青青草原国产精品免费| 欧洲国产伦久久久久久久 | 亚洲国产精品婷婷久久| 久久久久香蕉视频| 久久婷婷五月综合国产尤物app | 欧美亚洲色综久久精品国产| 国产精品久久久久久久久| 伊人久久综在合线亚洲2019| 欧美大香线蕉线伊人久久| 国产亚州精品女人久久久久久| 久久香综合精品久久伊人| 亚洲国产精久久久久久久| 无码人妻精品一区二区三区久久久| 91超碰碰碰碰久久久久久综合| 久久天天躁夜夜躁狠狠| 国内精品欧美久久精品| 精品久久久久久久无码| 777午夜精品久久av蜜臀| 亚洲午夜精品久久久久久app| 99久久精品费精品国产一区二区| 精品久久人人爽天天玩人人妻| 久久精品国产欧美日韩| 青青草国产成人久久91网| 久久久久99精品成人片欧美| 少妇无套内谢久久久久| 日本高清无卡码一区二区久久| 热re99久久精品国产99热| 色综合久久88色综合天天 | 精品久久久无码人妻中文字幕豆芽| 一级做a爰片久久毛片看看| 亚洲精品成人久久久| 欧美性猛交xxxx免费看久久久| 99久久精品免费看国产免费| 国内精品久久久久久久久| 久久精品国产精品亜洲毛片| 国产亚洲成人久久| 综合久久久久久中文字幕亚洲国产国产综合一区首 | 久久99国产综合精品| 91久久婷婷国产综合精品青草| 亚洲欧洲日产国码无码久久99|