作者lgd1008 (lgd1008)
看板Soft_Job
標題Re: [閒聊] Java的CheckStyle...
時間Wed Mar 30 01:22:05 2011
※ 引述《hegemon (hegemon)》之銘言:
: 最近公司開始雷厲風行地要求所有Java Code都要符合CheckStyle Plugin的標準.
: 連多年前老人留下來的東西也不例外. 最近做整個系統的檢查. 發現竟然有快二十萬個警告.
: 這還不打緊.裡面很多都是tab跟四個space,括號前後space,或是變數大小寫的問題. 那些都好解決
: 但是還有不少是啥...一個method不能超過一百五十行,或是一個method不能代入超過七個變數.
: 這兩個規定個人覺得十分不合理.
: 我們Java Code大多是在搞SQL.偏偏公司資料散在一堆tables裡面.所以每一串SQL都不是普通的長.
: 要在一百五十行內把一個SQL搞定已經很勉強了,如果這個method要用到多個SQL..保證破表.
: 至於一個method不能代入超過七個變數也很擾民.我們系統前端是VB.所以一堆變數都是從VB丟來.
: 偏偏USER又很喜歡在VB那邊加一堆comboBox,textBox之類的,這些全部都是單一SQL要用的條件.
: 上頭還要求不能用array的方式解決..要求的方法是...VB傳變數到Bean中,Bean新建一個Object.
: 然後把變數set進Object內,再丟入method中.這看起來是可行的做法.但是...卻完全沒考慮到method
: 的便利性和精簡度. 過去雖然變數多,但是註解寫好的話(其實看變數名稱就知道要怎麼用了...)
: 後面的人直接用就好了..現在卻還要先new一個Object.然後set變數,接著再丟進去method.
: method要用時,要先一個一個的get出來,然後再把這些變數弄進該用的地方.如果一個method要用到
: 不同條件的Object..光set,get就可以吃掉那一百五十行中的不少比例了.
: 適當的使用工具及規範來讓程設把Code寫乾淨我是很贊成,但是搞成這樣...根本就是擾民..
: 開始後悔到大公司上班了....
: 不知道各位對這有啥看法..
如果連實際改的人都覺得有問題的話, 最好反應看看, 看能不能選擇性遵守.
就像有多少能人在寫Java程式時能不碰到一個compiler的警告? 別說沒人能辦到, 就算辦
得到, 應該也沒人會去做這種傻事. 不然Java為何提供了@SuppressWarnings? 就是承認
會有某些違反原則但卻是合理使用的情況, 如同SQL有正規化的議題, 也會有反正規化的
議題, 例外總是存在, 沒有最佳的規則. 實際上怎樣的原則最好, 最好是由實際參與的人
建議. 有時狀況外的人按著書本/直覺下指令反而會把事情搞砸.
best practice有時會是worst practice, 這句話在Java裡正確, 而當parctice套用在原
本不相關領域時, 更是格外正確. 低著頭讓Java牽著SQL的鼻子走, 只會讓你得到合格的
Java, 不合格的SQL. 別低著頭走多抬起頭來看看, 怎麼走最好還是實際在走的人說的
最準.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.161.78.58
→ andymai:是應該用領域的觀點為主~設記為輔去寫程式沒錯~但是150行 03/30 02:13
→ andymai:和七個參數~個人認為function寫這樣~真的有思考重構的必要 03/30 02:14
推 jainnkae:sql 跟 java 混寫在一起不亂也難啊 03/30 06:59
推 hegemon:每行行數包括空格不可超過80的字元.過長要拆行 03/30 22:25
→ hegemon:怎麼還有人覺得超過150行很難? 這樣就想要重構.那現在 03/30 22:26
→ hegemon:系統中超過80%的code都要重構.... 03/30 22:26
→ andymai:我記得空格、過長拆行和註解是不算在內的吧...150行的限制 03/31 05:22
→ andymai:是防範在裡面寫了太多邏輯~讓PG思考是否有拆出去的必要 03/31 05:23