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