这一篇是和具体技术没什么关系的帖子(我尽量少发和技术无关的贴),是2008年在做项目验收时期,心里想到什么就随便在一篇文档里记些什么,很随意,没有什么规范。长期以来,我一直在考虑的主题是:用户最需要什么?用户的需求是什么?所谓的“技术”应该怎么样去影响和帮助别人,也就是怎么样把我所掌握和研究的单纯的“技术”去转换为最终对人们有益的价值。因此长期以来,我也一直非常关注用户体验。同时因为我见过太多有理想有朝气有勇气有理想的“技术人员”,对他们从事的职业或项目拥有非常乐观的期待和希望,所以相对而言从用户角度考虑,我也有非常“现实”,非常“冷静”,非常“苛刻”的观点。我写过一些小工具,给自己玩的居多,也设计和编写过一些较大规模的模块,在这些过程中也使我越来越得到更深的认识,包括如何保持设计质量,如何让项目可维护而避免陷入维护成本急剧增长的深渊。
——hoodlum1980
1. 如果一个参数或者选项,在70%的情况下能够确定或者计算出来,则应该提供默认值。而不是让用户手工录入。
2. 不要对因为对输入内容的过于严格的校验而设计界面,这样可能导致影响用户操作。
3. 关于鼠标和键盘,不同用户有很不同的习惯和需求。对于大多数用户来说,尽可能提供鼠标操作代替键盘操作。对于一个规模比较大,比较复杂,用户较多,使用量很大的软件来说,快捷键的使用是大于鼠标的。
4. 缓存必要的参数。
5. 能针对不同用户(例如根据用户ip推断用户所在地区),为用户提供个性化的默认参数。
6. 一个网页需要给用户提供尽可能多的超链接,而一个windows程序则不应该提供太多的控件,注意这两者的本质区别。前者代表信息量丰富。后者表示用户使用难度增加。。。
7. 权限操作时,不应该仅仅吧权限放在界面的enable和disable上,在所有执行权限动作的代码之前,比如检验一次用户权限。即不仅相应界面是disable的,还要在代码中加权限判断。这样即使界面Enable,没有权限的用户也不能执行操作。并给出无权限的反馈。
8. 多语言:提示信息:变量在字符串中。
*s1=".....Hello,%s....";
printf(s1,name);
9. 关于多语言的问题:
我认为这个问题的出现是在BS架构流行后产生的需求,在cs架构下属于为用户定制,不存在这个矛盾。但bs架构是使用统一的服务器发布服务,用户群体使用浏览器访问服务。这样用户群体是不可控制和预知的,因此这要求在一个统一服务上为不同语言的客户分类服务,从而导致多语言需求的产生。换句话说,我们开发多语言实际上对开发过程造成了很大的负担和烦琐,实现起来也不是那么容易,因为多语言是分散平均散步在系统的各个角落,控件属性,内部数据,等等,是分散的,所以不易控制。但如果是为特定用户开发我们根本不需要考虑这个问题。只需要提供几种集中语言的版本就可以了,例如qq的中文版,繁体版,英文版,这是集中性质的资源。对于一个vc程序来说,程序中固化存储了字符串资源,应该就是为多语言考虑而设计,我们需要修改程序中的资源,但要注意区域文化和编码页的问题。
10. 字段级可见性(数据库)。
11. 测试页面的功能也要做的尽可能完整和完善,不要过于简陋。
12. 错误提示信息,针对技术人员,普通用户的水平,提供准确的信息提示,必须能够直接帮助用户确定发生问题的环节所在。而不仅仅说错误,或者无法帮助对方查找原因。对技术人员提供更详细的技术细节和errormsg.
--------------------------
1. 一个语句的值:语句1,语句2,语句3;
上述的取值是语句3(最后一个语句)的值。
2. “-=”,“+=”是一个操作符(operator),所以
表达式 x+=x-=x*x;
求值过程是:x -= x*x; 即x = (x-x*x);
x += x; 即x = 2x =2*(x-x*x);
(TO BE CONTINUED)