Re: [轉錄] Code Review: 大家都應該做的事情

看板Soft_Job作者 (不下棋=.=)時間12年前 (2011/08/20 10:31), 編輯推噓3(304)
留言7則, 5人參與, 最新討論串17/18 (看更多)
※ 引述《lovdkkkk (dk)》之銘言: : 前文恕刪 : 我覺得 code review 是有用處的, 首先是人難免會寫些蠢 code, : 例如 : if (a == b) : return true; : else : return false; : 或者 : if (b) { : // just do nothing : } : else { : do something... : } : 蠢不蠢? 實在真的有夠蠢, 蠢到我講給別人聽自己都會笑個不停, : 但是沒辦法, 有時一段 code 修來改去就是會變這樣, : 我也沒辦法確保自己未來不會再寫出這類 code, : 因為當下真的很難意識得到 : 也不一定只有強的能 review 比較不強的, 前不久我就看到一段多餘邏輯, : 寫的人是二三十年老經驗, 我也認為他很強, 但還是發生了, : 大概像底下 : if (b) { : if (a) : do something : } : if (!b) { : if (a) : do something : } : 這不是強弱問題, 不是經驗多少問題, : 只是智者千慮必有一失, 廢材腦袋空空做白日夢還是會偶有一得, : 不考慮上面的部份, 另一個角度來說這也關係到壓力及生產力, : 這部份就需要一個高手來 review 底下菜鳥, : 假若流程是寫完 code 直接上線跑測試的話, 那對菜鳥來說壓力其實是大的, : 因為沒有人把關, 要全靠自己, 反應下去就是效率會是低的, : 因為菜鳥要花數十到上百倍的時間, 才有辦法寫出跟高手一樣水準的東西, : 假若流程是寫完 code 後會經由高手 code review 再修改過, : 對菜鳥來說他可以放心大膽的寫一個比較粗糙的原型, : 再由高手花一點點時間將它精緻, 菜鳥也順便學習, : 對高手來說, 可以省去做原型中苦工的部份, : 只做最後精緻及調整的部份, 也能順便接收一些菜鳥花功夫整理過的資料, : 這邊有個前提是要有一定的規範及標準, 菜鳥寫也不是隨便亂寫, : 仍然要符合一定的架構原則及風格, 高手來看才不會反而更費功夫, : 工作內容也應該訂清楚, 把苦工做到哪裡, 什麼情況該反應等等 : 這其實是對菜鳥和高手都有好處, 菜鳥可以吸收一些高手的歷練, : 高手可以省去一些不太花腦但是耗時費工的苦工, : 當然菜鳥不可能立刻能提昇多少, 但即使每次只有一點點小進步, : 累積一兩年後也是很可觀的 根據我的認知 一段code好不好可以從很多角度來評估 其中包括效能 可維護性 可閱讀性等等 拿lovdkkkk的部分片段舉例好了 if (a == b) return true; else return false; 這段code在效能上有差嗎 我想用3元運算的寫法大概只是code會變得比較短而已吧 但是可閱讀性不見得比較好 我想說的是...有時候比較長的code未必就是爛 在不影響效能的前提下 就算寫長一點 讓人比較好閱讀會比較好 要是寫個很短的code.. 然後讓人一看到就想... "沒看過這種寫法 這真的能跑嗎"? 然後別人可能就需要花時間去驗證 就算驗證結果真的能跑 也不見得好 我曾經寫過if(a==true)或if(a==false)之類的code然後被人批評=.=+ 當然...寫if(a)或if(!a)看起來會比較簡短 不過我看code會比較喜歡看到別人寫if(a==true) 覺得這樣比較清楚 我覺得所謂的笨code應該是效能影響太大或邏輯有錯的code 例如: ArrayList tempList; ...(tempList的值可能被改變) if(tempList.size()==0||tempList==null){ ... } 我覺得這個才叫笨code 喜歡寫短code的話...不如去看一本叫做short coding的書吧 該書內容是在敘述如何寫出最簡短的code... 就算程式跑起來很容易出問題或者有很多限制也沒關係 或許那種code看起來很聰明...但是我認為... 那只是整閱讀的人用的而已 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.136.125.198

08/20 10:32, , 1F
那段其實只要 return (a==b) 應該不必三元 @@
08/20 10:32, 1F

08/20 10:33, , 2F
對厚...(遮臉)
08/20 10:33, 2F

08/20 10:34, , 3F
差在少個判斷 以及幾個 byte 假若是 js 要傳到 client
08/20 10:34, 3F

08/20 10:34, , 4F
或者要跑在會為了幾 k 斤斤計較的地方等等
08/20 10:34, 4F

08/21 01:41, , 5F
這code也不算笨, 反正一跑應該就會NullPointer了 ._.a
08/21 01:41, 5F

09/01 23:29, , 6F
請問if(tempList.size()==0||tempList==null 要如何改寫?
09/01 23:29, 6F

09/21 02:19, , 7F
反過來XD
09/21 02:19, 7F
文章代碼(AID): #1EJnnoIe (Soft_Job)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 17 之 18 篇):
文章代碼(AID): #1EJnnoIe (Soft_Job)