主题:  怎样写好自己的程序代码?

蓝鲸

职务:版主
等级:5
金币:42.1
发贴:2614
注册:2001/12/20 15:57:57
#12004/12/25 1:59:19
程序如人生,一个人的代码可以看出一个人的个性,确实如此。
程序是艺术?非常象,是一部由精密组成的代码。其实任何工作,任何事物都是艺术,只要我们精益求精,什么都是艺术。
艺术总是在和谐中产生,反对任何的毛疪。一个发的设计,好的灵感总是产生于平和优美的环境中。试想在一邋里邋塌的乱堆的环境,工作心情是多么糟,你可能想着的是快点完成这些手上的活,到外面早点美美吃上一点。
程序员就是这样,优秀的程序员非常爱护自己的代码,他们可能把代码看成跳动的音符,有节凑优美地抖动。可是另一些人呢,可能非常懒,他们总是找借口,他们只是程序员,根本不懂艺术。是真不懂艺术???其它环境里可是艺术得不得了 比如今日的晚上,这里会有许多艺术大师出现呢

转正话题,我发觉这里一些初学的朋友在设计代码时都存在各种问题:
问题1:代码长短不整,东一个符号,西一个短句,象捉猫似的;
问题2:VB代码大小写没有规律,虽然VB对大小定不敏感,但同一代码中出现这种问题,代码不会美观;
问题3:对变量命名非常草率;
问题4:数据库的设计很不规范,表命名如XSTD,sp_gy,字段名xl,xs等,要不是设计都,非常难懂,可能设计者日子一长也忘了什么意思;
.............
非常多,不罗列了

这里我就数据库设计谈点自己看法:

一、表命名法
数据库的表命名推荐使用英文命名,在以往数据库表的命名中有用"_"作连接符的命名法如:product_detail,student_information,computer_part_list等。不过我个人喜欢用大小写结合的写法,觉得比用连词符看得更清晰,如OrderDetail,ArticleComment,UserRole,OfficeThings等,取名一定要清晰易懂。

表命名可以分组,并用一固定的词表示一组,如
StudentInformation
StudentResult
ForumMember
ForumTopic
ForumDetail
Orders
OrderDetail

另外,可以用"_"表示表的分组
Account_User
Account_UserRole
Account_Permission
Account_PermissionRole
Article_ArticleChannel
Article_Article
Article_ArticleComment
Article_RssChannel
Article_RssSetting

另表的设计可能会遇到复数命名法,如Orders,Channels,Setttins等,个人觉得命名应一惯,不能这里是复数,而那里是单数。我本人喜欢用单数,如User比Users更清晰

二、数据库的字段设计
数据库设计一般都需要一个唯一的ID号作为主键,比如存储主要信息的表,信息详细列表的分表都需要设计ID号。但有些不需要设计,比如是用作连接两个表的中间表,可以不设计ID,如用户表,角度表,用户表和角色表必须设计ID号。在两表中我们可以设计中间表,用户角色表,用以存储每个用户拥有的角色,该表可以只设计二个字段,用户ID及角色ID,用以链接两主表。
ID号的合名法,是表名加ID,如Category表的ID为CategoryID,Account_User表的取名为UserID等。
除ID外,我们有时会遇到Name这个字段,用以标识名称,该字段可能是唯一的,可能重复出现相同记录,但该字段推荐命名法与ID一样,如CategoryName,UserName,ProductName等。
字段的命名与表命名类似,使用大小写更便于阅读。

三、SQL语名的写法
SQL语句,这里出现的是五花八门,写法种类非常多,有大小写的,也有全用小写,也有一会大写,一会小写的。
这里推荐使用SQL固定词用大写,在编程语句中全部出现大写的写法很少,只有SQL才使用,这样在整个程序中,使SQL语句很突出,眼睛也很容易扫描到。用小写就不一样了,比如C系列的编程用小写可能很多,这样代码与SQL就容易搞在一起。

selectCommand = "SELECT CategoryName FROM Category"
    + " WHERE CategoryID IN (12,16)";
updateCommand = "UPDATE Article SET"
    + " Title = @Title"
    + ",Author = @Author"
    + ",Content = @Content"
    + " WHERE ArticleID = @ArticleID"


这些方法代表了个人的喜好,当然每个人喜好不同,程序的表达法也会不同。但这样找出一种方法来,目的只有一个,把程序写得更漂亮。


非常大鱼

浮尘

职务:普通成员
等级:3
金币:7.0
发贴:1258
注册:2001/11/19 12:41:09
#22004/12/27 10:39:59
呵呵,那种乱七八糟的风格也不是一无是处的。别人难以理解,可以保护“隐私”权哟,尤其是数据库,从名字上面根本看不出字段的用处(当然没有数据库的说明文档了),要想理解,除非耐心把所有相关的代码都过一遍。有些页面更是通吃,登录、验证、查找、修改、删除通通放在一个页面上,到处是IF...ELSE..END IF,代码当然是没有缩进的,再加上一大堆的include,要想修改,你就找去吧!
我被这种代码害苦了!

编辑历史:[此帖最近一次被 蓝鲸 编辑过(编辑时间:2004-12-27 14:57:10)]


浮尘

职务:普通成员
等级:3
金币:7.0
发贴:1258
注册:2001/11/19 12:41:09
#32004/12/27 10:42:20
除非你别有用心,否则还是向版主那样,把自己的代码写得规范些,即方便别人,也方便自己的后期维护。



缺缺

职务:管理员
等级:8
金币:41.0
发贴:9620
注册:2004/1/14 19:14:47
#42004/12/27 10:54:10
我觉得程序员不是死板的,程序员更需要跳跃的思维.我喜欢在我的程序中加入一些类似于彩蛋之类的东西~

我的意见差不多和楼主一样,不过真正做起来可能并不会做的那么好.



浮尘

职务:普通成员
等级:3
金币:7.0
发贴:1258
注册:2001/11/19 12:41:09
#52004/12/27 11:02:44
加入彩蛋之类的东西并不影响代码的书写呀。



缺缺

职务:管理员
等级:8
金币:41.0
发贴:9620
注册:2004/1/14 19:14:47
#62004/12/27 11:05:29
我知道.我只是说说题外话.
程序员思维活跃,才能写出好的代码.



蓝鲸

职务:版主
等级:5
金币:42.1
发贴:2614
注册:2001/12/20 15:57:57
#72004/12/27 14:21:10
严谨和活跃可以共存,但活跃与邋塌放在一起肯定倒楣。比如漂亮的大楼设计。


非常大鱼

蓝鲸

职务:版主
等级:5
金币:42.1
发贴:2614
注册:2001/12/20 15:57:57
#82004/12/27 14:59:05
diffmaker在上个帖子中说
引用:
呵呵,那种乱七八糟的风格也不是一无是处的。别人难以理解,可以保护“隐私”权哟,尤其是数据库,从名字上面根本看不出字段的用处(当然没有数据库的说明文档了),要想理解,除非耐心把所有相关的代码都过一遍。有些页面更是通吃,登录、验证、查找、修改、删除通通放在一个页面上,到处是IF...ELSE..END IF,代码当然是没有缩进的,再加上一大堆的include,要想修改,你就找去吧!
我被这种代码害苦了!


这道让我想起N年前的小朋友,为了躲避老妈,把钱都话在石缝里了,我亲眼看到他从石头底下取钱。


非常大鱼