作者HZYSoft (PCMan)
看板Soft_Job
标题Re: [请益] 如何沉住气读别人的 code
时间Fri Jan 12 22:44:29 2018
※ 引述《p52189 (鼠霸)》之铭言:
: 如题……原始码不长
: 但撰码习惯跟我完全不同
: 到现在我也还没找到规则
: 以至於想改一小部分都因为不知道规则而必须几乎全部爬一遍才改得动
: 每次读都很难沉住气一下就很烦躁不想做了
: 一直这样很像也不是办法
: 请问大家有什麽方法可以坐得住吗= =
: 谢谢……
: -----
: Sent from JPTT on my HTC_M9u.
好久没上 BBS,来分享一下一些看 code 心得
1. 不要排斥使用图形界面 IDE:
虽然熟练操作各种 editor 一直打指令真的很帅,IDE 有些功能真的非常好用
在 function 名称上点一下自动跳到 code, 变数名称点一下可以跳到在哪 define
写错语法还会帮你划线,点一下又可以跳回刚看一半的地方,看 code 会快满多。
有些还可以帮你快速找出所有 Usage + 批次改名,效率很好。
2. 用 grep 找到进入点开始 trace,例如搜寻 web service 的 endpoint 名称
找 UI 上有的字串,或是以设定值的名称去找,看是哪段 code 读那个设定
这可以帮助你快速找到相关 code 在哪些档案。
3. Trace code 一边看一边作笔记
从进入的 function 开始,把整个 call stack 每一层笔记下来,包括档名
和函数名称,并且 summary 你初步了解里面做了什麽。
这个非常有用,不然深入几层之後,很快就迷路了
4. 边读边补注解,顺手 rename 一些取不好的变数名称
每看懂几行,就帮他补一些注解,帮助自己也帮助後人
5. 使用 static code analyze 的工具,找出没在用的 code 和 file,
然後全部删掉!!! 对一个陈年专案来说,你会很惊讶有多少是没用的 code
6. 边看边 refactor,把太长的 function 拆小
假设不是 public method 还可以顺便改名,让他比较 readable
注: 如网友补充,在某些大公司,随便 refactor 不相关的部份是被禁止的,
毕竟这样会造成 QA 测试需要重做,code review 需要重做,也会影响合作
开发的队友,实际工作上我自己带的团队,我也是不建议 team member 随意
refactor 在开发计画以外的部份。但有时候新创公司经历了快速成长期,
你需要把一些 prototype 做成真正 production 品质的产品,那这样就很合适。
7. 多参加 open source 专案,久了就会习惯看来自各国的各种 code
8. 多买一个萤幕,一边开文件一边开 code,看起来也会比较快
一些小心得分享,希望有帮助 :)
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.24.49.213
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1515768272.A.392.html
※ 编辑: HZYSoft (114.24.49.213), 01/12/2018 22:46:41
1F:推 kyuudonut: \首推 Pcman/ 01/12 23:03
2F:→ freeunixer: pcman 快 update 修好短网址功能好吗? 01/12 23:05
3F:推 NCTUbigGG: 推起来! 01/12 23:05
4F:→ lukelove: pcman ! pcman 01/12 23:06
5F:推 w2sw2sw2s: 推! 01/12 23:18
6F:推 vi000246: 有神快拜 01/12 23:37
7F:推 drajan: 楼下酸中英夹杂 01/12 23:45
8F:推 g5637128: 推 01/12 23:48
9F:推 join183club: pcman大大,新酷音可以再持续update吗? 01/13 00:59
10F:推 TitanEric: 推 01/13 01:00
11F:推 ericthree: 跪着推文 01/13 01:20
12F:推 cool9203: 跪了,是pcman!! 01/13 01:27
13F:推 summerleaves: 推PCMAN 01/13 01:27
14F:推 obamina48: 推 PCMan !!!!!! 01/13 01:39
15F:推 kai0975: 推推是你 01/13 02:20
16F:推 pptsodog: 我跪了 01/13 02:56
17F:推 TianBonBon: 只能推了 01/13 04:01
18F:推 kakkokari: 有神已跪 01/13 04:19
19F:推 happierway: 推!!! 01/13 05:21
20F:推 shaform: <(_ _)>!! 01/13 06:39
21F:推 shiauji: 他 01/13 08:19
22F:→ shiauji: 推 01/13 08:19
23F:推 pc031564: yo, PCMan 01/13 08:28
24F:推 didila: 娘子快来,有神快拜 01/13 08:32
25F:→ sanpf: 妈,我在这 (@o@)/ 01/13 09:01
26F:推 wilson85771: 朝圣推!! 01/13 09:06
27F:推 za075056: 跪 01/13 09:17
28F:推 SuperCry: Mac上的雅虎键盘有人在维护吗 01/13 09:17
29F:推 supertitler: 路过推 01/13 09:37
30F:推 yupog2003: 推 01/13 09:46
31F:推 alandidi: 推 01/13 10:56
32F:推 sqr: 可以在这里回报PCMAN使用上的问题吗? 01/13 11:22
33F:推 YungMH: 推 01/13 11:22
34F:→ sqr: 刚换笔电Nitro5 发现九宫格的PgDn无法使用 01/13 11:24
35F:→ sqr: Home End PgUp 皆正常 也确认该键在其他状况下可正常操作 01/13 11:25
36F:推 vn509942: 边看code边喝酒边听歌 不知不觉 又过一天 01/13 11:52
37F:推 abc53: 推 01/13 11:55
38F:推 v9290026: 有神快拜 01/13 12:32
39F:推 rockneila: 推 01/13 12:43
40F:→ descent: 我会把程式码印出来在纸上慢慢看, 比较不会中断记忆。 01/13 12:52
41F:推 popcool: 大神有拜,bug 退散,已跪 01/13 13:11
42F:推 noli523: 感谢,来朝圣 01/13 13:20
43F:→ MOONY135: 娘子 快来用PCMAN看PCMAN 01/13 13:24
44F:推 goldie: 推 01/13 14:12
45F:推 yahooc: 这才是好习惯 01/13 14:14
46F:推 XJY13: 有神快拜!! 01/13 14:39
47F:推 coolcliff01: 先跪再说 01/13 14:57
48F:推 RunRun5566: 还好现在有语法检查器,可以帮忙检查没在使用的code 01/13 15:51
49F:推 BellCranell: 跪拜 大神发钱 01/13 15:55
50F:推 cscjp6: 跪着推 01/13 15:59
51F:推 VisualStudio: 推 01/13 16:38
52F:推 luli0034: 好 遵命 01/13 17:04
53F:推 THEWORLDS: 01/13 17:18
54F:推 purplebfly: 能帮忙改个pcmanx的版本吗?加个自动开图,谢谢 01/13 18:18
55F:推 typepeter: 推 01/13 18:28
56F:推 haydou: 朝圣 01/13 19:04
57F:推 cooljason2: 推实用,善用工具 01/13 19:05
58F:推 fatan19928: 推 01/13 19:47
59F:推 abcdefgs0324: 推 01/13 20:15
60F:推 starlion: 有神快拜 01/13 20:56
61F:推 TAKADO: 推大神 01/13 21:08
62F:推 hero0123: 推PCMAN~ 01/13 21:18
63F:推 YAYA6655: 神人快拜 01/13 21:47
64F:推 madcloud: 快拜神人 01/13 21:56
※ 编辑: HZYSoft (61.216.8.103), 01/13/2018 22:10:20
65F:推 y2468101216: 推 01/13 22:03
66F:推 es8603: 推 pcman耶!! 虽然我现在比较喜欢welly了XD 01/13 22:34
67F:推 sharku: 推 01/13 22:42
68F:推 a8319: 正在用pcman 01/13 22:58
69F:推 hellomotogg: 用PCMan推PCMan 01/14 03:58
70F:推 starlit357: 朝圣推 01/14 08:05
71F:推 akito117: 推 01/14 08:15
72F:推 iitze: 推 01/14 09:10
73F:推 okeoke: 推 01/14 10:12
74F:推 walkman: push 01/14 10:24
75F:推 y3k: PCMan只能推了 01/14 11:34
76F:推 leafwind: 朝圣 01/14 12:35
77F:推 pig0038: 神串留名 01/14 13:11
78F:推 tonytonyjan: 虽然都是常识,但推细心整理 01/14 13:17
79F:推 p52189: 竟然钓出神兽XDDDDDD 建议很实用,谢谢~ 01/14 13:17
80F:推 doraremon: ˋPCManˊˋPCManˊ 01/14 14:14
81F:推 HMW: 朝圣推 01/14 16:01
82F:推 hotahaha: 先朝圣 01/14 16:12
83F:推 EngRookie: 可以推荐IDE软体吗 我只会用source insight 01/14 16:34
84F:推 boy955403: 朝圣推!! 01/14 18:13
85F:推 babypanda: 推推 01/14 19:24
86F:推 Ronee: 推 01/14 20:07
87F:推 andy88566y: <(_ _)> 01/14 22:18
88F:推 Perservere77: 感谢分享 01/14 22:33
89F:→ PUTOUCHANG: slickedit 还可以 01/14 23:29
90F:推 sqr: PgDn问题解决了 01/15 03:45
91F:推 jack58: sourceinsight就很够了吧 01/15 10:17
92F:→ leolarrel: 我都用cscope + ctags 01/15 10:56
93F:推 nfsong: 朝圣 01/15 11:29
94F:推 jet113102: 朝圣 01/15 11:57
95F:推 ckm0089: 推! 01/15 15:49
96F:推 myfirstjump: okay 01/15 20:52
97F:推 aqua2: 推推 01/15 21:52
98F:推 Vick753: 朝圣 01/16 09:46
99F:推 DCTmaybe: 朝圣推 01/16 12:03
100F:推 nonumber: 朝圣 01/17 01:10
101F:推 single4565: 推 01/17 03:11
102F:推 Luos: Atom 有没有1的功能? 01/17 09:36
103F:推 cakecjack01: 朝圣推 01/17 11:00
104F:推 kihiko: 推 01/17 11:34
105F:推 jing007: 我想请教笔记该如何做?是要写注解,还是另外写在纸上或 01/17 11:45
106F:→ jing007: 文书软体上,我实在不太会做笔记的方式说... 01/17 11:45
107F:推 smileray: 推神兽XD 01/17 13:08
108F:推 cacasumu: 朝圣~ 01/17 14:26
109F:推 renejanse: 推 01/17 22:10
110F:推 TAMSHUI: 推! 01/18 02:26
111F:推 hao830103: 喔喔喔喔喔喔!!!!!!!!!!! 01/18 17:34
112F:推 BlazarArc: 朝圣 01/18 20:29
113F:推 asdg62558: 推 01/19 14:02
114F:推 ines1969: 新酷音好好用啊 01/19 19:28
115F:推 HowLeeHi: pcman大神推! 01/19 20:34
116F:推 g12288: pcman必推 01/20 00:24
117F:推 CHOCOLATER00: 推pcman 01/21 00:42
118F:推 cdanyu: 推 01/24 22:38
119F:推 wayne0530: 神串留名 01/27 09:22
120F:推 penut85420: 推推 01/29 14:21
121F:推 gonnaberay: 推 01/29 23:51
122F:推 apley: 用PCMAN看PCMAN开昵名是PCMAN的帐号上来PO文被版众推PCMAN 09/27 21:36