強者不需要註解 - 履歷
By Robert
at 2016-07-21T22:09
at 2016-07-21T22:09
Table of Contents
※ [本文轉錄自 Soft_Job 看板 #1NaDPESF ]
作者: ggg12345 (ggg) 看板: Soft_Job
標題: Re: [請益] 強者不需要註解
時間: Thu Jul 21 22:03:55 2016
: ※ [本文轉錄自 Tech_Job 看板 #1NZjKqjl ]
:
: 作者: randomly (倫敦鐵橋垮下來) 看板: Tech_Job
: 標題: [請益] 強者不需要註解
: 時間: Wed Jul 20 09:34:41 2016
:
: 大家早,
: 我轉發了各位在上篇討論的結果給我剛退伍的同學,
: 小弟先代他謝謝各位的回覆,
: 但是...
:
: 這件事情居然有後續,我也先建議他趕快開履歷重找工作了
: 他手上那份source code其實
: 「完全沒有註解」
: 而且聽說也是架構不明,各種奇怪的coding方式跟變數命名
: 還有很多跟實際功能搭不上的function名稱
:
: 奇怪的coding舉例:
: int functionX(int data, int Size, int Length)
: {
: ...
: functionY(data,Length,Size)
:
: }
:
: int functionY(int data, int Size, int Length)
: {
: ....
: }
:
: 我光看這段就覺得無言了
: code真的很亂的感覺
:
: 他說他有問主管為什麼code沒註解也沒有文件
: 主管說:「強者不需要註解」
:
: --
: → kenjy: 還看過 fun_x(a,b,c) { ...; fun_x(a,b,c); ...;} 07/20 22:12
: 推 jasonwu23: 我猜functionY裡是要 { ...; return functionX(...);} 07/20 22:32
: → jasonwu23: 也許是額外的需求, 但改動量太低, 這樣改最快. 07/20 22:33
: → jasonwu23: 像是Windows API 中一大堆 CreateXYZ, CreateXYZ 這樣? 07/20 22:34
: → jasonwu23: 最難的是讀懂,接著幹.次一級是整段打掉重寫,Debug到順. 07/20 22:36
: → jasonwu23: 再差一級是看不懂,亂罵一通,推給別人,別人還是得接著幹 07/20 22:37
: 推 jasonwu23: 一直都會有人拿一份舊code給我, 叫我加個什麼功能. 07/20 22:51
: → jasonwu23: 沒有一個是好讀懂的,能不做嗎?先build通再想辦法debug 07/20 22:52
: → jasonwu23: 看懂原作者的想法,再加新的需求上去不影響原來功能. 07/20 22:52
: → jasonwu23: 大家不都是這樣的嗎.看不滿意順手幫你經過的地方加註解 07/20 22:53
: → jasonwu23: 不就好了嗎, 這樣以後的人至少經過這邊就看的懂了. 07/20 22:54
: → Vitaceae: 然後勞心勞力幫人擦屁股還沒有績效 07/20 23:08
: 推 jasonwu23: 當然會有,你功力進步,同事也看在眼裡,別只是想著功利 07/20 23:22
=====================================================================
這裡有一位有經驗的高手 jasonwu23, 說出了程式被維護成這樣子的原因.
沒有有意義命名的變數名稱, 沒有註解說明, 程式還是能被看得懂, 甚至修改
到加入額外的功能. 這在早期(大約就是30年前)的台灣就是這樣的環境. 把程
式的機器碼透過反組譯幾乎就是這樣子, 反組譯若不再經過人工判讀compiler
的轉譯規則是不會自動產生 symbolic function module 的.
原代post 舉的例 就是 functionX 有段幾乎同樣帶入相同參數名稱, 但很類似
結果名稱的 functionY. 是否像 jasonwu23 大大的說明, 需要再貼完整的
functionY.
假設 funtionX 是處理 data 獲得結果帶回去的主要模組, 再假設在某些情況下
這模組是正確的(譬如英文字串), 現在資料使用的狀況變了(譬如要對中文字串
也能有類似處理), 必須做功能擴充. 負責更新維護的就只要把新功能(如中文)
加進負責處理的這塊模組就好. 所以, 只要找到該功能的 functionX, 再針對需
要變更處理的對象(如中文)補進處理方式的 functionY 就好. 但帶進來的參數是
一樣的, 最後的結果再經 functionX 名稱帶回結果.
我猜 這是 jasonwu23 大大想表達的 維持原功能又只做到擴充新功能的 最簡潔
辦法.
只要找到那個關鍵的模組, 以類似原來的方法把新功能以不動舊模組的方案補進
去, 即使在萬行程式碼的千軍萬馬中, 如入無敵的直取敵軍將帥首級.
舉例未必正確, 有請 jasonwu23 大大補充.
--
作者: ggg12345 (ggg) 看板: Soft_Job
標題: Re: [請益] 強者不需要註解
時間: Thu Jul 21 22:03:55 2016
: ※ [本文轉錄自 Tech_Job 看板 #1NZjKqjl ]
:
: 作者: randomly (倫敦鐵橋垮下來) 看板: Tech_Job
: 標題: [請益] 強者不需要註解
: 時間: Wed Jul 20 09:34:41 2016
:
: 大家早,
: 我轉發了各位在上篇討論的結果給我剛退伍的同學,
: 小弟先代他謝謝各位的回覆,
: 但是...
:
: 這件事情居然有後續,我也先建議他趕快開履歷重找工作了
: 他手上那份source code其實
: 「完全沒有註解」
: 而且聽說也是架構不明,各種奇怪的coding方式跟變數命名
: 還有很多跟實際功能搭不上的function名稱
:
: 奇怪的coding舉例:
: int functionX(int data, int Size, int Length)
: {
: ...
: functionY(data,Length,Size)
:
: }
:
: int functionY(int data, int Size, int Length)
: {
: ....
: }
:
: 我光看這段就覺得無言了
: code真的很亂的感覺
:
: 他說他有問主管為什麼code沒註解也沒有文件
: 主管說:「強者不需要註解」
:
: --
: → kenjy: 還看過 fun_x(a,b,c) { ...; fun_x(a,b,c); ...;} 07/20 22:12
: 推 jasonwu23: 我猜functionY裡是要 { ...; return functionX(...);} 07/20 22:32
: → jasonwu23: 也許是額外的需求, 但改動量太低, 這樣改最快. 07/20 22:33
: → jasonwu23: 像是Windows API 中一大堆 CreateXYZ, CreateXYZ 這樣? 07/20 22:34
: → jasonwu23: 最難的是讀懂,接著幹.次一級是整段打掉重寫,Debug到順. 07/20 22:36
: → jasonwu23: 再差一級是看不懂,亂罵一通,推給別人,別人還是得接著幹 07/20 22:37
: 推 jasonwu23: 一直都會有人拿一份舊code給我, 叫我加個什麼功能. 07/20 22:51
: → jasonwu23: 沒有一個是好讀懂的,能不做嗎?先build通再想辦法debug 07/20 22:52
: → jasonwu23: 看懂原作者的想法,再加新的需求上去不影響原來功能. 07/20 22:52
: → jasonwu23: 大家不都是這樣的嗎.看不滿意順手幫你經過的地方加註解 07/20 22:53
: → jasonwu23: 不就好了嗎, 這樣以後的人至少經過這邊就看的懂了. 07/20 22:54
: → Vitaceae: 然後勞心勞力幫人擦屁股還沒有績效 07/20 23:08
: 推 jasonwu23: 當然會有,你功力進步,同事也看在眼裡,別只是想著功利 07/20 23:22
=====================================================================
這裡有一位有經驗的高手 jasonwu23, 說出了程式被維護成這樣子的原因.
沒有有意義命名的變數名稱, 沒有註解說明, 程式還是能被看得懂, 甚至修改
到加入額外的功能. 這在早期(大約就是30年前)的台灣就是這樣的環境. 把程
式的機器碼透過反組譯幾乎就是這樣子, 反組譯若不再經過人工判讀compiler
的轉譯規則是不會自動產生 symbolic function module 的.
原代post 舉的例 就是 functionX 有段幾乎同樣帶入相同參數名稱, 但很類似
結果名稱的 functionY. 是否像 jasonwu23 大大的說明, 需要再貼完整的
functionY.
假設 funtionX 是處理 data 獲得結果帶回去的主要模組, 再假設在某些情況下
這模組是正確的(譬如英文字串), 現在資料使用的狀況變了(譬如要對中文字串
也能有類似處理), 必須做功能擴充. 負責更新維護的就只要把新功能(如中文)
加進負責處理的這塊模組就好. 所以, 只要找到該功能的 functionX, 再針對需
要變更處理的對象(如中文)補進處理方式的 functionY 就好. 但帶進來的參數是
一樣的, 最後的結果再經 functionX 名稱帶回結果.
我猜 這是 jasonwu23 大大想表達的 維持原功能又只做到擴充新功能的 最簡潔
辦法.
只要找到那個關鍵的模組, 以類似原來的方法把新功能以不動舊模組的方案補進
去, 即使在萬行程式碼的千軍萬馬中, 如入無敵的直取敵軍將帥首級.
舉例未必正確, 有請 jasonwu23 大大補充.
--
Tags:
履歷
All Comments
By Rachel
at 2016-07-25T19:20
at 2016-07-25T19:20
By Cara
at 2016-07-30T17:45
at 2016-07-30T17:45
By Daniel
at 2016-08-01T05:20
at 2016-08-01T05:20
By Regina
at 2016-08-04T06:04
at 2016-08-04T06:04
By Ina
at 2016-08-05T12:58
at 2016-08-05T12:58
By Christine
at 2016-08-06T00:23
at 2016-08-06T00:23
By Mary
at 2016-08-09T09:24
at 2016-08-09T09:24
By Heather
at 2016-08-13T12:04
at 2016-08-13T12:04
By Doris
at 2016-08-14T00:33
at 2016-08-14T00:33
Related Posts
研究助理經歷有利於求職嗎?
By George
at 2016-07-21T20:02
at 2016-07-21T20:02
台南三星科技
By Zanna
at 2016-07-21T19:46
at 2016-07-21T19:46
徵求科學專任講師(無相關經驗可)
By Poppy
at 2016-07-21T11:45
at 2016-07-21T11:45
Re: [心得}澳洲打工度假二年回來後找工作好難
By Elma
at 2016-07-21T11:39
at 2016-07-21T11:39
研究助理經歷有利於求職嗎?
By Faithe
at 2016-07-21T10:15
at 2016-07-21T10:15