游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2139|回复: 4

编程语言的改良----指示代词

[复制链接]

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
发表于 2009-3-16 21:37:00 | 显示全部楼层 |阅读模式
(转载敬请注明出处: alpha-lab 非常感谢!)

比如我手头有个项目里遇到一句话:

if (xxx (filename.Substring (0, filename.Length-4))

我觉得这样很烦,这类问题很多,如果通过临时变量或者封装一个函数解决,也还是比较麻烦的。

有一种方式----指示代词

上面的可以写成:

if (xxx (filename.Substring (0, to.Length-3))

这里 to 表示 "the object" 的意思
因为这里只有一个对象"filename"所以, "the object" 肯定指代 "filename".

==========================================================================

if (getFileName (x) != getFileName(y))

这句可以省略成

if (getFileName (x) != tf(y))

这里用 tf 表示 "the function"

因为这里只有一个函数,所以tf肯定表示getFileName.

==========================================================================


后面我不说了,聪明的你一定知道怎么做了吧。。。

9

主题

249

帖子

260

积分

中级会员

Rank: 3Rank: 3

积分
260
发表于 2009-3-17 12:22:00 | 显示全部楼层

Re:编程语言的改良----指示代词

太理想化了

1

主题

13

帖子

19

积分

新手上路

Rank: 1

积分
19
发表于 2009-3-17 13:02:00 | 显示全部楼层

Re:编程语言的改良----指示代词

没啥必要。你觉得变量太长,自己起短一些就好了

另外编译器也不可能猜到你要指代那个变量 ,如果是这样呢?

if (xxx (filename.Substring (otherName.begin, to.Length-3))

到底to是filename还是 othername

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
 楼主| 发表于 2009-3-18 01:14:00 | 显示全部楼层

Re:编程语言的改良----指示代词

很多时候,变量名没有办法随便起短的。而且很多ident是类库里头的。
如果用 tmp 变量代替,也还是比较浪费时间的,而且 tmp 变量一多还会混乱。

如果能猜到最好(很多时候都能猜到),就节约了我们的时间,
如果猜不到,就会提示出错。
PS. 更好的设计是:
fo --- former object
lo --- later object

我还有一种想法是:
比如 func1 (aaa, bbb, ccc, func2(aaa, ddd) ); 我们可写成:
func1 (aaa#, bbb, ccc, func2(#, ddd) );

还有,有时候需要重复写一长串表达式。
比如 if (func(aaa+bbb/ccc)) { x = aaa+bbb/ccc; } 可以设计成:
if (func(aaa+bbb/ccc)) { x = te; } // te -- the expression

PS2. 现在的IDE都有即时提示功能,所以也可以把上述功能整合进这个里面。
比如说C#里头的,应该说已经很智能了,但是我感觉还是有不少麻烦,甚至会很恼火。
1 有时候重复的是一个长长的表达式,比如 if (func(aaa+bbb/ccc)) { x = aaa+bbb/ccc; }
2 变量名开头几个字母相同,而C#并不能把本语句中的变量提前排列。
而我们的改良方案可以是:
比如输入指示代词 te(the expr) ,如果有歧义,那么列表显示出本语句中的表达式,然后选择。

15

主题

368

帖子

406

积分

中级会员

Rank: 3Rank: 3

积分
406
发表于 2009-4-4 03:30:00 | 显示全部楼层

Re:编程语言的改良----指示代词

楼主需要一个强力的IDE,类似VA一类的功能,而不是把语言给乱改一通。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-20 15:47

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表