给学习编程的朋友几点建议(2)
三、程序中要有详细的注释
我有的时候看到人家编的程序,我简直受不了:他的程序里面几乎从来没有一个注释。如果你这样做了,你能保证过一年半载的还看得懂吗?——什么?你看得懂?有两个可能:这么长时间里,你一共才编了这么一个程序,而且只有几十行百来行。或者编了几个程序,都只有七八行。如果你编了几个大程序,每个几千行,你再回来看看半年前的那个,你试试。
我记得98年我刚学Visual Basic时,我把小时候玩过的游戏《华容道》和在其它电子玩具上的游戏《黑白棋》移植到了计算机里,过了没多久,我再看我的《华容道》时,我已经看不懂了。——注意,我是有注释的,但还是看不懂。所谓看不懂,并不是看不懂其中的语句,而是看不懂某一个语句在整个程序段里起的是什么作用。
后来,我就继续把注释做得更详细些。比如
◆说明每一个变量所表示的内容,取值范围
'------------申明变量-------------
Dim ShiFouYouQiZi(0:63) As Byte '某个位置是否有棋子的标志,取值0-2
'1表示有玩家的棋子
'2表示有电脑的棋子,
'0表示没有棋子
◆说明每个过程的功能,参数,返回值
Public Function MakePath(ByVal OldPath As String) As String
'一般情况下,可以用App.Path & "shuju.dat"来表示当前路径下的shuju.dat
'但是如果用户把程序装在一个驱动器的根目录下,就会出错,
'比如C盘,上例将返回“c:shuju.dat”
'这个过程的功能是将不以“\”结尾的路径后添加“\”
'OldPath是没有处理过的路径字串
'返回处理过的路径字串
'使用方法:MakePath(App.Path)&"shuju.dat"
MakePath=OldPath
If Right(MakePath,1)<>"\" Then MakePath=MakePath+"\"
End Function
◆说每一个程序分支的情况
'-----------If-Else-End if结构---------
If Rs.EOF Then
'没有查到相应的用户信息,没有符合条件的用户
Msgbox("查无此人!")
Else
'有符合条件的用户记录
'以下语句略
End If
四、要用结构化
也许有人要问:现在的语言都是结构化的,我想不用还难呢,你这不是白说了?
在这里我要说的结构化,是两个方面的内容:一是同一级语句尽量对齐,不同级语句要有缩进;二是尽量多用子程序(即过程)。
比如下面的程序段(这次以ASP为例)
'--------用户登录程序---------
If Resquest.form("UserName")="" then
'用户直接输入地址进入,必须将其引导到Login.asp
Response.Redirect "login.asp"
Else
'从表单进入
If Resquest.form("TeacherPass")="1234567" then
'教师身份
Application("Teacher")=Application("Teacher")+1
Session("TeacherNumber")=Application("Teacher")
Response.Redirect "main.asp"
Else
'学生身份
Application("Student")=Application("Student")+1
Session("StudentNumber")=Application("Student")
Response.Redirect "main.asp"
End if
End if
以上这个ASP程序段是我写这篇文章时随手写的,没有什么功能。从这段程序中,我们可以看出其中的缩进,给日后修改时减少了许多麻烦。
- · 暂时没有评论!
