Re: [請益] 如何沉住氣讀別人的 code
※ 引述《Ommm5566 (56天團)》之銘言:
: ※ 引述《p52189 (鼠霸)》之銘言:
: : 如題……原始碼不長
: : 但撰碼習慣跟我完全不同
: : 到現在我也還沒找到規則
: : 以至於想改一小部分都因為不知道規則而必須幾乎全部爬一遍才改得動
: : 每次讀都很難沉住氣一下就很煩躁不想做了
: : 一直這樣很像也不是辦法
: : 請問大家有什麼方法可以坐得住嗎= =
: : 謝謝……
: : -----
: : Sent from JPTT on my HTC_M9u.
: 給原PO的答案就是 多看google fb ms 你就會覺得平常人寫code很平常
: code不好讀才是常態 就連google facebook microsoft高手也是雞雞歪歪阿
: 版本號沒遵守Semantic versioning 然後隨隨便便隨便都可以看到菱形繼承
: 建置系統像用擲硬幣決定 有相依性的library有的用cmake有的用automake
: (我看過issue: "I just want to say FUCK! waste me lots of time" 6 days ago)
: 心情好還用macro function遞迴宣告變數 IDE追不到這些變數
: 突然哪根筋不對就寫lex&yacc去parse自己規定的檔案格式
: 如果是多人貢獻一個專案 還可以看到各種風格混雜
: 1. macro派 : 絕對不會愧對GOOGLE名號的神macro function
: 2. 新潮派: 絕對不會愧對GOOGLE名號各種最新最潮的C++11玩法
: 3. C style派 : 大量typedef struct / malloc和free 我以為我在看C語言
: 4. OO派 : 超愛New和Delete 但只限於這個.h/.cpp (其他.h/.cpp使用unique_ptr)
: 5. 三位一體 : pointer/reference/ 純copy 在同一個function參數列共存
: 6. template派: 是一位很愛編譯時期決定的朋友呢
: 搞得看完整幾個相依的library我都學會所有c++ feature了
: 堂堂地表最強軟體公司也是不會統一的.......
: 至於"coding sytle" 他們通常會用clang-format去整理 所以還算一致
程式碼風格在大型專案裡頭著實是一件很難搞的事情,在很難去分高下的前提下真的要討
論往往會變成宗教戰爭,參與開源專案這幾年看過不少年薪幾百萬台幣的工程師吵風格吵
得不可開交然後又不了了之。
回到主題。閱讀他人的程式碼是一件極度需要修養的工作,除了耐心以外,老實說我也不
確定到底有啥訣竅,不過我個人蠻喜歡一個小技巧,就是幫別人的程式碼寫註解。尤其當
此次的修改需要用到別人的程式碼而且又很難啃的時候,幫忙寫點註解除了確保自己真的
有看懂以外,也可以做功德的幫助下一個可憐的工程師。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 27.247.6.62
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1517080258.A.59C.html
→ steve1012: 除非很明顯在做啥 我們幾乎所有的 code都要註解 01/28 03:45
推 mmonkeyboyy: 我遇到的快要被要求接近每一行都要 01/28 09:03
→ mmonkeyboyy: 我剛加入時就是在幫別人寫註解 Q_Q 01/28 09:04
推 diabloevagto: 每一行都要註解也太攏長了,要不要看看寫法是否可以 01/28 09:35
→ diabloevagto: 調整? 01/28 09:35
推 steve1012: 每行都要感覺只會增加維護麻煩 01/28 09:53
→ robler: 註解寫太多只是突顯程式寫的很爛的問題 01/28 10:09
推 NDark: 光寫不寫註解就吵成一片了. 還談甚麼風格. 01/28 10:16
→ NDark: ---- 以下 tab/space大戰 開始 ---- 01/28 10:16
→ b0690151: 想加註解還會收到指示說不可以寫註解.... 01/28 10:47
推 vi000246: 乾脆用中文命名變數好了 能少寫很多註解 01/28 10:58
推 mmonkeyboyy: 我也當初這樣反映過 不過要照什麼convention... 01/28 11:14
→ mmonkeyboyy: 也是只有那種很明顯的code才不用寫 01/28 11:17
噓 THEWORLDS: 讀人家代碼需要什麼休養? 就能力不夠讀的很痛苦而已 01/28 11:26
→ THEWORLDS: 代碼到底有多難讀,就跟文章一樣你是語言不熟嗎? 01/28 11:26
→ THEWORLDS: 不要自己爛就覺得讀的痛苦很正常好嗎 01/28 11:26
→ THEWORLDS: 看一下架構就知道他等級到哪了,根本沒難度好嗎 01/28 11:27
→ THEWORLDS: 不會寫的也不可能分層到哪裡去也不太需要切到幾次class 01/28 11:28
→ THEWORLDS: 可悲 01/28 11:28
→ feeya: 一個func有3~4頁常都是if包if包好幾層 這種讀的很痛苦 01/28 11:32
推 cookie1115: T大可能沒看過爛code 去金融業晃一圈就知道了 01/28 11:53
推 Raymond0710: 某T幹嘛7pupu,又不是什麼狀況你都遇過,還是你寫的co 01/28 11:56
→ Raymond0710: de,別人覺得難讀? 01/28 11:56
噓 THEWORLDS: 老子看別人code好多年,也幫別人改過 根本沒感覺 01/28 12:03
→ THEWORLDS: 就讀起來很不方便而已 沒必要講的好像看別人CODE很生氣 01/28 12:03
→ THEWORLDS: 代表自己很強,我最討厭這種裝b的 01/28 12:03
推 stosto: 看得不爽罵兩句而已,這種東西讀不懂該檢討自己吧 01/28 12:37
推 banqhsia: T大是真的沒看過程式碼寫的很爛的,所謂很爛指的是該 01/28 12:55
→ banqhsia: 縮排不縮;好幾層if;程式碼太多重覆;變數隨便亂取亂創 01/28 12:56
→ banqhsia: 看不懂是真的,因為call來call去,自己也不知道call哪 01/28 12:57
推 Masakiad: 高階語言需要註解都是本身寫太爛 01/28 12:58
推 sharku: 推樓上 01/28 13:45
推 fantasychese: 老子看別人code好多年 最討厭這種裝b的 01/28 13:49
推 abccbaandy: // 這段不要看,有需求直接砍掉重寫 01/28 13:57
→ tyc5116: T大試著去讀看看泡泡code吧,看你要花多少時間 01/28 15:46
推 vi000246: 我看過用AJAX call來call去的 追得很不爽 01/28 16:20
推 Ommm5566: 泡泡code好懷念 IOCCC大賽 01/28 18:19
→ y3k: 高階語言需要註解都不及格+1 01/28 18:31
推 shortoneal: 你也知道立場不同差很多了,搞不好下一個看到你的code 01/28 19:41
→ shortoneal: 又覺得這個人寫注解也寫的太囉嗦了,又上來PO文lol 01/28 19:42
→ shortoneal: 我也很討厭那種整天嫌人寫code怎樣的,感覺很幼稚 01/28 19:43
→ mathrew: 每行都寫反而更難讀吧 一團亂 01/28 20:24
推 Ommm5566: 現在越來越強調Hierarchy的設計了 畢竟大團隊是小團隊 01/28 20:32
→ Ommm5566: 組成 拆成小團隊就還可以 01/28 20:32
→ Ommm5566: 最表面給user使用的API介面型狀和抽象層次要同一 01/28 20:32
→ Ommm5566: 註解也盡量詳盡 這個層級的註解相當於文件了 01/28 20:33
→ Ommm5566: 然後中間各個team自行決定coding style 註解適量 01/28 20:33
→ Ommm5566: 最下層每個人會有各自的習慣 這邊就仰賴寫程度和良心 01/28 20:34
→ Ommm5566: 不管甚麼時候遇到個人習慣都是無解阿XD 01/28 20:34
→ MOONY135: BTN1 BTN2 BTN3 01/28 21:32
→ chia7712: 別激動啊。讀code的耐心不一定是指對方code不好,很多 01/28 22:08
→ chia7712: 時候只是寫code的人的邏輯差異甚大而已,而這也是為啥 01/28 22:08
→ chia7712: 註解很重要。 01/28 22:08
→ chia7712: 能不用註解就讓團隊都看懂的程式碼很棒,但事實上專案 01/28 22:13
→ chia7712: 不大還可以達到,但當你專案長到幾百萬行的時候就有難 01/28 22:13
→ chia7712: 度了 01/28 22:13
推 NDark: 樓上有邏輯漏洞. 一開始都不會認為最後會變成幾百萬行. 01/28 22:48
推 mmonkeyboyy: 我也覺得每行都寫一團亂 但就如樓上幾樓所說的要看是 01/28 22:50
→ mmonkeyboyy: 前還是後 有些API真的就是要求一行一行寫 01/28 22:51
→ mmonkeyboyy: 好處就是後面的人可以跟上 01/28 22:51
→ mmonkeyboyy: 不過最煩的還是不寫英文的...寫什麼法語之類的Q_Q 01/28 22:52
→ Kayusumi: 靠杯我看過寫日文的註解跟德文的XDD 01/28 22:55
→ Kayusumi: 變數名稱與其物理意義不相符也很囧 01/28 22:56
推 chuegou: 我現在遇到最困擾是magic number沒註解 只能乾瞪眼 01/28 23:53
推 netburst: 縮排沒差吧 IDE FORMAT一秒 01/29 00:15
推 steve1012: 事實上就是沒有完美的 coding style 什麼高階語言不用 01/29 00:58
→ steve1012: 註解在大一點的codebase 是不大可能的人人都覺得自己寫 01/29 00:58
→ steve1012: 得最漂亮 01/29 00:58
→ chia7712: NDark大說到重點了,一開始沒把專案當成大型專案來管理 01/29 02:15
→ chia7712: ,等到有一天發現已經變成怪物就來不及了,只能付出更多 01/29 02:15
→ chia7712: 時間來補救。 01/29 02:15
→ vi000246: 我主管都只想解決眼前問題 沒想到日後維護 01/29 10:14
→ vi000246: 製造出來的技術債只好後人來還了 01/29 10:15
→ leolarrel: 對於註解的想法,我的觀念是站在clean code這邊,也就是 01/29 11:21
→ leolarrel: 非必要不寫註解 01/29 11:22
推 SABA0: 沒看過用註解寫日記的吼。 看得我都要哭了 01/29 16:49
推 Sidney0503: 哈哈哈非必要不寫 所以你的命名都很完美? 01/29 18:46
→ Sidney0503: 語意真的都清楚可以讓後人看懂? 01/29 18:47
→ mmonkeyboyy: 我是廢材程式員啦 一般我都會開fold和調顏色來決定 01/29 22:49
→ mmonkeyboyy: 要不要看註釋 @_@~ 01/29 22:50
→ mmonkeyboyy: 一開始我也不太習慣一堆註釋XD 後來才發現真有人需要 01/29 22:51
推 steve1012: 常常實作還會有一些假設 複雜度也未知 沒寫注釋就是要 01/29 23:56
→ steve1012: 讀內容摟 01/29 23:56
推 littlethe: 我是看過很多人只會逼別人寫註解,然後自己死不肯寫註解 01/30 09:16
→ littlethe: 說自己寫的code好所以不寫,然後又愛批評別人的註解 01/30 09:18
→ leolarrel: Sidney0503你在悲憤啥?看清楚我表達的是非必要不寫,不 01/30 09:33
→ leolarrel: 是絕對不寫,你覺得取名技巧不好人家看不懂,不就是你說 01/30 09:33
→ leolarrel: 我說的"必要的時候"嗎? 01/30 09:34
推 Ghamu: 我都是func名稱無法表達意思 想一陣 真不得已才上註解補充 01/31 01:06
→ Ghamu: 所以對那種胡亂取名 寫一大堆註解的人超不爽想罵幹 代表根 01/31 01:06
→ Ghamu: 本就沒把其他合作開發的工程師放在眼裡嘛 01/31 01:06
→ Ghamu: clean code也說過了 註解一堆根本不可能期待會被下一個改的 01/31 01:08
→ Ghamu: 人持續更新維護 有一個人漏 下次看到註解與程式本身不一致 01/31 01:08
→ Ghamu: 就會陷入混亂 01/31 01:08
推 t64141: 同意樓上,年久失修的註解常常扮演誤導後人的角色 01/31 10:24
推文自動更新已關閉
留言