中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 我所理解的代碼設計

        我所理解的代碼設計

        作者: 時間:2012-08-24 來源:網(wǎng)絡 收藏

        首先任何都是基于現(xiàn)實的客觀存在,使用計算機容易實現(xiàn)的方式去表現(xiàn)存在。
        主流模式分析
        面向過程的設計:
        對于過程處理的東西,例如流程型的的東西,使用面向過程的設計

        基于對象的設計:
        一個東西,如果有一個核心的數(shù)據(jù),加上圍繞核心數(shù)據(jù)的接口,那么就使用基于對象的設計

        面向?qū)ο蟮脑O計:
        一個系統(tǒng),里面有很多的對象,對象間互相交互,協(xié)調(diào)工作,那么就使用面向?qū)ο蟮脑O計

        可見,面向過程,基于對象,面向?qū)ο蠖际强陀^事物的本身特性,如果一個工作明明就是流程性的,你卻要使用OO去實現(xiàn),那么就得不償失,反而會增加開發(fā)人員的工作量。

        面向過程,基于對象,OO是可以同時存在的,是沒有優(yōu)先級別的,是不矛盾的。

        面向過程,基于對象,OO是思想方式和設計方法,具體的實現(xiàn)方式千變?nèi)f化,舉例:
        面向過程,可以采用C語言直接實現(xiàn),
        step1
        step2
        step3
        也可以在C語言中采用數(shù)據(jù)標記來實現(xiàn)
        while(1){
        if(step == 1)
        {
        func1();
        step = 2;
        }
        else if(step == 2)
        {
        func2();
        step = 3;
        }
        ...

        }

        基于對象,在C中的實現(xiàn),可以采用結(jié)構(gòu)中的數(shù)據(jù)和函數(shù)指針來表示,也可以采用窗口加上消息處理來表示

        面向?qū)ο螅绢愃朴诨趯ο?,只是其關注點更在多個對象關系而已。

        各種模式?jīng)]有優(yōu)劣之分,各種模式的實現(xiàn)方式在同一個語言中都有很多種,也就是說設計真的和語言沒有什么關系。
        現(xiàn)實世界的復雜,并非以上3中模式所能表達出來的,在實際中有很多的模式。
        而且現(xiàn)實世界中存在很多的并非上面3類主流模式所能表達的東西,例如遞歸算法,函數(shù)式,但是無論什么存在,我們總是有變通的辦法來表達的,除非那個存在計算機處理不了。

        關于面向?qū)ο蟮腻e誤理解
        我覺得甚至云風等高手對于面向?qū)ο蠖紱]有本質(zhì)的認識,面向?qū)ο蟊举|(zhì)是關注點是對象間關系,對象間通過接口來互動 ,而不是云風所說的“我所理解的面向?qū)ο?,是讓不同的?shù)據(jù)元有共同的操作方式,適合成組的處理”,共同的操作方式只是關注對象間關系的一個有效收益,也就是如果一組對象間有一組相同的接口,那么我們對這一類對象的操作,可以采用一個相同的方式來進行。例如對于window的UI對象,可以發(fā)送update消息,讓他們刷新。至于C++程序中的構(gòu)造函數(shù)、析構(gòu)函數(shù)、類、繼承、虛擬函數(shù)、持久化等等更就不是面向?qū)ο蟮谋举|(zhì)意義,只是實現(xiàn)方式,或者利于對象使用的工具。
        C++語言引入的東西對于實際問題的解決只有有限的效果,但是卻引入過多的復雜度,真是得不償失!

        其實就設計來說,幾十年來,沒有什么本質(zhì)的進展,例如OO的本質(zhì)意義,在無數(shù)次的軟件工程教材中有強調(diào),劃分模塊并即針對模塊的接口設計,隱藏模塊的實現(xiàn)細節(jié),所以說,OO不是什么新的東西,只是基本原則上的一個有益的總結(jié)實現(xiàn)。想想一下unix的泛文件的概念。
        當然語言工具是有很大的進步了,例如虛擬機、各類動態(tài)解釋語言,但是本質(zhì)依舊沒有變化。

        關于OOC
        面向?qū)ο蟮腃語言中,就我目前看來,作者很大的受到C++的影響,無視OO的本質(zhì),反而企圖用C模擬C++的實現(xiàn)。實際上使用C實現(xiàn)OO并沒有一定的強制方法,對象接口就可以有很多種,全局數(shù)據(jù)、基于通訊的消息、函數(shù)等。

        看看論壇上關于的問題,我真為中國的開發(fā)者悲哀。

        由于我在放棄c++之后,導致開發(fā)世界觀變化,

        剛好這幾天在外調(diào)試機器,中間空閑時間較多,就想了一下
        模式是無處不在,這是基調(diào),例如中關于建筑中的模式說明。
        設計模式中的模式是建立在類繼承上,如果沒有了類,例如c語言,那么設計模式要發(fā)生大的改變,至少很多的設計模式不存在了或者變形了。
        模式應重在意圖,和具體的實現(xiàn)手段沒有多大關系。例如工廠模式,在c語言中,也可以實現(xiàn),不過,其實現(xiàn)方式可以是通過提供一個消息對象給client,client通過發(fā)消息給消息對象,如果消息中的id=1,則生成某個東西,如果id = 2,則生成另外一個東西。這個也是工廠了。
        設計模式,特別是GOF中的設計模式無關緊要,學不會也沒有關系,思想是相通的,對模式的理解是慢慢進行的,快速學會也不會用。
        再次強調(diào),OO和設計模式根本就不是銀彈,只是一種思想,而且這個思想很久以前就存在。所以老老實實的做設計演化吧,不要妄圖通過學習OO和設計模式就能一次作出完美的設計。
        對于具體的問題來說,業(yè)務永遠是最核心的東西,設計模式和語言工具對于業(yè)務的解決毫無幫助,反而分散了開發(fā)者的心思。

        c++相關文章:c++教程




        評論


        技術專區(qū)

        關閉