Re: [請益] 要如何說服同事停止命名類似iID的變數
補充一些白天沒講清楚的細節:
我現在待的是遊戲公司
專案開發只用VS2008寫C++
還有FlashDevelop寫action script 3做UI
我是希望針對這個環境下討論
許多前輩的推文很有道理
比如使用notepad++, 或者客戶端沒有IDE,
但因為我們的專案沒有遇到這種case,
所以我是希望暫不討論
另, 遵循規範這點我想大家也都有共識
但我們專案目前就是在放牛吃草
大家各搞各的, 我覺得這樣很糟
一個專案沒有規範很麻煩, 我想這應該大家也有共識
我們使用的IDE都可以看到變數名稱, 宣告的檔案所在, 甚至前後註解
所以藉由縮寫來判斷型別我真的覺得不太需要
astt88大大有提到一個問題
現在的型別很多
很難針對每一種去設定縮寫
再加上如果一個變數同時有兩種屬性那又會變成更長的prefix
(如int array)
onear大大所說的其實跟我是相同的想法
我並不是認為"不能加", 而是不需要加上沒有幫助的prefix
onear大大所舉例的: UI元件可能會命名為txtAge
這個就與我原文引述約耳的文章內所說的一樣
prefix要表示的是"意義"而不是"型別"
(原文使用kind == 意義與type == 型別)
同理成員變數加 m_我覺得是好的, 如onear大大所說可以快速分辨成員與區域變數
不過也有人提出成員變數開頭用大寫, 區域變數用小寫
甚至VAX這個plug-in可以直接幫你把區域變數變成斜體
說不定大家說好之後連 m_或大寫都可以省了
但總之onear大大所提的範疇都在於"意義命名"
我覺得非常正確, 也就是我想表達的點
onear大大還提到維護
其實我現在就是維護的很頭痛才想提不要加prefix...
比如說我看到一個vector3叫做 vPos, 一個member叫做m_bFloating
了解function內部後我可能會改成
if (m_IsFloating) PlayerPosition.z += 100.0f;
而原本的
if (m_bFloating) vPos.z =+ 100.0f;
似乎沒有比較好維護啊?
而且在這邊我在乎的只是
"若是漂浮狀態, 則玩家的Z軸+100"
我完全不在乎型別是甚麼
甚至
void SetID(int iID)
{
m_iID = iID;
}
我一定會改成
void SetID(int ID)
{
m_ID = ID;
}
或者
ObjInfo* GetInfo(int iID)
{
InfoMap::iterator oIter = m_Data.find(iID);
if (oIter != m_Data.end())
{
return oIter->second;
}
return NULL;
}
改成
ObjInfo* GetInfo(int ID)
{
InfoMap::iterator It = m_Data.find(ID);
if (It != m_Data.end())
{
return It->second;
}
return NULL;
}
在這邊 o或者 i對我完全沒幫助
再舉
在接收端, 因為ObjInfo是一個struct
那可能就有人會寫個
ObjInfo* sInfo = GetInfo(iID);
那改成
ObjInfo* Info = ...
ObjInfo* ObjInfo = ... 或者任何更符合該變數角色的名字
不是比較清楚嗎?
因為看到太多這種為加而加的case
我才更認為針對意義命名遠大於型別
chucheng大大說到好讀是重點
"方便讀懂,關鍵在清楚"
我非常同意
我就是覺得ID比iID好讀所以才想跟同事討論這件事
UserProfile好還是user_profile好我覺得確實見仁見智
但szUserProfile或是szuser_profile我就會覺得為甚麼要加?
SecretWhale大大說的沒錯
我算是在興頭上
但也可說不是, 因為我已經被這個問題困擾超過一年了
現在大概是覺得快要受不了了吧
但coding style算枝微末節嗎?
我覺得不算, 因為每個專案都應該要有規範才對
否則成員做事沒有紀律
對於開發或者維護都是阻礙
且如我所說我們專案沒有規範, 我是很希望可以建立專案的coding style
nobody1大大
andymai大大
我說服不了別人
也無法被說服
因為我同事只有兩個理由"習慣了", "有差嗎?"
主管的理由是"我們不限制做法"
我想這種理由應該很難說服人吧
NDark大所言極是
確實是政治問題
但如果以此做結論的話那我也只好嘆一口氣了
(無奈!)
TonyQ板大所提
"大多數情況下需要知道型態,特別是大型系統架構"
確實我是沒接觸過
也無法想像為何需要知道
如果板大可以話不知是否能夠舉幾個實例供觀摩
感激不盡!
有些沒回覆到的板友抱歉
希望不要見怪
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 115.43.117.251
推
05/23 22:07, , 1F
05/23 22:07, 1F
→
05/23 22:07, , 2F
05/23 22:07, 2F
→
05/23 22:07, , 3F
05/23 22:07, 3F
推
05/23 22:13, , 4F
05/23 22:13, 4F
→
05/23 22:15, , 5F
05/23 22:15, 5F
→
05/23 22:16, , 6F
05/23 22:16, 6F
推
05/23 22:17, , 7F
05/23 22:17, 7F
→
05/23 22:19, , 8F
05/23 22:19, 8F
→
05/23 22:21, , 9F
05/23 22:21, 9F
→
05/23 22:23, , 10F
05/23 22:23, 10F
→
05/23 22:23, , 11F
05/23 22:23, 11F
→
05/23 22:25, , 12F
05/23 22:25, 12F
→
05/23 22:53, , 13F
05/23 22:53, 13F
→
05/23 22:53, , 14F
05/23 22:53, 14F
→
05/23 22:54, , 15F
05/23 22:54, 15F
→
05/23 23:06, , 16F
05/23 23:06, 16F
→
05/23 23:08, , 17F
05/23 23:08, 17F
→
05/23 23:10, , 18F
05/23 23:10, 18F
→
05/23 23:17, , 19F
05/23 23:17, 19F
→
05/23 23:18, , 20F
05/23 23:18, 20F
→
05/23 23:19, , 21F
05/23 23:19, 21F
→
05/23 23:20, , 22F
05/23 23:20, 22F
→
05/23 23:27, , 23F
05/23 23:27, 23F
推
05/23 23:47, , 24F
05/23 23:47, 24F
→
05/23 23:47, , 25F
05/23 23:47, 25F
推
05/23 23:56, , 26F
05/23 23:56, 26F
→
05/23 23:57, , 27F
05/23 23:57, 27F
→
05/23 23:58, , 28F
05/23 23:58, 28F
→
05/24 01:07, , 29F
05/24 01:07, 29F
推
05/24 07:58, , 30F
05/24 07:58, 30F
推
05/24 09:18, , 31F
05/24 09:18, 31F
推
05/24 10:32, , 32F
05/24 10:32, 32F
→
05/24 10:33, , 33F
05/24 10:33, 33F
→
05/24 10:33, , 34F
05/24 10:33, 34F
→
05/24 13:12, , 35F
05/24 13:12, 35F
→
05/24 13:13, , 36F
05/24 13:13, 36F
推
05/24 13:44, , 37F
05/24 13:44, 37F
→
05/24 14:03, , 38F
05/24 14:03, 38F
→
05/24 14:03, , 39F
05/24 14:03, 39F
→
05/24 20:47, , 40F
05/24 20:47, 40F
推
05/25 01:04, , 41F
05/25 01:04, 41F
推
05/25 09:56, , 42F
05/25 09:56, 42F
推
05/26 14:49, , 43F
05/26 14:49, 43F
→
05/26 14:49, , 44F
05/26 14:49, 44F
討論串 (同標題文章)
完整討論串 (本文為第 6 之 19 篇):