找回密码

碧海潮声大学生网

查看: 1375|回复: 0
打印 上一主题 下一主题

■■■《易语言编码规范1.1》

[复制链接]
跳转到指定楼层
1#
发表于 2005-6-20 09:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
<P>以下是我个人在使用易语言编写程序的时候遵循的一些规范,我觉得很好,特推荐给大家,希望对大家有用。</P>
<P>1. 变量、参数、类成员变量、窗体控件命名规则。<br>    在写程序的时候,经常会不知道变量是在何处定义的,是全局变量、程序集变量、函数参数还是局部变量?有时候真的不好分别。我的方法是在全局变量的前面加上“全”字,比如“全实例句柄”;程序集变量的前面加个“集”字,比如“集鼠标已被按下”;函数参数前面则加个“参”字;类的私有成员前面加个“私”字;而局部变量则什么也不加。这样,一看变量的名字就知道它是在何处定义的。<br>    在局部变量中,如果使用了控件类型的临时变量,推荐在变量前加个“某”字,而不要使用与控件同名的变量。比如“某按钮”、“某编辑框”等。</P>
<P>2.函数、类方法的命名规则。<br>    函数的命名,建议使用“动-宾”形式的词组,而不要反过来写。比如“写配置文件”,“创建文件”等。 有的程序语言中喜欢反过来写,比如“FileOpen”、“FileClose”、“FileRead”等,虽然有它的好处(函数分类),但是代码读起来的时候很别扭。我们始终应该把代码的易读性放在第一位,最好是代码写完后读起来象读文章,而不是象在读程序。这里要特别强调一下返回逻辑型的函数,易语言中内定的函数中返回逻辑型的函数好像都有“是否”二字,比如“是否已创建”、“是否已打开”、“是否为空”、“文件是否存在”等,我觉得这样并不妥。为什么? 返回布尔类型的函数一般都在“如果”或“如果真”语句中,写成代码就是这样:<br> .如果 (是否已创建 (_启动窗口))<br>显然读起来很别扭,而且“是否已创建”、“是否已打开”这些函数含意不明确,创建了什么?打开了什么?所以,我们自己写代码命名函数的时候,我建议使用类似这样的方式:<br> .如果(窗口已创建(_启动窗口))<br>或<br> .如果(文件存在("c:\test.txt"))<br>或<br> .如果(参数为空())</P>
<P>等,很明确表示函数的意义,也知道返回的是布尔值,读起来也很顺口。</P>
<P>    对于类方法,取属性值推荐使用“取”字,置属性值推荐使用“置”字。</P>
<P>3.注释规则<br>    注释应该尽量详尽。大到整个程序,小到一个变量,必要的时候都应该有注释。<br>    首先,整个程序要有注释。表明程序的总框架、模块、功能分类,算法的大致描述,程序当前的问题、应该实现怎样的功能等,当然,这些也可以以程序文档的方式呈现。<br>    程序集也要有简单的注释,表明该程序集的作用。<br>    对于函数,一开始就要注明该函数实现的功能,参数的意义,算法思路,在使用该函数应该注意的问题等。函数中的语句应该按照意义分为合适的“段落”,也就是在有明显思路变化的地方插入空行,或添加注释,表示下面的代码是作什么用的,这个叫“段落注释”;有时候某一句代码也需要注释一下,这样的注释建议加在该代码的后面,这个叫“语句注释”。 <br>    对于重要的变量,应该在备注中写明该变量作什么之用,这个很重要。</P>
<P>4.中文,还是英文<br>    虽然易语言是中文编程语言,但并不推荐对所有对象的命名刻意追求全盘中文化。与行业相关的变量名也建议使用该行业特定的英文名称,如数学中的坐标,物理中的电流、电压、功率等、化学中的元素名、分子式等,计算机编程中的API函数、系统内定的常量等。 对于经常使用的循环计数变量推荐始终使用i,j,k;坐标则使用x,y,z;对于临时数值使用t;临时字符串使用s;临时字符串数组则使用sa。这样一方面一看就知其含义,代码也会短很多。因为i,j,k通常是数组下标,使用长中文变量名如“计次一”、“计次二”等写起来显然很麻烦,代码也会变得很长。<br>    对于Windows API 函数和常量,也建议采用原始英文名。其原因有二:一方面便于查阅函数帮助,特别是对于常量来说,这更重要。因为对于函数,不管翻译成中文是什么样子,在dll命令定义的地方就可以看到其“真面目”。但是常量则不然,比如你可以将“WM_NCLBUTTONDOWN”翻译成中文“窗口消息_非客户区鼠标左键被按下”,或者直接使用其数值161,写成代码就是这样的样子:</P>
<P>    .子程序 _按钮1_被单击<br> 按钮1.发送信息 (161, 17, 0)</P>
<P>  这段代码实现的功能是当在按钮上单击鼠标后就可以动态改变按钮的大小。但是谁看了这段代码都是一头雾水:161是什么?17、0又是什么含义?显然直接使用数字不行。如果把常量翻译成中文名,则是这样:</P>
<P> .子程序 _按钮1_被单击<br>     按钮1.发送信息 (#窗口消息_非客户区左键被按下, 17, 0)</P>
<P>  虽然消息的含义明确了,但后面两位参数仍不知其含义。要查对应消息的lParam和wParam也无从下手,因为你不知道该消息的英文名是如何表示的。所以,我们推荐使用这样的形式:</P>
<P> .子程序 _按钮1_被单击<br>   按钮1.发送信息 (#WM_NCLBUTTONDOWN, #HTBOTTOMRIGHT, 0)</P>
<P>  这样,即使读源代码的人不知道该消息和参数的含义,也可以很快通过查阅Win32 SDK 弄懂它 。<br>    另一方面,不同的人对同一个函数有不同的译法,即使是同一个人,翻译出来的也会前后不一致,有些甚至翻译是错误的。比如易语言自带的API助手,它将“CreateBitmapIndirect”翻译成“创建设备有关位图_”,显然是不对的,应该是“间接创建位图”;“CreateFontA”和“CreateFontIndirectA”分别翻译成“用指定属性创建逻辑字体_”和“使用指定属性创建逻辑字体_”,真不知翻译者是否弄清了这两个函数的意义;还有“CreateCaret”翻译成“创建插入符_”,而“HideCaret”却翻译成“隐藏光标_”,前后不一致……等等,不一而足。官方的API函数翻译都是这样,更别提民间的翻译了,所以还是不翻译,直接使用原英文为好。</P>
<P>    以上是我在写代码的时候遵循的一些规则,我觉得挺好的,特写出来与大家共享。大家有什么好的建议,也可以回贴提出来,我们一起来完善它! 大家都遵循一个规则交流源代码的时候也就方便多了。</P>
[此贴子已经被作者于2005-6-20 9:59:29编辑过]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 顶 踩
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋| 碧海潮声大学生网  

Copyright © 2001-2013 Comsenz Inc.   All Rights Reserved.

Powered by Discuz! X3.2( 浙ICP备11026473号 )

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