Re: [請益] 要如何說服同事停止命名類似iID的變數
看板Soft_Job作者elvispoetic (RESTful Web Services)時間12年前 (2013/05/24 15:00)推噓6(6推 0噓 42→)留言48則, 12人參與討論串13/19 (看更多)
沒想到版上這麼多有經驗的前輩覺得對 coding style 的討論是一件
無聊的小事,討論串大概看了一下,不是很確定提出反對意見的版友
是覺得:
1. 爭論變數名稱前面要不要加上前綴很無聊?
2. 在 coding style 上面堅持己見很無聊?
還是
3. 覺得 coding style 也要拿出來討論很無聊?
如果是前兩個我部分同意,但是如果是第三點我的想法是:
「 Coding style 當然是可以拿出來討論的,而且是必須在團隊中
拿出來討論的。」
先回到第一點的爭議,很多人說加上前綴對於在一般的文字編輯器中
開發很有幫助,但是不知道提出這個意見的版友有沒有遇過類似下面
這樣的程式碼?
enum LightState{
ON,
OFF
};
LightState bIsLightOn;
......
if (bIsLightOn == true)
或者是:
set<int> m_vProductIDs;
......
m_vProductIDs.insert(productId)
如果剛好有 bug 出在這個地方,那個當下應該會很想把當初這樣寫
的人給ooxx 。這個時候前綴算是輔助還是干擾?
或許有人會說那都是 they 的錯,但是當你開始意識到會有這種事情
發生的時候,這些前綴是輔助還是干擾?
當然,這也不是不能解決的問題,只要有一個自動化的工具幫你
parse 所有的 source code 就可以了,這個工具可能還不用自己寫。
所以我們回到了第三點,或許 coding style / coding convension
比不上 unit test, daily build, version control 等其他許多工
具,但是 coding style 依舊很重要。不論你想怎樣大寫小寫,加或
不加前綴,如果團隊沒有一致的規範,你就沒有辦法用自動化的工具
揪出會讓人困惑的地方,大家讀程式、寫程式、除錯的時間就會增加。
所以我對原始提問者的建議是:
1. 不要固執自己的標準。
2. 請團隊共同討論,建立一套標準,很粗糙也沒有關係。
3. 用工具或 script language 每天把程式碼中不符合標準、會
造成誤解的部份找出來,在徵求 manager 的同意後每天把這
份結果公布。
[註] 先自首,coding style 的規範目前也在團隊導入中,上面的意
見並非經驗而是原本打算在團隊中實行的計畫。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 42.79.69.124
→
05/24 15:04, , 1F
05/24 15:04, 1F
→
05/24 15:06, , 2F
05/24 15:06, 2F
→
05/24 15:09, , 3F
05/24 15:09, 3F
依賴前綴的開發人員,很可能在一開始的時候忽略掉 bIsLightOn 的
宣告:
LightState bIsLightOn;
至於比較容易除錯的問題我要再想想,但是如果可以在一開始的時候
就避免誤解,減少寫出錯誤程式的機會不是比較好嗎?
推
05/24 15:34, , 4F
05/24 15:34, 4F
→
05/24 15:35, , 5F
05/24 15:35, 5F
→
05/24 15:39, , 6F
05/24 15:39, 6F
m_vProductIDs 的前綴暗示這個變數是一個 vector<int>,但是它的
實際型別是 set<int>
→
05/24 15:41, , 7F
05/24 15:41, 7F
→
05/24 16:05, , 8F
05/24 16:05, 8F
→
05/24 16:05, , 9F
05/24 16:05, 9F
→
05/24 16:07, , 10F
05/24 16:07, 10F
→
05/24 16:07, , 11F
05/24 16:07, 11F
→
05/24 16:08, , 12F
05/24 16:08, 12F
或許我表達的不夠清楚,我想講的是如果你想要享受前綴帶來的好處
,你最好有一個自動化的工具把錯誤的前綴找出來,所以需要建立
coding convesion / coding rule,這樣才方便建立一個 parser 做
這件事情。
我的舉例是因為我「主觀的相信」很多推崇前綴的人身邊並沒有這樣
的工具。
[註] 我不確定動態語言能不能也用 parser 或其他工具找出不符規
範的程式碼,這是我原本文章沒考慮到的地方。
→
05/24 16:09, , 13F
05/24 16:09, 13F
→
05/24 16:14, , 14F
05/24 16:14, 14F
→
05/24 16:14, , 15F
05/24 16:14, 15F
推
05/24 16:14, , 16F
05/24 16:14, 16F
→
05/24 16:15, , 17F
05/24 16:15, 17F
→
05/24 16:15, , 18F
05/24 16:15, 18F
→
05/24 16:15, , 19F
05/24 16:15, 19F
加註解很好呀,但是你的註解如何跟你的程式碼同步呢?如果無法同
步,我一般會直接略掉註解。
→
05/24 16:33, , 20F
05/24 16:33, 20F
→
05/24 16:34, , 21F
05/24 16:34, 21F
推
05/24 16:39, , 22F
05/24 16:39, 22F
→
05/24 16:40, , 23F
05/24 16:40, 23F
→
05/24 16:41, , 24F
05/24 16:41, 24F
→
05/24 16:42, , 25F
05/24 16:42, 25F
推
05/24 16:50, , 26F
05/24 16:50, 26F
→
05/24 16:55, , 27F
05/24 16:55, 27F
→
05/24 16:55, , 28F
05/24 16:55, 28F
借用 TonyQ 的比喻,我想講的是如果沒有這種機器存在,每個人在
過馬路前最好記得先左右看一下,不然下一次社會新聞版面可能會有
你的名字出現。
不過我還是就此打住吧,或許就像 yoco315 說的:「只有新手才會
爭這種問題」。我要學習的還很多。
我並不是前綴字元的強烈反對者,希望我上面的文章不會給人這種感
覺,我也會用 m 表示成員變數,用 p 表示指標,只是更多時候我享
受 IDE 的便利,和少掉型別資訊的變數名稱讓我可以專注在問題本
身。如果我的專案夥伴覺得加上型別資訊比較好,那加上型別資訊也
很好,只要我們有一個規則可以區分字首 s 是 Set 還是 String 。
→
05/24 16:56, , 29F
05/24 16:56, 29F
→
05/24 16:57, , 30F
05/24 16:57, 30F
→
05/24 16:57, , 31F
05/24 16:57, 31F
→
05/24 16:57, , 32F
05/24 16:57, 32F
→
05/24 16:57, , 33F
05/24 16:57, 33F
→
05/24 16:58, , 34F
05/24 16:58, 34F
→
05/24 16:58, , 35F
05/24 16:58, 35F
→
05/24 17:00, , 36F
05/24 17:00, 36F
→
05/24 17:00, , 37F
05/24 17:00, 37F
→
05/24 17:01, , 38F
05/24 17:01, 38F
推
05/24 18:18, , 39F
05/24 18:18, 39F
推
05/24 18:36, , 40F
05/24 18:36, 40F
嗯嗯
→
05/24 19:28, , 41F
05/24 19:28, 41F
→
05/24 19:30, , 42F
05/24 19:30, 42F
→
05/24 19:31, , 43F
05/24 19:31, 43F
→
05/24 19:32, , 44F
05/24 19:32, 44F
→
05/24 19:34, , 45F
05/24 19:34, 45F
→
05/24 20:01, , 46F
05/24 20:01, 46F
→
05/24 20:01, , 47F
05/24 20:01, 47F
→
05/24 20:03, , 48F
05/24 20:03, 48F
※ 編輯: elvispoetic 來自: 114.37.94.158 (05/25 00:16)
討論串 (同標題文章)
完整討論串 (本文為第 13 之 19 篇):