Re: [請益] 如何快速的看懂程式碼?
※ 引述《gogogogoooo (...)》之銘言:
: 目前剛進去工作
: 主管便把他們Team開發成品到現在的source code丟給我看
: 大概數十萬行吧 裡頭的註解非常的少 可以說是沒有
: 主管叫我自行trace code 看懂整個程式碼在幹麻
: 常常看到一大堆變數 卻完全不曉得意義為何
: 也不知道幹麼用 覺得非常的挫折
: 那種感覺就有點像是你寫了一個算式
: 例如說 3*2=6 看得懂式子
: 可是我卻不曉得他實際在幹麻
: 或許他的意義可能是有3個人 每個人有2顆蘋果 總共有6顆蘋果
: 公司是寫韌體的 算是網通廠 最近又丟了一份datasheet給我看
: 因為程式碼裡頭有些是寫入Register的 要看datasheet才知道在幹麼
: 以前也從來沒碰過硬體 看了spec也是一個頭兩個大
我自己也是待網通廠的 想我剛開始的時候 也是很慌不知該如何看起
所以就找到main()從頭開始看起 (好在那時只是8051的系統 程式不算多)
然後邊看邊做投影片畫流程.. 把整包程式的區塊分隔開來一個一個看
我建議你可以先把硬體板子拿來看 把上面的主要元件搞懂
(我那時纏著給我板子的硬體RD問阿.. 好在人家不嫌棄我菜 @@)
MCU是那個? 主要的IC又長怎樣? Flash, eeprom, RAM...
或是有溫度監控 RTC 還是PoE IC 這些板子上都可以看得到..
那為什麼會有這些元件在上面 當然有他的原因..
個別ic的功能拼起來就是這個產品要做的事...
可以去跟同事要或是google找到這些IC的datasheet
也不用一拿到就猛K 看前幾頁就好 就會告訴你這顆ic會有啥spec跟然後是做啥的
看不懂的spec wiki是你的好夥伴
弄懂硬體是做啥後 再來好好的看程式碼..
就如你說的程式碼裡頭有要寫入Register的 要看datasheet才知道在幹麼
那就切換到datasheet的視窗 找這個位址 這個開關的功能
有些IC的datasheet還會好心的告訴你這功能的目的為何
相關的register應該也是在上下頁而已
軟體叫硬體去做的事 硬體怎麼做 軟體管不著 (這就是傳說中的硬體限制)
但是要怎麼用程式碼讓IC去達成什麼樣的功能 就是用這些register控制
例如一顆switch沒有vlan tag/untag的功能 這顆IC就不能做802.1q VLAN的功能
簡單講就是給使用者一個介面(Web, console, SNMP...) 去控制這塊板子
我到覺得你剛開始這這份工作 不用急著把全部程式碼看懂在幹嘛
看懂這份程式碼的主架構跟運作的流程比較重要
因為之後會做的工作應該不外乎就是在這個架構跟流程中增修某個客戶要的功能
或是做其他的案子 把這份程式套用到不同的IC
弄清楚現在程式的架構 之後拿到其他包的程式碼再看的時候也會上手許多
: 有時候問了主管一些問題 跟我說這看天份的...
: 不曉得版上的人 剛遇到一份幾乎沒註解的code的時候
: 是怎樣才可以比較快速的去看懂整個程式碼在幹麼?
: 還是說我應該去加強什麼樣的背景 多看那一方面的書
--
我也是半菜不菜的工程師 一些些經驗...
--
我四歲的時候把球丟進水溝,煩惱了半個下午,到底該不該去把球撿起來。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.104.137.248
推
10/24 23:59, , 1F
10/24 23:59, 1F
→
10/24 23:59, , 2F
10/24 23:59, 2F
推
10/25 00:07, , 3F
10/25 00:07, 3F
→
10/25 00:10, , 4F
10/25 00:10, 4F
→
10/25 00:11, , 5F
10/25 00:11, 5F
推
10/25 01:02, , 6F
10/25 01:02, 6F
→
10/25 01:03, , 7F
10/25 01:03, 7F
推
10/25 01:17, , 8F
10/25 01:17, 8F
討論串 (同標題文章)