→ andymai:加縮寫也是coding規範吧?只要大家達成共識就好了~不過個人 05/23 13:01
→ andymai:是支持加縮寫的~不需要移上去就很直覺的知道那是什麼~如果 05/23 13:04
→ andymai:都用有提示的IDE寫~那這個規範當然可有可無~但若像我同事 05/23 13:04
→ andymai:都用vim寫~那這個規範就很有用... 05/23 13:05
推 Baternest:你可以試看看訂一份命名原則甚至是coding style的文件 05/23 13:13
→ Baternest:給所有人參考 不過老闆沒要求的話 大概是堆不動... 05/23 13:13
→ FukadaKyoko:不是 我們"沒有"規範 所以這就是討厭的地方 05/23 13:13
→ FukadaKyoko:個人用個人的方法做 code很亂 05/23 13:13
→ FukadaKyoko:B大 沒錯 就是推不動... 05/23 13:13
→ FukadaKyoko:andy, 我們用vs所以有提示, 因此要在意的應為變數意義 05/23 13:14
→ TonyQ:"實際上同事可以接受也沒有閱讀困難" 05/23 13:14
→ TonyQ:我是建議你別找團隊麻煩 05/23 13:14
→ TonyQ:可以用 vs 有提示跟一看到就知道型別還是有差 05/23 13:14
→ TonyQ:幾乎所有 IDE 除動態語言外,都是有提示型別的。 05/23 13:15
→ TonyQ:對開發團隊而言,要改變重視除非有迫切性的需求,不然只是 05/23 13:15
→ TonyQ:看不爽看不順眼這種理由是最最最最最最最最最爛的理由 05/23 13:15
→ FukadaKyoko:板大 但我實際詢問下 也沒有人在依靠縮寫判斷型別 05/23 13:18
→ FukadaKyoko:這個算不算"重視"我不確定 因為大家只是看舊的code有 05/23 13:19
→ FukadaKyoko:就都跟著加上 如他們所說只是"習慣" 而非"必需" 05/23 13:19
→ FukadaKyoko:甚至有的人是來了專案之後才跟著加的 05/23 13:19
→ FukadaKyoko:至於我的理由是"這種命名沒有意義" 如文中所述 05/23 13:20
→ TonyQ:"迫切性" :Q 05/23 13:20
→ FukadaKyoko:所以想問一下 板大也會加嗎? 05/23 13:21
→ TonyQ:我會。 05/23 13:21
→ TonyQ:不過如果團隊有規範是不加、我也不加。 05/23 13:21
→ FukadaKyoko:迫切性應該是針對時間點? 這個改變任何時候都可以做啊 05/23 13:21
→ TonyQ:重點在遵守團隊既有規範,這種規範除非是 boss 去推,不然很 05/23 13:21
→ TonyQ:難強硬去推。理由在於,如果團隊一個人看某件事不爽就要改 05/23 13:22
→ TonyQ:那要改得可多的是... 05/23 13:22
→ FukadaKyoko:那所以加或不加的理由呢? 我想討論不只是規範的問題 05/23 13:22
→ TonyQ:像這種 coding rule 一般來講是不會有迫切性的需求,也就是 05/23 13:22
板大說的沒錯, 遵循規範
但我們專案現在就是沒有規範
而我們主管又不強硬推行
所以我自己個人想嘗試一步一步進行
而在縮寫這邊有個卡關
我是看這件事不爽
但我也有提出我的看法以及引用網路文章/書本做為佐證
並非單純情緒性的要求
但同事只是因為"習慣", "反正就是這樣寫"
我覺得這樣不是要做一件事的理由
再說, 團隊中有人覺得任何事要改
我覺得很OK, 只要提出正確的理由
為什麼不能改?
就算有團隊規範, 規範也可能是不好/過時的
難道不該有人出來說要改嗎?
舉個極端的例子
如果團隊規範說每行的分號要用2個
難道我們不該出來指責這件事情的荒謬?
在以vs編輯C++的狀況下, 我自己是認為"不加"大於"要加"
板大自己會加, 我也很想聽看看為什麼"要加"大於"不加"
望請指教
※ 編輯: FukadaKyoko 來自: 220.133.45.115 (05/23 13:29)
→ TonyQ:說基本上是不會改。 05/23 13:23
→ TonyQ:實際上的意義,就幾個點來看 05/23 13:23
→ TonyQ:就意含命名而言,非常容易衝名。 05/23 13:23
→ TonyQ:像是 labelName , txtName 之類的,一個是姓名標籤,一個是 05/23 13:24
→ TonyQ:textbox 的標籤。 05/23 13:24
→ TonyQ:另一個是視覺上就能分辨型別(這個的問題相對小一點,前面的 05/23 13:24
→ TonyQ:比較顯著。),不過也有另一票是不用型別。 05/23 13:25
→ realmeat:到了管理整個project的位置時, 你就可以要求了 05/23 13:25
→ TonyQ:當然如果你說的是改用意義性的 prefix , ex. 之前有人在說得 05/23 13:25
→ TonyQ:所謂"正確的"(也只是自己說爽的)駱駝式命名法的意含 05/23 13:25
→ TonyQ:對 unsafe/unescape safe/escaped data 加上一些意義性的 05/23 13:26
→ TonyQ:prefix 的作法,那倒也不無不可。但是說到底,這些全都是團 05/23 13:26
→ TonyQ:隊規範,團隊規範在團隊沒有共識的情況下是一點意義也沒有的 05/23 13:26
→ TonyQ:我打個比方吧,這就像是用 SVN 的團隊要轉換成 GIT 的團隊 05/23 13:27
→ TonyQ:「難道不應該有人出來說要改嗎?」 05/23 13:30
→ TonyQ:你已經說了,而且其他人也已經回應他們的看法了, 05/23 13:30
→ TonyQ:不是不應該說,是不應該強硬去推。:P 05/23 13:30
→ TonyQ:然後你說得書本跟網路上的資料,對我來講跟情緒沒啥兩樣, 05/23 13:31
→ TonyQ:因為命名法這種問題並沒有任何資料可以證明他是最好的。 05/23 13:31
→ TonyQ:習慣的確不是個好的做事態度,但沒事找事作也不是。XD 05/23 13:32
→ andymai:連主管都說服不了~怎麼推?而且你有意識到你在做你們主管的 05/23 13:33
→ TonyQ:btw 你的例子讓我想到有些語言跟團隊認為打分號是一種荒謬。 05/23 13:34
→ andymai:事嗎?其它人也表態了~有當過兵的應該都知道怎麼做... 05/23 13:34
→ FukadaKyoko:因為主管不做 我只好靠自己的力量走多少算多少囉 05/23 13:34
→ realmeat:我總覺得規則一套就好了, 除非有太多規則, 不然沒必要 05/23 13:35
→ TonyQ:我覺得你同事可能只是懶得跟你討論,有些人會這樣。 05/23 13:35
→ ken1325:這種事等你當上他們的主管再來講 05/23 13:35
→ realmeat:至於啥種方式命名沒多大意義, 統一才是重點 05/23 13:36
→ FukadaKyoko:沒錯 就是希望統一 但現在就無法 05/23 13:36
→ realmeat:那這種維護可能會造成問題的專案管理未來不會出問題嗎? 05/23 13:37
→ realmeat:沒想過在出問題前另謀高就, 去重視這些問題的公司就好 05/23 13:37
→ TonyQ:我比較好奇的是如果團隊規定就是要用這種匈牙利式命名法, 05/23 13:38
→ TonyQ: FukadaKyoko 會繼續抗爭還是遵守規定。XD 05/23 13:38
→ FukadaKyoko:我會先弄清楚為什麼要加啊 因為我怎想都不覺得加較好 05/23 13:39
→ TonyQ:在吵命名法這種大事之前,還有很多功能開發這種小事得處理, 05/23 13:39
→ TonyQ:主要只有作 framework 的 team 會對這件事情比較要求。 05/23 13:40
推 TonyQ:在其他專案的狀況下,其實就算不統一也不會有太大問題。 05/23 13:40
→ TonyQ:(啊,動態語言除外,因為沒有 content assit) 05/23 13:40
→ TonyQ:@FukadaKyoko 所以說到底就是沒人說服你這樣比較好你就不想 05/23 13:41
→ TonyQ:用咩,這樣講比較實際。 05/23 13:41
→ FukadaKyoko:功能開發還是會照做啦 只是每次看code還是會想到規範 05/23 13:41
→ realmeat:匈牙利命名法有他的歷史背景, 以前IDE沒那麼強 05/23 13:41
→ TonyQ:我是覺得 name conflick 是自由發揮(啊? 你說意含命名?)最大 05/23 13:41
→ TonyQ:的問題。 05/23 13:42
→ FukadaKyoko:可以這麼說 本來就是要說服別人呀 我也正想這麼做 05/23 13:42
→ realmeat:不靠匈牙利命名法其實還真的不好做事 05/23 13:42
→ TonyQ:*name conflict 05/23 13:42
→ TonyQ:用匈牙利命名法至少可以解決一些笨蛋造成的衝名的問題 05/23 13:43
→ realmeat:不過還是老話一句沒啥好不好, 統一才是最重要 05/23 13:43
→ FukadaKyoko:先來上班 謝謝各位前輩的指點 05/23 13:49
→ astt88:如果團隊有規範就依團隊規範 05/23 13:51
→ astt88:大家有統一就好了 05/23 14:00
→ shortoneal:這種都大家講好就好,你自己有問題就只能吞下去=_= 05/23 14:32
→ shortoneal:你怎麼知道下一個style其他人會更容易看 05/23 14:32
→ shvanta:我是老人,匈牙利命名法到現在都還在用~ 05/23 17:02
→ astt88:style就是要讓大家都容易看而且認同,沒有什麼對錯 05/23 17:04
→ shvanta:沒有型別提示我真的會超不習慣的 05/23 17:04
→ astt88:若看不順眼,以後這專案只有你維護時,可以改成你的style 05/23 17:05
→ astt88:當你要讓別人維護這個專案時再改成團隊的style就行了 05/23 17:06
→ shvanta:開發或review時,用滑鼠去"指"來確認型別我覺得又慢又麻煩 05/23 17:06
→ astt88:不過這樣不覺得累嗎?時間應該要花在其他更有價值的地方 05/23 17:07
→ shvanta:而且有時後會直接使用文字編輯器開source code 05/23 17:07
→ FukadaKyoko:當要知道型別又用文字編輯器確實會有這問題 05/23 17:08
→ FukadaKyoko:但我們專案內 目前沒這需求 而且 05/23 17:08
→ FukadaKyoko:我自己再看code時 很少需要去知道型別 05/23 17:09
→ shvanta:就我的立場,沒反過來說服原po改用匈牙利命名法就不錯了 :Q 05/23 17:09
→ FukadaKyoko:因為通常都是在看code的邏輯 只要知道變數代表的意義 05/23 17:09
→ FukadaKyoko:可以說服呀...我也很想被說服XD 我就是想知道兩方想法 05/23 17:10
→ shvanta:嗯,你不需要不太表其他人不需要囉,像我是很依賴~ 05/23 17:10
→ shvanta:話說我以前寫MFC,那時候一般都是鼓勵用匈牙利命名法 05/23 17:14
→ shvanta:時代真的不一樣了~ 05/23 17:15
→ astt88:有時在客戶端沒有IDE可以開,只有記事本可以用時就知道了 05/23 17:17
→ astt88:去客戶那邊處理問題時,不見得可以帶電腦設備去 05/23 17:19
→ kuope:你不覺得型態+名稱可以了解這個變數更深的意義嗎? 05/23 17:20
→ kuope:比如說int開頭,我就知道他可以用來做數學運算 05/23 17:20
→ astt88:所以臨時要看code時只有記事本了 05/23 17:21
→ kuope:bln開頭的,我就知道後面要接 = t or f。而不是文字 05/23 17:21
→ kuope:把bln跟str開頭的用文字串在一起肯定有問題! 05/23 17:23
→ astt88:不過在正常情況下,正式環境應該只會放已包裝好的檔案 05/23 17:23
→ FukadaKyoko:astt88謝謝 我理解這個case 05/23 17:28
→ FukadaKyoko:kuope: 我覺得意義只要看他怎麼被用就可以知道了 05/23 17:28
→ FukadaKyoko:比如CashAmount = 100那他自然是int 05/23 17:28
→ FukadaKyoko:當然也可能是unsinged int 不過這應該算一個問題 05/23 17:29
→ FukadaKyoko:google c++ guide裡面有提到統一signed/unsigned 05/23 17:29
→ FukadaKyoko:而且我的意思是 CashAmount的意義在於Amount 05/23 17:29
→ FukadaKyoko:用Amount就可以代表iCashAmount的prefix i了 05/23 17:30
→ astt88:另外還有個好處,當在寫沒有明確宣告型態的語寫時 05/23 17:47
→ astt88: 言 05/23 17:50
→ astt88:像JavaScript在宣告時用var 05/23 18:00
→ astt88:匈牙利命名法可以提供一點關於它儲存內容的資訊 05/23 18:01
→ astt88:當然了,匈牙利命名法沒有強制性 05/23 18:02
→ astt88:若程式寫成var iID; iID="N201305230000000001"; 05/23 18:02
→ SecretWhale:小弟的一點淺見,這個命名方式本身還是有自己的涵意, 05/23 18:03
→ astt88:反而會造成錯誤的認知 05/23 18:03
→ astt88:所以習慣匈牙利命名法後 05/23 18:03
→ SecretWhale:也不是說用在VS上會造成什麼讓人誤解什麼東西的情況, 05/23 18:04
→ astt88:我反而希望IDE能有可以檢查上述問題的功能 05/23 18:04
→ SecretWhale:只是,VS上提供了某些替代的方式,如此而己。 05/23 18:05
→ SecretWhale:但以小弟自己的經驗,這種加上型態的命名方式,適用的 05/23 18:06
→ SecretWhale:範圍其實很廣,因為除了i這個型態之外,還有其他的型 05/23 18:07
→ SecretWhale:如果要修正掉這種命名方式,是不是也考慮過其他的情況 05/23 18:08
→ SecretWhale:如同Tonq大大所言的。 05/23 18:08
→ SecretWhale:既然命名方式只是一種習慣,又沒犯什麼錯誤,不如先專 05/23 18:10
→ SecretWhale:注在Code Style的其他部份上面,這種枝微末節,小弟是 05/23 18:11
→ SecretWhale:建議過一陣子再拿出來討論。 05/23 18:11
→ SecretWhale:以下所言有點失禮,但我覺的原po有點在興頭上,等稍微 05/23 18:12
→ SecretWhale:冷靜一點再思考會比較能接受吧。 05/23 18:13
→ alan3100:其實這是2件事 一種是命名法的討論 另一個是你個人看不慣 05/23 18:27
→ alan3100:前者由討論可以看到並沒辦法有效說服所有人 且不阻礙專案 05/23 18:32
推 NDark:coding style是政治問題,而不是技術問題. 05/23 20:36
→ NDark:文(政治)無第一 武(技術)無第二 05/23 20:37
→ NDark:確實匈牙利已經被批的很清楚了,但這是武的部份. 05/23 20:37
→ NDark:但要大家同心協力,那就是文的部份,就必須用政治的方法解決. 05/23 20:38
→ NDark:一個是爬到更高的地位用政治地位壓過對方. 05/23 20:38
→ NDark:coding style的不同對我來講都是很難適應的. 05/23 20:39
→ NDark:所以要是碰到這種問題,我都會問,那麼標準文件在哪裡? 05/23 20:39
→ NDark:只要有先規定好,那麼就照著文件作. 05/23 20:39
→ NDark:如果沒有規定,那麼就河水不犯井水,自己玩自己的. 05/23 20:40
→ NDark:然後想辦法把專案拆成模組化,就可以在自己的領域胡搞了XD 05/23 20:40
→ nobody1:怎麼看都不像是說服不了別人 而像原po不能被別人說服 05/23 21:04
→ nobody1:有點像是去糾正別人的英文發音或是口音一樣 05/23 21:06
→ lulala453:寫 Window 程式的人很多都已經習慣這種命名法了, 不跟 05/23 21:53
→ lulala453:著用還會被待久一些的拿資料型態來批,或是說你不合群 05/23 21:53
→ lulala453:其實可以自已負責的模組單一化,改別人的 code 就照他 05/23 21:54
→ lulala453:的 style ,避免被說三道四; 要不就換工作吧 05/23 21:55
→ FukadaKyoko:的確很多是很久以前老人寫出來的code 05/23 22:01
推 yoco315:很遺憾,這真的是「很無聊也很沒意義」的「自我感覺」問題 05/23 23:38
→ yoco315:我知道你覺得這看起來很醜,但問題不再醜,在「你覺得」 05/23 23:38
→ yoco315:我相信我在這邊絕對無法說服你這件事,你應該也同意 05/23 23:39
→ yoco315:同理,你也絕對無法說服你同事 xDDD 希望你能認知到這點 05/23 23:40
推 clanguage:大家跟著加上就是你們的 coding style.. 05/23 23:45
推 cashlalala:coding style follow就好 想太多沒意義 05/24 01:37
→ cashlalala:除非你自己寫給自己maintain一輩子 05/24 01:37
推 noonOut:coding style,找他來談,雖然你不一定贏,但統一很重要 05/24 03:36
→ eva19452002:這種命名法叫匈牙利命名法,是用匈牙利程設師提出來的 05/24 07:56
→ eva19452002:ms好像很喜歡這種命名法,但現在還有沒有用不清楚 05/24 07:57
推 bobju:總之,你不夠力.這種事情要夠力的人主導,還要跟大家協調出一 05/24 08:27
→ bobju:個共同規範,落實審查制度(code review)才行.沒那麼容易的 05/24 08:28
推 plover:Windows API style. It's fine 05/24 20:45
推 snaketsai:匈牙利命名法臭了嗎? 05/25 00:19
推 askacis:Linus: Hungarian notation is brain damaged. 05/25 01:18
推 snaketsai:Linus放的砲可多了,他討厭ACPI、討厭UEFI、討厭C++.... 05/25 09:45
→ snaketsai:結果這年頭連GCC都倒戈stage 3改用C++寫 (lol) 05/25 09:46
→ snaketsai:我倒是很好奇,是誰brain damaged了(grin) 05/25 09:47
推 reichs:跟我同事一樣,變數加i,s,b,甚至類別加上cls, 05/25 12:15
→ reichs:看起來就超礙眼的。 05/25 12:15
→ reichs:新進同事也照著此規則在命名,雖然公司沒強制規定命名的規 05/25 12:23
→ reichs:則,不過要求新進同事不要加上prefix,現在維護他的程式 05/25 12:24
→ reichs:就很順眼。 05/25 12:24
推 deuter:不同語言的習慣不一樣, 如果你是寫 .NET 的程式 05/26 08:57
→ deuter:微軟直接就建議 DO NOT use Hungarian notation 05/26 08:57
推 amozartea:花一小時把名稱改掉 然後定一份naming rule給主管看 05/27 19:10
→ amozartea:反正之前沒人訂 所以你最大 05/27 19:10
推 Mewra:naming convention是專案開始前就要溝通的 05/30 10:16