『壹』 如何通過閱讀源碼來學習優秀開源框架
對於開發者來說,社區里豐富的開源代碼其實是筆極為寶貴的財富。如果能充分利用好開放源代碼的資源,不僅可以掌握多種編程方法,提高實踐能力,還能獲得好的思想,激發編程靈感。開源代碼怎麼學以及怎樣才能學好是大家經常關注的話題,日前,在問答網站知乎上,有人拋出了「如何更有效地學習開源項目的代碼?」的話題,眾技術好手各抒己見,CSDN軟體研發頻道對本文內容進行了整理,方便大家學習與參考。盛大創新研究院研究員 庄表偉:學習開源 盡可能在代碼里找答案 庄表偉提供了以下9個建議:1.在下載源代碼之後,首先要跑起來,編譯通過、正常運行;2.在你覺得最有可能運行到的地方,設置斷點或者拋出異常,這樣,就能夠找到一個項目在正常運行時的入口點;3.從入口點所在的那個源文件開始閱讀,逐步把握整個項目是如何啟動起來;4.隨便改點代碼,看看會不會報錯,如果報錯,會從哪裡報錯;5.試著把報錯屏蔽、修復、或者繞開;6.嘗試理解一個系統的內部結構,多少組成部分,主線模塊是哪些?輔助模塊是哪些?7.從實際需要出發,修改這個項目,滿足自己的某一個小的需求。(注意在此之前,盡量不要在網路上找答案);8.看看相關的討論與心得,是否與自己的理解相一致;9.提交bug fix或者某個新的功能代碼。在學習開源的過程中,有幾個方面會獲得大量收獲,1.架構與模式;2.開源社區常見的一些慣用法;3.相關領域的結構與演算法。總結一點:學習開源,盡可能在代碼里找答案,而不是在代碼之外找答案,那些都是二手的,而且很可能不準確。互聯網評論員 朱曉陽:從簡單做起 理論聯系實踐朱曉陽對此發表了兩點看法:首先,從簡單做起。剛開始的時候學習一些領域內基礎理論,然後找一些簡單的東西去實現,不能一開始就去找開源項目。建議大家經常動手寫一些小程序,如改進宿舍網路登錄客戶端等。積小成多,能顯著提高自己的編程能力。其次,學習的知識一定要和自己生活或工作有聯系,這樣才會有樂趣或動力。互聯網評論員孫竟:先構想一個想做的項目首先,構想一個想做的項目(比如論壇、博客、微博等);然後,思考需要什麼功能,應該怎麼去實現,盡可能包括各種細節,有必要時記錄下來;最後,去找個類似的開源應用,看看它是怎麼實現的,和你的想法有什麼差異,有什麼可以學習或需要改進的地方。互聯網草根hqman:我的5個建議:1.反復地使用軟體,熟釋軟體的組成文件和軟體功能,注意IE地址欄內的地址變化;2.打開資料庫文件或存放數據的XML文件,參照數據字典了解各個表和欄位的數據含意;如果沒有數據字典,就運行軟體輸入數據,參照所輸入的數據,了解各個表和欄位的數據含義;3.利用Visio進行反向工程,將類圖抽出來;4.研究類之間的關系,注釋各個類的屬性和方法,弄清程序的整體框架;5.另開一個項目,按照軟體開發的流程,將代碼分段復制進新的項目,進行編譯調試,關注一些實現細節,學習一些編程的技巧。在讀研究生張偉:在校學生空閑時間多參加一下比賽張偉的建議是大家在空閑時間多參加一些比賽。一個完整的項目,不管再小,只要做完了,就會有收獲。多看一些比較大的開源項目源代碼,每次看完後都會受益匪淺。從網上成熟的開源代碼里,可以學到很多的設計思想。他認為,從項目入手,以項目為驅動,可激勵自己進步。當然,是否一定需要看開源代碼,這將取決於個人的興趣和需要。畫出程序流程圖 理解程序流程思想CSDN博客專家i_like_cpp:曾在CSDN分享了《如何將源代碼學好》的博文,對此,他給出了四點建議:1. 畫出整個程序的流程圖,理解整個程序流程的思想。畫流程圖的方式更讓人很直接的理解程序的整體流程,而不會被代碼所干擾,讓程序員總體上把握整個程序;2. 對流程各節點(函數或過程)的理解,流程的每一節點是構成整個流程的不可缺少的部份;3.再把流程和流程各節點串起來理解整個程序,可能的話最好寫出讀書筆記;4. 如果想深刻的學習到源代碼的精髓所在,請寫一個相近的程序進行操練。理解了這個程序並不表明掌握了這個程序,只有在操練一個相近的程序時,才知道你到底理解了多少,掌握了多少。編後語:源代碼的學習是一個從整體到不斷細化的過程,是一個極為繁瑣的過程同時也是一個不斷認清事物本源的過程。本文總結的源代碼的學習經驗,希望對您有所幫助。那麼,CSDN的網友們,你們是如何對待開源項目源代碼的呢?
『貳』 為什麼我們需要閱讀優秀開源軟體代碼
所幸的是,有相當多這類程序都開放了源代碼——它們也正是因此才得以在眾多聰明頭腦的協作下逐步達到今天的高度。開放源代碼,這意味著我們可以拆開每一顆螺釘,走近每一個零件,觀察每一個動作,觸摸每一根鏈條,轉動每一個齒輪(閱讀代碼,運行,調試)。我們可以像孩子一樣拆散它們,然後再拼到一起,可以擺弄它們的位置(修改)。在清楚一些時,我們可以把其中的一些零件用自己製作的替換掉(實驗),還可以把零件卸下來安在自己的機器里(復用)。
當然,最初我們很可能會被慎密而復雜的結構搞暈,但一旦開始漸漸理清它們的關系,我們會首先為那些按高品質行業標准打造的標准零件的規范贊不絕口(代碼規范,軟體包構建,介面設計),接著為那特殊零件賞心悅目的精湛工藝而驚嘆(語言技巧,數據結構/演算法的設計、選擇和實現,細節處理),然後為它們各司其職的明確分工和合理的安排而心服口服(模塊化設計,介面設計,代碼組織結構),其間我們會不斷得到零件上友好簡潔的標注的幫助(注釋和可讀性)。我們甚至會偶然為匠人們的幽默而捧服。有時我們會感到,那些聰明的傢伙在對我們微笑,用帶著一點挑釁卻又友好的語氣說道:"嘿,怎麼樣?我的代碼寫得不錯吧?你能寫得更好么?"
後來,我們會發現諸多不完美,其中有些被證明是我們理解的問題,但有些確實需要改進,那麼就動手吧,這時,我們可以恭喜一下自己——我們已經跟上了這些聰明黑客的節奏,並且開始融入其中。
如果我們對歷史版本進行考古,會有更多發現,我們會看到今天我們面前的強壯青年經歷過怎樣的幼稚,看到他的成長軌跡。這時將會明白,羅馬不是一天建成的,更不是一個人建成的,那些代碼中包含的是大量黑客多年積累的努力和智慧,每一次修改和重構都吸取了上一版本的教訓。今天宏偉光鮮的羅馬城下,壓著無數舊代碼的屍體,而大師們也是在經歷這些風雨後才成為大師。所以,優秀的開源軟體代碼所示範的手段,是歷史之浪淘出的黃金(也有些帶有古董的痕跡,但不影響代碼的質量)。如果我們不去吸取這些血淚澆灌的營養,或許就免不了重流前人流過的血淚了。
總結一下,通過閱讀優秀的開源軟體代碼,我們能夠
可以修改、重寫後通過運行、調試進行實驗
找到可復用的代碼用在自己的項目中
學到代碼編寫、軟體包構建等工程規范
學到語言技巧,數據結構/演算法的設計、選擇和實現,以及細節處理方法
學到模塊化設計方法和良好規范的代碼組織方法
學到良好的編程風格和注釋規范
理解編程理論和原則
了解軟體發展規律,吸取前人經驗教訓
對它們進行改進當然,還有最不重要,也是最重要的:滿足好奇心
『叄』 程序員如何學習源代碼
想成為一名優秀的程序員,源代碼的學習是必不可少的。閱讀優秀的源代碼可以幫我們理解書籍中講到的理論知識,更好的去應用它,並且能夠開闊我們的思路,完善我們的思想。 那麼我們應該如何去學習源代碼呢?一起來看看達內老師的建議。 源代碼的學習是一個從整體到不斷細化的過程,在學習中不能想著一步到位,要慢慢的去深入。源代碼作為軟體的特殊部分,是程序員在工作中不能忽略的。想要學習源代碼,你不妨按以下步驟試試。第一步,畫出整個程序流程圖,理解整個程序的思想。這個方式可以讓人很直接的理解程序的整體流程,而不會被代碼所干擾,讓程序員從總體上把握程序。第二步,對流程各節點(函數或過程)的理解。流程的每一節點是構成整個流程的不可缺少的部份。第三步,把流程和流程各節點串起來理解整個程序,如果可以的話還可以記筆記總結下自己的經驗。 第四步,如果想深刻的學習到源代碼的精髓所在,你可以寫一些相近的程序進行操練。但是你理解了這個程序並不代表你掌握了這個程序,只有當你編寫一個相近的程序時,你才知道自己到底理解了多少,掌握了多少。
『肆』 程序員有必要看源碼的習慣嗎,這么多插件感覺都看了是不可能了
一、先列三個常見的開發場景:
1、拿到一個模塊詳細設計文檔,大部分程序員的通常做法就是開始搭建界面代碼,然後從第一個按鈕點擊事件或頁面Load事件開始寫第一行業務代碼。寫的差不多了,就運行一下,發現哪裡不是自己想的那樣,就改改,直到改到是自己預想的那樣。
2、做完了一個功能模塊或幾塊相關聯的功能模塊,輸入111asd,發現新建正常、保存正常,就提交給測試人員。測試員用測試用數據、測試場景用例來測試,發現有問題,就登記bug。對於嚴重的影響下一步測試的BUG,測試員就用內部IM通知這個開發人員。對於不影響繼續往下測試的BUG,測試員就登記下來,等程序員有空時處理。
3、程序員一般工作不希望大家打擾,所以開發起來就是開發。等手頭開發告一段落,就看看BUG庫。發現有與自己有關的BUG,就從第一個BUG開始看起。就開始通過IM和測試員掰扯起來(這不是個BUG啊、業務邏輯不是你想的那樣啊、我這里不能重現啊、你給的信息描述不清晰啊),於是IM幾來幾往,甚至跑過去當面交流一番,甚至會拉扯上產品經理一起討論,更甚者需要項目經理或產品經理發起一個會議來集體討論一下
『伍』 為什麼以及如何閱讀源碼
對於這些問題,說到底主要是因為經驗不夠,而經驗主要從項目實踐中積累,所以招聘單位一般都會限定工作時間大於 3 年,因為這些人的項目經驗相對較豐富,項目中遇到的場景相對較多。
工作經驗的積累來自於年限與實踐,然而看源碼可以擴展我們的思路,這是變相增加我們經驗的不錯方法。雖然不能短時間內通過時間積累經驗,但是可以通過學習開源框架、開源項目來獲取。
另外進職場後一般都要先熟悉現有系統,如果有文檔還好,沒文檔的話就得自己去翻代碼研究。如果大家之前對閱讀源碼有經驗,那麼在研究新系統的代碼邏輯時就不會那麼費勁了。
『陸』 為什麼他把軟體的源代碼看的非常重要
哎,不知道樓上幾個兄弟姐妹回答的是什麼。推測樓主是想問,為什麼軟體的源代碼很重要 是吧? 恩,這個跟您打比方下。為什麼可口可樂 的配方很重要?一個軟體是一個(組)程序員辛苦勞動一個字元一個字元敲出來的,再經過不斷的辛苦修改最終編譯成為一個軟體。軟體源代碼的重要好比可口可樂的配方,在商業上是有很大的意義的,如果把源代碼放出來,地球人都知道的話,大家都可以閱讀,都可以很光明正大的復制修改,那麼那些編寫軟體的程序員就沒飯吃了。如果這些軟體還用於一些服務行業比如金融上,把源代碼放出來很容易被發現一些漏洞,就很有可能對這些使用該軟體的公司造成嚴重的危機。 雖然吧,現在有很多人支持開源,就是把開放源代碼放,大家可以隨意的使用裡面的代碼(在使用的時候僅需要編著轉自哪裡哪裡,誰誰誰編寫),但是不產生任何直接經濟效益,賺不到錢的事畢竟不是大多人想要的。麵包總是需要的哈。
『柒』 源碼的作用
源碼主要功用有如下2種作用:
1.生成目標代碼,即計算機可以識別的代碼。
2.對軟體進行說明,即對軟體的編寫進行說明。為數不少的初學者,甚至少數有經驗的程序員都忽視軟體說明的編寫,因為這部分雖然不會在生成的程序中直接顯示,也不參與編譯。但是說明對軟體的學習、分享、維護和軟體復用都有巨大的好處。因此,書寫軟體說明在業界被認為是能創造優秀程序的良好習慣,一些公司也硬性規定必須書寫。
需要指出的是,源代碼的修改不能改變已經生成的目標代碼。如果需要目標代碼做出相應的修改,必須重新編譯。
『捌』 一個優秀的程序員需要養成哪些良好的習慣
1. 理解編程語言的原理,遵循編程規范,並且能夠寫出有效的代碼,並學會優化代碼。
2. 估算解決問題所需要的時間,為自己定一個時間限制,加強程序自測試。
3. 做好版本控制,並及時備份代碼,經常檢查代碼,還要回顧以前寫過的代碼,看看能不能有新想法。
4. 動手編碼之前,先做好分析和設計。
5. 對項目文件歸類保存。可以把項目文件放到SOURCE、HEADERS、MAKE、EXES等不同的文件夾中。
6. 制定驗收規則,優秀出色的程序一定會編寫技術測試腳本,因為他們清楚要是省略了這一步會嚴重後果。
7. 重視,但不過於注重程序的設計模式。
8. 養成耐心、冷靜的好習慣,多向優秀的程序員學習。
『玖』 源代碼的作用
源代碼主要有如下兩種作用:
1.生成目標代碼,即計算機可以識別的代碼。
2.對軟體進行說明,即對軟體的編寫進行說明。為數不少的初學者,甚至少數有經驗的程序員都忽視軟體說明的編寫,因為這部分不會在生成的程序中直接顯示,也不參與編譯。但是注釋代碼對軟體的學習、分享、維護和軟體復用都有巨大的好處。因此,書寫軟體說明在業界被認為是能創造優秀程序的良好習慣,一些公司也硬性規定必須書寫。
需要指出的是,源代碼的修改不能改變已經生成的目標代碼。如果需要目標代碼做出相應的修改,必須重新編譯。