大項目源碼學習方法

來源:互聯網
上載者:User

 

1,  程式可以用接近人的思維的方法來寫。

2,  演算法設計的思想可以用來設計現實生活的事情,比如迭代,貪婪,遞迴,分治。程式有迴圈,生活也有迴圈,真正做了的事情也沒有幾件,都是在重複勞動。

3,  在設計模式中曾經學過這麼一個思想,父類規定了方法,子類來實現。

形象讀工程源碼方法。

在我們自己的行業,想要追求技術以提高自己的人,學習別人,吸取別人的精華是必須的,也是必要的,牛頓曾說過他之所以取得這樣的成就,是站在巨人的肩膀上。在軟體行業,GPL的存在,開源文化的傳播,網路上擁有著無數的優秀的開源源碼,作為學習者,很多人都是讀源碼成長,無論成長了沒有,都為怎麼樣去一個龐大的源碼而傷心和難受過,至此,我把我探索出的一點經驗歸結為“形象讀工程源碼方法”,簡稱“形象碼”。

人類語言發展到現在,不知道是屬於第幾代語言了,電腦語言發展到現在,我們稱C/C++/java等為第三代語言,他們的特點就是接近了人的思維,讓大部分人類不再浪費大把時間在無聊的助記符上,讓人類花更多的時間去創新,去研究,去為了生活奮鬥。

好了,讓我們進入正題吧,相信大家有過這樣的經驗,當你從Internet上download了一個project時,源碼之龐大,模組之多,頓時讓自己處於了一種缺氧的狀態,頭暈呼呼的,胸口悶悶的;試著就讀一下,又發現難以顧頭尾,半個月下來腳忙,linux核心源碼就是這麼一通。

物件導向思想。

所謂對象,就是一個物體,一個實物,一個虛擬,一個你夢中的物體,如果你的想象力好,那麼你認識的對象就比一些人要多。物件導向,就是把你要實現的功能封裝在你的對象裡,用你的對象去實現。講到這裡,太形象化了,一個7歲孩子是理解不了的,那如果我們用形象的思維來理解呢?那麼,我相信,一個7歲小孩看了就不會忘記。

       我們把對象形象化成現實中的實物,並在我們的腦海裡配以形象的圖畫來解釋,看似抽象而複雜的源碼就很形象的為人們所接受。

   比如:

Person.h

       Class person

{

Public:

        Person();

Public:

       Vitual Attack(Person*);

 

}

Person.cpp

Person::person(){}

 

Liubei.h

Class liubei

{

       Public:

              Liubei();

Public:

              Attack(Person*)

Private:

       Person *enemy;

}

Liubei.cpp

Void liubei::Attack(Person *p)

{

Enemy = p;

       /**

       Attack person Enemy;

       **/

}

Caocao.h

Class caocao

{

Public:

              Caocao();

}

Caocao.cpp

Caocao::caocao(){};

Chibi.h

Class chibi

{

       Public:

              Chibi();

       Public:

              Void (*activtity)(Person *);

              Void attatch(Person *p){this->activtity = p->Attack()};

}

Int main(argc,argv *[])

{

             Caocao *cao = new caocao;

              Liubei *liu = new Liubei(cao) ;

        Chibi* chi = new Chibi;

              Chi-> attatch(liu);

              Chi->activity(liu);

              Return 0;

     }

 上面一段代碼說明了什麼呢?除非是高手,否則當我們看完整個代碼的時候相信理解得不是很清晰,或許看到main後面的時候又要回到前面去看了,如果再痛點,相信就有人會放棄學這個了,我告訴你,當你用形象化得思維去理解的話,以上代碼就可以用幾個字或者一個頭腦中的圖畫所替代,那就是“劉備在赤壁攻打曹操”。

       我們分析一下,Caocao *cao = new caocao;//這裡創造了一個曹操。

                            Liubei *liu = new Liubei(cao) ;//創造了一個劉備

                     Chi-> attatch(liu);

                  Chi->activity(liu);//這裡表達的就是攻打曹操吧。

再看源碼,首先Class liubei,然後caocao,再者Class chibi。繼續我們看到

Void liubei::Attack(Person *p)

{

Enemy = p;

       /**

       Attack person Enemy;

       **/

}

和chibi裡面的

Void attatch(Person *p){this->activtity = p->Attack()};

即可知道liubei在赤壁在攻打某person;

再繼續看到

Liubei *liu = new Liubei(cao) ;

我們就可以完全理解意思了。有了這樣的解釋,相信,看這個程式一開啟10s就可以理解,省略了N多人的時間。

當然,這隻是一個簡單的例子,當真正的走進軟體世界,走進linux,走進開源世界,還想在軟體行業發展,那麼你就不得不閱讀大量的源碼,以促進自己,提高自己。在開源社區裡面,有N多的開源軟體,代碼之龐大,讓人望而卻步,但是,如果能形象化的去理解,maybe會節省好多時間和增加N多信心。

用過LIVE555的人都知道,裡面模組很龐大,但是形象化也就那麼一點。如下:

UsageEnvironment:程式環境的初始化。

NetInterface GroupSock:實現網路組播功能。

Sink:接受模組。

Source:源發射模組。

形象化可以理解為:Source通過GroupSock組播資訊到Sink。通過這樣的原則再去讀龐大的源碼,相信大家會好一點。

 

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.