我的變數命名怪談

看板C_and_CPP (C/C++)作者 (㊣我不願站在八卦的前線.)時間16年前 (2009/04/27 21:10), 編輯推噓11(11010)
留言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
到底為什麼會流行用"我夢到"的來發文勒XDDD
04/27 23:21, 10F

04/27 23:44, , 11F
因為某卦板怕講到太關鍵的事會有官司麻煩, 夢到的總沒罪吧
04/27 23:44, 11F

04/27 23:51, , 12F
那我可以說我是夢遊起來打的嗎XDDD
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
害我接不下去,只好推個台灣加油… XD
04/28 01:11, 15F

04/28 01:12, , 16F
總之謝謝大家 XD
04/28 01:12, 16F

04/28 01:38, , 17F
那~~把小弟的推文修掉吧XD 話說, 我只聽過前兩個Orz
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
所以既然某夢中人不想原po得到回應 那我就順他的意...
04/28 01:42, 20F

04/28 01:43, , 21F
畢竟沒有人想維護的程式碼 要有人回應也是頗難的
04/28 01:43, 21F
文章代碼(AID): #19zQx0tD (C_and_CPP)
文章代碼(AID): #19zQx0tD (C_and_CPP)