近期換了新公司江耀,然后接手了一個(gè)已經(jīng)開(kāi)發(fā)接近兩三年,版本升級(jí)到4.0的老代碼诉植。接手之后,開(kāi)始傻乎乎的去閱讀代碼昵观,試圖去理解分析代碼里當(dāng)時(shí)的開(kāi)發(fā)者想要表達(dá)的“意境”晾腔。但是讀著讀著就發(fā)現(xiàn)了我完全不理解舌稀,這個(gè)是什么鬼,那個(gè)方法是干什么用的(雖然語(yǔ)法我都懂)灼擂,這里怎么突然加了這么一個(gè)屬性壁查,那里注冊(cè)的通知是干嘛的,怎么也不寫(xiě)個(gè)注釋?zhuān)ㄈ绻业耐驴吹搅瞬灰獓娢?n(≧▽≦)n)剔应?甚是頭疼睡腿。
后來(lái)在知乎上看到了鐘穎(https://www.zhihu.com/people/ios_dev)大神在知乎的回答,算是茅塞大開(kāi)峻贮,原來(lái)大神們也是這么接觸iOS代碼的席怪。
以下是鐘穎Cyan的回答:
如果你想把代碼完全搞懂,那恐怕你到實(shí)習(xí)結(jié)束也不能實(shí)際投入項(xiàng)目中纤控。所以開(kāi)始進(jìn)入一個(gè)項(xiàng)目挂捻,特別是已經(jīng)做了很多年的項(xiàng)目,一開(kāi)始你只要摸清楚項(xiàng)目的整體架構(gòu)和風(fēng)格就好了船万。
在我有限的經(jīng)驗(yàn)里面刻撒,通常進(jìn)入一個(gè)老的項(xiàng)目是從改 bug 和界面改造開(kāi)始的。然后慢慢的就熟悉了項(xiàng)目一些大體的設(shè)計(jì)耿导。
以下個(gè)人習(xí)慣僅供參考:
- 瀏覽項(xiàng)目的目錄結(jié)構(gòu)声怔,熟悉項(xiàng)目文件組織的習(xí)慣和項(xiàng)目的一些配置
- 多 target 的項(xiàng)目搞清楚各個(gè) target 是干什么的
- 找到 delegate 看 app 怎么完成初始化的,做了哪些 SDK 的配置
- 順著 root vc 走下去看幾個(gè)常見(jiàn)界面的 vc舱呻,搞清楚項(xiàng)目使用的設(shè)計(jì)模式
- 搞清楚項(xiàng)目在幾個(gè)常見(jiàn)組件上面的解決方案醋火,比如網(wǎng)絡(luò)通訊、數(shù)據(jù)存儲(chǔ)狮荔、圖片緩存 等等
- 看看項(xiàng)目用了哪些三方的庫(kù)胎撇,比如 ReactiveCocoa 和 BlocksKit 這種常見(jiàn)的
- 看看項(xiàng)目有哪些約定俗成的東西,比如一些常用的工具類(lèi)和擴(kuò)展方法
- 看看編譯腳本搞了些什么殖氏,以及在公司是如何集成編譯的
- 看看項(xiàng)目有沒(méi)有哪些地方有潛在的坑晚树,比如做了 swizzling 的地方
原帖地址:
https://www.zhihu.com/question/37161344/answer/78156203
開(kāi)始去修改BUG咯~