这一篇是和具体技术没什么关系的帖子(我尽量少发和技术无关的贴),是2008年在做项目验收时期,心里想到什么就随便在一篇文档里记些什么,很随意,没有什么规范。长期以来,我一直在考虑的主题是:用户最需要什么?用户的需求是什么?所谓的“技术”应该怎么样去影响和帮助别人,也就是怎么样把我所掌握和研究的单纯的“技术”去转换为最终对人们有益的价值。因此长期以来,我也一直非常关注用户体验。同时因为我见过太多有理想有朝气有勇气有理想的“技术人员”,对他们从事的职业或项目拥有非常乐观的期待和希望,所以相对而言从用户角度考虑,我也有非常“现实”,非常“冷静”,非常“苛刻”的观点。我写过一些小工具,给自己玩的居多,也设计和编写过一些较大规模的模块,在这些过程中也使我越来越得到更深的认识,包括如何保持设计质量,如何让项目可维护而避免陷入维护成本急剧增长的深渊。
——hoodlum1980
1. 如果一个参数或者选项,在70%的情况下能够确定或者计算出来,则应该提供默认值。而不是让用户手工录入。
2. 不要对因为对输入内容的过于严格的校验而设计界面,这样可能导致影响用户操作。
给用户尽可能最大的自由度。开发人员往往从技术实现和程序逻辑角度考虑,而有此出发的一些限制例如UI上的一些展示和控制,可能在某些程度上限制了用户的操作习惯和方便(可能这两者也是具有矛盾性的)。例如:IP输入框,某些序列号输入由多个TextBox组合而成,但它们对“复制粘贴”的支持不友好,从而使用户必须多次重复复制粘贴操作才能完成,这时还不如用一个完整的TextBox取代,然后在程序中在对输入做检验。虽然UI上的严密缜密对接收输入的技术人员来说达到了目的,但是却对用户造成不便。
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.
13.
关于枚举定义,为了可维护性考虑,应该尽可能手工指定值而不是让编译器去做。对于值的大小和逻辑有关的,例如依此去把枚举值分组,则设计值时不应该使它们连续,以保留将来有“插入”新值的“空隙”。
14. 界面美化是依据个人风格和感觉,有时简约就是美。一个程序的美化通常是在基本功能已经经过足够测试,运行稳定以后的事情。应该记住逻辑的正确性,可靠性,稳定性,效率是比外观重要的,好比一个人的内在。但如果一个人过渡不修边幅,例如凌乱无序的UI无论如何都令人不悦的,在于对度的把握。
============================================
下面是一些其他方面的笔记:
C语言笔记
--------------------------
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)