Soft_Job 板


LINE

我講一下關於coding style的部分,我認為這是一個好RD最基本的觀念 也是team work最簡單能做到的地方 舉個例好了,當前後的code都這麼寫 for(int i=0 ; i<10 ; i++) { a += 10; } 如果今天面試的人這麼寫 for(inr i=0 ; i<10 ; i++) a+=10; 我就會認定他是不懂得follow coding style的人 但如果是 for(int i =0 ; i<10 ; i++){ a+=10; } 這樣就還可以接受 有人說模組化切開就沒這個問題,但是總會有人離職 一組程式會有好幾個人碰過(我都說那是人盡可夫的程式...) 難道裡面要有四五種風格嗎?那要是被新人接到不就是要逼他走人... 新人剛進來一定會code review的,不管他工作了幾年 有人說這樣會受到約束,我倒是覺得如果約束一個人可以讓整個team更smooth 我會很樂意做這樣的事,別人不需要為你的習慣付出代價 也希望剛找工作的新鮮人能注意,個人的習慣最好能跟team的風格做個配合 ※ 引述《TonyQ (沉默是金)》之銘言: : ※ 引述《TitanSue (要算命的找我)》之銘言: : : 推 su35:要我每天去猜他的程式什麼意思 這種公司我也不願意去 把程式 09/22 00:11 : : → su35:整個都切割分開來 程式流程圖明確 不管每個人寫的風格如何 就 09/22 00:12 : : → su35:沒差了 09/22 00:13 : : 推 andymai:那原po所謂的coding style長怎樣?可以讓小弟見識一下嗎? 09/22 00:17 : : → andymai:感覺有點像把"思考模式"統一化~看到別人的code像自己寫的 09/22 00:19 : 比方說 , 像有些人會去考慮相依性問題 , : dao , model , service切得很開 , : 也就是如果你在model call dao的東西 , : 很抱歉 ,compile是會過不去的 . XD : 還有一些是命名法則跟資料夾怎麼開 ,不見得需要看到別人code像自己寫的, : 但是起碼會有一點蛛絲馬跡可尋 , 還有一些就是避免造成coding困擾的地方, : 像類別的 getter/setter 要放在class的前中後的哪一區等等 . --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.62.187.73
1F:推 fishyki:如果面試官是愛第二種一行完成的呢= =? 09/22 21:41
2F:推 TonyQ:他有提到「前後code都這樣寫」... 09/22 21:55
3F:推 VinceChen:可是Sun的Java Convention不就是第三種寫法嗎? 09/22 22:01
4F:→ VinceChen:我在Eclipse的Code Style設定中看到的(Java Conventions 09/22 22:04
5F:→ VinceChen:[build-in]) 09/22 22:04
6F:→ VinceChen:code寫的好不好看,多去看jdk的source或是apache project 09/22 22:06
7F:→ VinceChen:的src不就好了 09/22 22:06
8F:推 andymai:哇!嚴厲到連這個也要~不過...我個人也比較喜歡把左右大括 09/22 22:36
9F:→ andymai:號打出來~幹嘛省這點時間卻可能讓人debug時判斷錯誤... 09/22 22:37
10F:推 IceSword:囧,完了。我不太喜歡太正規的寫法,我連寫 For loop 09/22 22:43
11F:→ IceSword:都會 把 初始值 和 變動量 拆出來寫 Orz... 09/22 22:44
12F:推 mingtai1:我們也很重style.. code幾萬行 review起來真的有差 09/22 23:08
13F:推 streitleak:不要說幾萬 幾百行 光把{}被省略的地方 邏輯搞清楚 09/22 23:11
14F:→ streitleak:就要花很多時間了.... 09/22 23:11
15F:推 kerickuo:個人不喜歡 for( int i; 這種格式,會造成重複宣告的麻煩 09/22 23:13
16F:推 iincho:不是喜好問題, 重點是原來程式怎麼寫就怎麼跟... 09/22 23:19
17F:推 kerickuo:在實際運算值變的地方宣告變數為什麼會是好的? @_@? 09/22 23:22
18F:推 iincho:因為符合最小scope的原則.... 09/22 23:30
19F:推 poqwer:個人非常厭惡省略大跨號,因為很多小bug就是這樣來的~ 09/22 23:34
20F:推 ledia:給樓上, 用 python 吧 XD 09/22 23:35
21F:推 kerickuo:那也要用 c99 或 c++ 才會符合啊 XD 09/22 23:41
22F:推 mingtai1:i大說的沒錯..原來程式要接著maintain,code很髒就很難搞 09/22 23:42
23F:→ mingtai1:除非你願意花時間去把該變數每個出現的地方都改名稱.. 09/22 23:43
24F:→ mingtai1:ps剛講的是變數命名style.. 我甚至不喜歡i,j,m這種出現 09/22 23:45
25F:推 firedragen:我用Eclipse當IDE,有快速鍵作code style排版 09/23 00:11
26F:→ firedragen:所以只要把要維護的code的style弄成預設就ok 09/23 00:11
27F:→ firedragen:但是變數命名就真的要看習慣跟經驗了 09/23 00:12
28F:推 abcdefghi:code complete裡建議不要偷懶用 i,j,m 這種無意義的變數 09/23 00:14
29F:→ abcdefghi:名稱,即使只是一個loop裡的臨時變數,也不要偷懶. 09/23 00:15
30F:→ abcdefghi:要改正一些老傢伙或自由派的同事,還是直接搬書出來比較 09/23 00:16
31F:→ abcdefghi:快,這年頭很多人在比較程式的好壞,是在於"執行速度"和" 09/23 00:18
32F:→ abcdefghi:code size",可讀性,擴充性根本沒幾個人在意. 09/23 00:19
33F:推 TKyo:哈哈, i j k m n p, 寫很久的程式設計師都會這樣用 09/23 00:32
34F:推 GALINE:如果是小loop的loop counter,這也沒啥不好 XD 09/23 00:33
35F:→ TKyo:而這時觀看的重點是 "命名", 而非在這些暫時變數上面 ... 09/23 00:33
36F:推 ledia:dummy 就是 dummy, 我反而不能接受硬要幫他們取名字.... 09/23 00:35
37F:→ TKyo:不過, 這種命名反而不會應用到低階語言上面就是 09/23 00:35
38F:→ ledia:int i_this_is_a_dummy_index_variable; 09/23 00:35
39F:→ TKyo:因為低階語言寫作, 能不用到變數就不要用, 存取暫存器速度快 09/23 00:36
40F:→ TKyo:ledia.. int *p_this_is_a_temporary_pointer XD 09/23 00:37
41F:→ GALINE:int reportGenLoopCounterInner 雙重迴圈還送outer喔 09/23 00:38
42F:推 chph:迴圈的計數變數用 i, j 怎麼會無意義? 難道要寫 loopCounter? 09/23 00:42
43F:→ chph:這樣才是多此一舉吧 09/23 00:42
44F:→ TKyo:對了, 這種命名, 小寫的 L 會跳過, 因為會混淆 :) 09/23 00:44
45F:推 abcdefghi:dummy是指無意義,只是為了語法才留著的變數,和i並不相同 09/23 00:56
46F:→ abcdefghi:仔細想一下,每個for配合i的迴圈,其實當中的i都會有它的 09/23 00:58
47F:→ abcdefghi:意義存在,例如,把每個月的收入加總, for(i=1;i<=12;i++) 09/23 00:59
48F:→ abcdefghi:i其實就是month,那為何要寫i,不寫month? 剛開始我也覺得 09/23 01:00
49F:→ abcdefghi:CC要求i不要出現太極端,現在用久了,才覺得,真的過去的習 09/23 01:01
50F:→ abcdefghi:慣,才會覺得i的出現很合理. 09/23 01:01
51F:推 kerickuo:在這種情況下,本來就會命名為 month 吧? o_O 09/23 01:03
52F:→ andymai:之前被要求i要改成有意義的單字~像是XXXIndex等~自然名稱 09/23 01:03
53F:→ kerickuo:用 i 的情況多是拿來當 dummy 的,若是每個 iteration 有 09/23 01:03
54F:→ kerickuo:意義,且不能省略的話,那本來就不該用 i 來命名變數。 09/23 01:04
55F:→ abcdefghi:對了,其實CC裡也不建議把型別資訊放在prefix裡,不過我自 09/23 01:04
56F:→ andymai:是又臭又長~如果這又是做為List之類的存取指標~拿出來的物 09/23 01:04
57F:→ abcdefghi:已是覺得,除非在embedded裡,比較低階的情況才會加type. 09/23 01:05
58F:→ andymai:件又想直接轉型馬上用~那行程式真是長到不行=.=啥?寫成兩 09/23 01:05
59F:推 Huangs:2和3都沒有follow 1的style,為何3能接受,2就比較不能? 09/23 01:05
60F:→ andymai:行?這樣是會比較好看沒錯~但心中總覺得指標不要取那麼長就 09/23 01:06
61F:→ Huangs:另外,iterator的意義又不一定總是像month一樣簡單明瞭 09/23 01:07
62F:→ andymai:好了~有時候程式已經很好看了~再多加什麼只是畫蛇添足... 09/23 01:07
63F:→ Huangs:如果只是小小一段code如把stack裡的東西掃一遍 09/23 01:07
64F:→ Huangs:用 i, j, k 這種約定成俗的 iterator 有何不好? 09/23 01:08
65F:→ Huangs:又,例如在實作演算法時,很多變數都很抽象, 09/23 01:09
66F:→ Huangs:如Warshall的三層loop,每一層的iterator如何取具體的名字? 09/23 01:10
67F:推 abcdefghi:好不好看,是很主觀的,一個statement裡,塞了一堆運算,跟 09/23 01:13
68F:→ abcdefghi:有人把for寫成一行,不是很相似嗎? 寫程式應該是盡可能的 09/23 01:14
69F:→ abcdefghi:讓其他人看得懂才對. 掃stack,是想找什麼東西呢? 那樣東 09/23 01:17
70F:→ abcdefghi:西的名字就可以拿來取代 i, 至於一些演算法,可以直接拿 09/23 01:18
71F:→ abcdefghi:原始的paper或書籍來抄命名,如何把名字取得又清楚又不像 09/23 01:19
72F:→ abcdefghi:又不會太長,就考驗寫程式的人的coding經驗和對該領域的 09/23 01:21
73F:→ abcdefghi:深度了,多練習,慢慢就會變好. 09/23 01:21
74F:推 Huangs:大多alorithm的原始pesudo就是充滿 i, j, k 啊 :P 09/23 01:21
75F:推 ledia:噗 該死的 paper 和 itoA 上通通都是 i,j,k XD 09/23 01:22
76F:→ Huangs:很多課本(如 K&R) 或經典的 code 也都有用 i, j, k 09/23 01:22
77F:→ Huangs:另外像stack的例子 具體的變數名是 somthing=stack[i] 09/23 01:24
78F:推 abcdefghi:軟工也是會進步的,十年前寫coding style的書,和今年出版 09/23 01:25
79F:→ Huangs:而不是在 i 的地方用具體的變數名 09/23 01:25
80F:→ abcdefghi:的內容就會有不一樣了 09/23 01:25
81F:→ Huangs:因為 i 就只是一個沒有具體意義 iterator 09/23 01:25
82F:推 TKyo:想起我家有本 2x 年的 APPLE BASIC 書, 它也是充斥 i j k :D 09/23 01:26
83F:→ Huangs:那可不可以請a大教我如何簡短又具體的命名Warshall三層loop 09/23 01:26
84F:推 ledia:可能是 iVertexFrom, iVertexImmd 和 iVertexTo 吧 (誤) 09/23 01:28
85F:推 TKyo:nLoop, nLoop2....nLoopx XD 09/23 01:29
86F:推 Huangs:推前兩樓 XD 09/23 01:34
87F:推 KASUGAOSAKA:java是第三種多...c&c++是第一種多 09/23 14:05
88F:推 mingtai1:我應該說 我領域比較偏軟工,所以變數很少用ijk,因為要讓 09/23 22:03
89F:→ mingtai1:之後維護的人比較好看code.至於演算法類用ijk倒是沒意見 09/23 22:05







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Gossiping站內搜尋

TOP