1. 程式人生 > >如何分析/閱讀一個陌生/開原始碼

如何分析/閱讀一個陌生/開原始碼

拿到程式碼的時候
1、最好先看目錄結構並找到配置檔案
2、以自己的開發經驗去判斷大概的程式架構,理清楚是否為單點入口,
3、讓把程式執行起來

沒有資料庫的情況下執行起來可能會錯誤很多,不過這些錯誤可以引導你對程式理解,對著錯誤提示,跟蹤程式碼脈絡,很容易就把整個系統拿上手了。

我通常是區域性功能研究著手,研究一個功能的走向流程,那麼基本可以熟悉他的基本工作模式來,然後在逐步的推敲框架結構

先看下是否有框架,如果有框架,去看下框架文件就知道了
如果沒有框架,看是否能出框架的出口和入口入手了

先看下 目錄結構
使用xdebug生成profile檔案,可以用KCachegrind來檢視,但是這個工具只在linux下面可用,沒有windows下的版本。這裡推薦一個win下的免費工具——wincachegrind,也可以檢視xdebug的profile檔案,用來分析php程式碼執行情況足夠用了(偶爾不太穩定)。

有程式碼的流程,大部分的專案就可以知道整個程式碼流程了,
具體邏輯的東西,就只能你自己慢慢體會。
奇吧太多了

開源的嗎? 如果有文件的話 當然是先看文件了 如果沒有的話就用除錯工具吧 比如Zend Studio什麼的

好像沒有快速的方法。我的做法是看著程式碼在腦中跑一遍,瞭解大概流程,然後再細看。

如果沒註釋的話很困難,如果有phpDocumenter的標準註釋可以用它來生成文件

一個原始碼首先第一步不看程式碼,看結構,大致知道採用的是那種設計模式,例如函式式的還是mvc方式的,接下來從一個功能入手,先用firebug或者chrome的工具檢視請求的url,以及請求url後web前端表現出來的,接下來,上面的模式用到了,去看url對於的方法吧,方法中必定會呼叫其他的方法,層層遞進,分析下來,這個小功能的實現懂了吧,然後多多分析各個功能的實現,大致這個原始碼的結構熟悉了,那麼帶著前端的一些操作去摸索各個功能點的實現方法吧

1、拿到程式碼檢視專案當中是否有readme這樣的檔案,如果沒有檢視是否有文件之類的
2、程式碼當中沒有文件,那麼就想你的同事或者其他人要這個框架的介紹或者資料
3、先請教別人這個框架的大體思路
4、自己獨立去按照文件或者其他人說的思路去看程式碼
5、不懂的地方全部記錄下面,一次行去問,有的時候很多問題在你看到後面的東西的時候就自然明白了
6、看懂了程式碼之後自己嘗試著寫一個,看自己的理解是否正確就這麼多了。

相關推薦

如何分析/閱讀一個陌生/原始碼

拿到程式碼的時候 1、最好先看目錄結構並找到配置檔案 2、以自己的開發經驗去判斷大概的程式架構,理清楚是否為單點入口, 3、讓把程式執行起來 沒有資料庫的情況下執行起來可能會錯誤很多,不過這些錯誤可以引導你對程式理解,對著錯誤提示,跟蹤程式碼脈絡,很容易

alphazero 五子棋原始碼分析

1目的 學習和理解alphago 演算法 相關學習材料 https://github.com/chiefzzs/alphago_learnning/ 參考:https://github.com/junxiaosong/AlphaZero_Gomoku 2學習方式

動手擼一個ARouter (ARouter原始碼分析)

背景 為什麼要重複造輪子呢? 我認為只有站在作者的角度才能更透徹的理解框架的設計思想 去踩大神們所踩過的坑。 才能深入的理解框架的所提供的功能 學習優秀的作品中從而提高自己 在開始之前我先提出關於ARouter的幾個問題 為什麼要在module的build.gradle檔案

如何有效的閱讀原始碼

一、初步瞭解 1.在下載原始碼之後,先看下程式碼目錄組織結構,如base代表基礎庫,net代表網路庫等我 2.開始閱讀框架的原始碼之前,先去google蒐集下資料: 這個框架是解決了什麼問題?都是用了什麼技術? 分為多少個模組,每個模組之間有什麼聯絡? 儘量看官網英文的資料,

如何閱讀原始碼

分析一個原始碼,一個有效的方法是:  1、閱讀原始碼的說明文件,比如本例中的README, 作者寫的非常的詳細,仔細讀過之後,在閱讀程式的時候往往能夠從README檔案中找到相應的說明,從而簡化了源程式的閱讀工作。  2、如果原始碼有文件目錄,一般為doc或者docs, 最好也在閱讀源程式之前仔細閱讀,因為這

介紹一個類似GOOGLE日曆的原始碼dhtmlxScheduler

引用www.dachunblog.com dhtmlxScheduler是一個JavaScript日程安排控制元件,類似於Google日曆。日曆事件通過Ajax動態載入,支援通過拖放功能調整事件日期和時間。事件可以按天,周,月三個種檢視顯示。 

如何閱讀比較大的原始碼

1 反覆地使用軟體,熟釋軟體的組成檔案和軟體功能,注意IE位址列內的地址變化;2 開啟資料庫檔案或存放資料的XML檔案,參照資料字典瞭解各個表和欄位的資料含意,   如果沒有資料字典,就執行軟體輸入資料,參照所輸入的資料,瞭解各個表和欄位的資料含意;3 利用Visio進行反向

