作者MOONRAKER (㊣我不愿站在八卦的前线.)
看板C_and_CPP
标题我的变数命名怪谈
时间Mon Apr 27 21:10:21 2009
关於一开始写程式的时候有没有依照规范取人看得懂的变数名,我也不记得有没有
不过我做了一个梦
梦到我以前在一种用某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
[蒙帝派松正体中文计画] https://www.youtube.com/user/JamesBondXD
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 125.232.105.197
1F:推 evernever:梦真多... 04/27 21:15
2F:推 yauhh:妖妖梦 04/27 21:20
3F:→ vocaloid: 永夜抄 04/27 21:24
4F:推 awashharp: 梦时空 04/27 21:25
5F:推 satokuzao: 星莲船 04/27 21:27
6F:推 chrisdar: 地灵殿 04/27 21:41
7F:推 COLDTURNIP: 文花帖 04/27 21:54
8F:推 netsphere: 都是阿扁的错 04/27 21:56
9F:→ MOONRAKER: 台湾加油 04/27 22:25
10F:推 VictorTom:到底为什麽会流行用"我梦到"的来发文勒XDDD 04/27 23:21
11F:推 ledia:因为某卦板怕讲到太关键的事会有官司麻烦, 梦到的总没罪吧 04/27 23:44
12F:推 VictorTom:那我可以说我是梦游起来打的吗XDDD 04/27 23:51
13F:→ MOONRAKER:其实我有一点意见说…上面居然连续推东方系列,推了那麽 04/28 01:09
14F:→ MOONRAKER:多代,正当我觉得非常荣幸的时候突然转到阿扁… 04/28 01:10
15F:→ MOONRAKER:害我接不下去,只好推个台湾加油… XD 04/28 01:11
16F:→ MOONRAKER:总之谢谢大家 XD 04/28 01:12
17F:→ VictorTom:那~~把小弟的推文修掉吧XD 话说, 我只听过前两个Orz 04/28 01:38
18F:推 sunneo:其实我先前在某版那样子讲的时候就被那样子回了 .. 04/28 01:41
19F:→ sunneo:後来想想 照那样的观念下去 大概是希望没人去回应他吧 04/28 01:42
20F:→ sunneo:所以既然某梦中人不想原po得到回应 那我就顺他的意... 04/28 01:42
21F:→ sunneo:毕竟没有人想维护的程式码 要有人回应也是颇难的 04/28 01:43