我的變數命名怪談
看板C_and_CPP (C/C++)作者MOONRAKER (㊣我不願站在八卦的前線.)時間16年前 (2009/04/27 21:10)推噓11(11推 0噓 10→)留言21則, 12人參與討論串1/1
關於一開始寫程式的時候有沒有依照規範取人看得懂的變數名,我也不記得有沒有
不過我做了一個夢
夢到我以前在一種用某M牌CPU並且用某種水果取名字的電腦上學寫BASIC程式
那時候並沒有依照現在可以接受的規範給變數取名
因為我夢到該種水果電腦只承認變數名稱的前面兩個字
變數名字可以很長;但是前兩個字重覆就不算
例如MARY和MARK其實是同一個變數
不過其實當時用MARY或MARK的下場都一樣,會發生錯誤
因為我夢到我不是用原版的那某水果電腦
是用某A開頭R結尾的台灣公司當年賣的水果仿造品
他裡面有一個不明用途的MA指令(到現在我還是沒夢到他是幹嘛的)
所以MARK或MARY都一樣,觸犯用關鍵字當變數名的禁忌
因為給這種兩個字的變數命名整了不少時間
所以後來當換到某I牌8開頭8結尾CPU的機器上的時候
就夢到說,該牌機器上的某M牌BASIC不但可以用很長很長的變數名
而且承認前32個字,或40個字,沒夢到那麼清楚
所以我那時夢到就立刻把所有的變數名都取成SWAPPING.SOURCE.ADDRESS這麼長
那一個swap就可以寫成這樣
SWAPPING.TEMP = ARR(SWAPPING.SOURCE.ADDRESS)
ARR(SWAPPING.SOURCE.ADDRESS) = ARR(SWAPPING.DESTINATION.ADDRESS)
ARR(SWAPPING.DESTINATION.ADDRESS) = SWAPPING.TEMP
喔對了,這個某M牌BASIC接受在變數名中使用 . 不是 _ 喔
這點實在滿笨的,所以後來他們就改了
以上都是夢到的,和本板主題無關
但是接下來夢到的,就跟本板有關了
因為有夢到以上變數命名的經驗
所以我後來就不贊成在小program unit中茲事體大地取很複雜的變數名字
基本上一個program unit如果短到只在做一件事
而且可以用簡單的口語解釋清楚,那就不需要在意變數命名
比如以下的片段,考慮一下你會怎麼跟別人解釋這個program unit在幹嘛
void swap(int *x, int *y) /* 要掉換的兩個數,x 和 y,以指標傳入 */
{
int temp; /* 宣告一個暫存位置 temp */
temp = *x; /* 取出 x 的值放入暫存變數中 */
*x = *y; /* 取出 y 的值放入 x 中 */
*y = temp; /* 令 y 的值 = temp */
}
以我來說,如果用 x , y 會比 int1, int2 更簡單,那麼用 x , y 命名即可
因為 x , y 在這個程式單元中「自洽」,便不需要考慮是否跟其他部份混淆。
但是即使這樣我也絕不同意用 ttt , tttt 這種變數名稱
這根本就在整人,增加閱讀難度
改寫一下上面那段
void SWAP(int *___t, int *____t)
{
int _____t;
_____t = *___t;
*___t = *____t;
*____t = _____t;
}
不要認為這只是故意找麻煩,
沒有準備的時候,ttt或tttt看起來其實跟上面差不多。
而 ll, mm, tt 等一堆,和 __1, __2, __3 又有何不同?
不過還真的有人用這種風格的全域變數。
最近我夢到(又是夢到)改到某個套件的模組,這個套件有很多新鮮事
其中一個是這套件的歐洲用戶很多,所以你會看到德文或西班牙文的註解
另外一個是,某個叫做productbook的模組,這模組也很鮮,像是俄國人改寫的
不知道這個俄國人在想什麼,總之他的語言檔裡面就是這樣:
PRODUCTBK_0031 = "cash";
PRODUCTBK_0032 = "You arn't privileged enough to modify this item.";
PRODUCTBK_0033 = "Credit Card";
...
這樣一直下去到 _0183 還是多少的
這種跟密碼一樣的命名風格衝擊到好幾個層面
第一個是程式修改,第二個是訊息翻譯,其他的就留給大家想了
當然最好是永遠也不要碰到這種風格的東東…
---
不過我要重申一次,以上都是我夢到的
如有雷同,那也沒有辦法~
請板主隨便發落 :︴
--
Google 關鍵字 : MPFC-TCP / 殺人笑話 / 包租婆也有過當羅莉的時候
Youtube關鍵字 : 脫衫脫褲 / 傻蛋奧運 / 宗教審訊 / 買張床 / 單車超人 / 謳歌金錢
*美髮師登山隊 http://tinyurl.com/dm6lh3 *Ypres 1914 http://tinyurl.com/b432jb
[蒙帝派松正體中文計畫] http://www.youtube.com/user/JamesBondXD
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 125.232.105.197
推
04/27 21:15, , 1F
04/27 21:15, 1F
推
04/27 21:20, , 2F
04/27 21:20, 2F
→
04/27 21:24, , 3F
04/27 21:24, 3F
推
04/27 21:25, , 4F
04/27 21:25, 4F
推
04/27 21:27, , 5F
04/27 21:27, 5F
推
04/27 21:41, , 6F
04/27 21:41, 6F
推
04/27 21:54, , 7F
04/27 21:54, 7F
推
04/27 21:56, , 8F
04/27 21:56, 8F
→
04/27 22:25, , 9F
04/27 22:25, 9F
推
04/27 23:21, , 10F
04/27 23:21, 10F
推
04/27 23:44, , 11F
04/27 23:44, 11F
推
04/27 23:51, , 12F
04/27 23:51, 12F
→
04/28 01:09, , 13F
04/28 01:09, 13F
→
04/28 01:10, , 14F
04/28 01:10, 14F
→
04/28 01:11, , 15F
04/28 01:11, 15F
→
04/28 01:12, , 16F
04/28 01:12, 16F
→
04/28 01:38, , 17F
04/28 01:38, 17F
推
04/28 01:41, , 18F
04/28 01:41, 18F
→
04/28 01:42, , 19F
04/28 01:42, 19F
→
04/28 01:42, , 20F
04/28 01:42, 20F
→
04/28 01:43, , 21F
04/28 01:43, 21F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章