開源 | 語音識別商用原始碼與免費開放平臺最全盤點分析

轉自:http://soundonline.org/2016/01/76.html 聲學線上前幾日盤點了語音識別業界相關的公司和技術,引起了眾多朋友的關注。不少朋友都在諮詢聲學線上關於技術細節問題,因此,我們打算春節期間連續釋出幾篇深度文章,希望從語音識別領域的公司、技

[HGE]-原始碼分析-2 一個小demo

先來看看HGE是怎麼使用的吧。 先上程式碼 /* ** Haaf's Game Engine 1.8 ** Copyright (C) 2003-2007, Relish Games ** hge.relishgames.com ** ** hge_tut07 - Thou

spark原始碼閱讀--shuffle讀過程原始碼分析

shuffle讀過程原始碼分析 上一篇中,我們分析了shuffle在map階段的寫過程。簡單回顧一下,主要是將ShuffleMapTask計算的結果資料在記憶體中按照分割槽和key進行排序,過程中由於記憶體限制會溢寫出多個磁碟檔案,最後會對所有的檔案和記憶體中剩餘的資料進行歸併排序並溢寫到一個檔案中,同時會記

JDK1.8原始碼分析03之idea搭建原始碼閱讀環境

序言:上一節說了閱讀原始碼的順序,有了一個大體的方向,咱們就知道該如何下手。接下來,就要搭建一個方便閱讀原始碼及debug的環境。有助於跟蹤原始碼的呼叫情況。 目前新開發的專案, 大多數都是基於JDK1.8開發,所以我選擇該版本進行原始碼分析。 JDK1.8版本號:jdk1.8.0_151 一. JDK1

06需求工程軟件建模與分析閱讀筆記之六

情況 標記 細節 客戶 管理 優先級 交叉引用 術語 重復 此次閱讀了解到了優秀需求規格說明書文檔的特性。 1、完備性:需求規格說明文檔是完備的,當且僅當:(1)描述了用戶所有有意義的需求,包括功能、性能、約束、質量屬性和對外接口。(2)定義了軟件對所有的情況的所有實際輸入

需求工程——軟件建模與分析閱讀筆記01

gpo 分析方法 提交 中產 理解 aos 筆記 軟件項目 類別 ·在假期間,通過閱讀需求工程——軟件建模與分析,了解到需求問題是當前軟件開發面臨的主要問題,無論是實踐還是數據的調查,都明確指出需求問題是當前軟件開發面臨的主要問題之一。在Standish Group的CHA

需求工程——軟件建模與分析閱讀筆記02

希望 功能需求 廣泛 開發人員 計算機 gpo 種類型 問題 pos 通過閱讀第二章,了解到滿足需求就是解決問題。人們開發軟件系統的目的就是希望用它作為解決方案來解決問題,使得現實改善到期望的狀況,解決問題,改善現實,滿足用戶期望的條件與能力就是需求。 問題解決的兩個方面包

需求工程——軟件需求建模與分析閱讀筆記01

建模 以及 問題 面向 很好 不同 發布 未能 gpo   軟件的模擬特性: 導致需求問題的原因中,一個最為重要的原因是:未能很好地理解和掌握“應用”型軟件的模擬型以及由此產生的一系列影響和要求。 軟件的模擬特性來源於其知識載體的特性:軟件在運行中表現出來的特性、行為應該和

需求工程——軟件需求建模與分析閱讀筆記02

設計 活動 映射 進行 完成 特性 發揮 重要 規劃   需求工程的j簡單定義   需求工程是所有需求處理活動的總和,它收集信息、分析問題、整合觀點、記錄需求並驗證其正確性,最終反映軟件 被應用後與其環境互動形成的期望效應。   需求工程的3個主要任務   1.需求工程

需求工程——軟件建模與分析閱讀筆記一(三)

數量 細節 文檔模板 困難 普通用戶 軟件需求 結果 活動 求和 需求工程——軟件建模與分析閱讀筆記(三) 需求工程的過程: 需求獲取:需求獲取是從人、文檔、或環境中獲取需求的過程,必須用各種方法和技術來發現需求,需求開發的過程包含學習和認知的兩個過程,學習和認知是遞進的。

淩搟手作簡單分析一個面包店需要多少費用?

而且 一個 地址 bsp 宋體 會有 load 一是 ont 烘焙熱,越來越多的人投身面包蛋糕加盟行業中,但相信很多小夥伴都有很大的困惑,尤其在初次創業階段,相信大夥們內心都會有當下的問題。面包店加盟大概需要多少錢?開面包店投資分析.近年來面包在我國迅速發展起來,而面包店現

AtomicInteger 源碼分析閱讀

dsw 分析 nat java程序 .get 斷點 定義 過程 無鎖 ? 序 閱讀java源碼可能是每一個java程序員的必修課,只有知其所以然,才能更好的使用java,寫出更優美的程序,閱讀java源碼也為我們後面閱讀java框架的源碼打下了基礎。閱讀源代碼其實就

關於那些羞羞的不可描述的動作分析一個正經的機器學習專案

參加 2018 AI開發者大會,請點選 ↑↑↑ 作者 | Unknown 譯者 | czh912019784 編輯 | 查無此人 出品 | AI科技大本營 現在,機器學習已經應用在各行各業中,開發工程師隊伍越發壯大,其中有一類工程師的工作內容在外行