最近我试用了锐捷网络开发的一套认证计费管理系统,我一眼就看出了这是使用我用了多年的Delphi写的,(虽然我已经2年没有再用Delphi了),在我眼里,用Delphi把一个软件的界面写成这样,也真的是很强,浑身发抖。。。

在我批评之前,我说几件事呵呵。

  • 本批评本着学习的目的。如果你想写界面友好的软件,我还没找到好的资料,这里有2篇可以参考,User Interface Design: Tips and Techniques,Interaction Patterns in User Interfaces,如果你想找到一些反例,推荐umlchina的非程序员第10期的《糟糕界面集锦-控件篇》。界面以外的东西,我无法看到,这里不提。

  • 不管怎么说,他们这个软件能用起来。而且效果好像还不错。就类似我们广泛使用的动网论坛,如果你查看动网的源代码,会发现编码大小写不规范,舍不得空格空行,代码逻辑和表现逻辑混杂在一起(asp的通病,这个不好说),到处的Magic Number。不过他能用起来。把这一大堆乱78糟的代码堆积起来的系统居然能完整得跑起来并跑在国内大部分的论坛系统上。这也是很神奇的。我也曾经给一个客户安装了一个动网论坛赚了一点点小钱,所以我的意思不是想骂他。我的意思是,能用是最关键的,一个项目不管你追求多高的技术含量,客户只要求一个:你要给我能用起来。是呀,用都不能用,你程序写得再漂亮,有什么用呢?

  • 我的看法不表明我会做的比他们好,因为每个人都有点眼高手低的缺点。

  • 这套系统的使用者比较少,或者时间紧迫。所以可能他们忽略了界面方面的考虑。

界面:

首先是大大的字体,Height=14。所有软件的字体都是宋体9号,我不知道他们为什么要设置得这么大。大字体给人非常不专业的感觉,如果是POS,显示信息少,使用者离屏幕较远,可能字体都很大,但是你见过一个专业人员使用的系统管理软件诸如sqlserver使用大字体么?

Icon做得这么难看,增加和删除都是同一个Icon?属性?居然还不是透明的Icon。退出程序为什么是undo的图标?按toolbar上的×提醒我是否退出应用程序是一个好的设计,但是,按title bar上的×为什么也给我来这么一个提醒?

为什么放一个RxClock在那里?在这个系统里面,时间很重要么?如果觉得Toolbar很空,那就去掉或者跟mdichild合并。

系统,窗口,帮助?菜单没有快捷键,99%的菜单都没有快捷键。有些是使用Delphi缺省的从Z倒退的快捷键~~~这个缺省的属性都懒得修改么?

使用eXeScope打开,我看到了所有的Form定义。

随便打开一个统计信息,程序经常失去响应,看来是没有用Application.ProcessMessage。。。

最后我得出的结论是:应该是一个Delphi新手。

数据库设计:

于是我决定随便进入系统其他部分看看,安装路径是C:\Program Files\锐捷网络\RG_Radius,这个用中文做目录名。。。不好说什么。查看sqlserver数据库设计,所有的字段名都是大写?ft。为什么不是camel-cased?点开user表,关键字是一个varchar(32)的userid字符串,用字符串来foreign key,怪不得统计时速度那么慢。如果userid是关键字,那更改了userid,所有的log是不是也要跟着修改?打开仅有的3个Trigger,我看到混乱的编码。

WEB系统:

查看面对使用者的Web系统,这是给使用者修改密码,查看使用记录的系统。用cgi写,首页非常得难看,移动到菜单上字体还会变大。。。ft。网页设计新手的做法。整个站点没有共享一个Session,也就是用户修改密码,查看记录等等执行每个动作都需要输入用户帐号和密码。。。没有导航。或者说有,IE的后退按钮。

看来整套系统的项目管理也是非常的混乱,如果以上这些问题发生在只有一个人采用小作坊模式开发,那完全可以理解,而锐捷网络却是一个大公司(可能是实达的一个部门,不清楚),有着60个成功案例的大公司。。。不知道国内的软件公司是不是都这样。。。

又:这个系统有个安全方面的漏洞。我已经给他们公司发信件说明了,在他们未解决之前,我就不多说了。