【完全随笔】用户体验和设计

简介: 这一篇是和具体技术没什么关系的帖子(我尽量少发和技术无关的贴),是2008年在做项目验收时期,心里想到什么就随便在一篇文档里记些什么,很随意,没有什么规范。长期以来,我一直在考虑的主题是:用户最需要什么?用户的需求是什么?所谓的“技术”应该怎么样去影响和帮助别人,也就是怎么样把我所掌握和研究的单纯的“技术”去转换为最终对人们有益的价值。

            这一篇是和具体技术没什么关系的帖子(我尽量少发和技术无关的贴),是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)

目录
相关文章
|
移动开发 JSON Java
APK文件结构
APK文件结构
950 0
|
Linux
如何看懂火焰图
如何看懂火焰图
2192 0
如何看懂火焰图
|
前端开发
vuecli3打包报警告:chunk chunk-common [mini-css-extract-plugin] Conflicting order.
vuecli3打包报警告:chunk chunk-common [mini-css-extract-plugin] Conflicting order.
633 0
vuecli3打包报警告:chunk chunk-common [mini-css-extract-plugin] Conflicting order.
|
人工智能 自然语言处理 物联网
魔搭社区模型速递(8.10-8.16)
🙋魔搭ModelScope本期社区进展:📟5285个模型,📁497个数据集,🎨59个创新应用,📄 9篇内容
714 0
|
存储 缓存 分布式计算
高内存场景必读!阿里云r7/r9i/r8y/r8i实例架构、性能、价格多维度对比
阿里云针对高性能需求场景,一般会在活动中推出内存型r7、内存型r9i、内存型r8y和内存型r8i这几款内存型实例规格的云服务器。相比于活动内的经济型e和通用算力型u1等实例规格,这些内存型实例在性能上更为强劲,尤其适合对内存和计算能力有较高要求的应用场景。这些实例规格的云服务器在处理器与内存的配比上大多为1:8,但它们在处理器架构、存储性能、网络能力以及安全特性等方面各有千秋,因此适用场景也各不相同。本文将为大家详细介绍内存型r7、r9i、r8y、r8i实例的性能、适用场景的区别以及选择参考。
|
人工智能 自然语言处理 JavaScript
我定制的通义灵码 Project Rules,用 AI 写出“更懂我”的代码
本文分享了一名全栈开发同学使用通义灵码做代码生成、接口注释、测试代码补全等工作,效率明显提升的体会。
|
机器学习/深度学习 人工智能 自然语言处理
AI训练师入行指南(三):机器学习算法和模型架构选择
从淘金到雕琢,将原始数据炼成智能珠宝!本文带您走进数字珠宝工坊,用算法工具打磨数据金砂。从基础的经典算法到精密的深度学习模型,结合电商、医疗、金融等场景实战,手把手教您选择合适工具,打造价值连城的智能应用。掌握AutoML改装套件与模型蒸馏术,让复杂问题迎刃而解。握紧算法刻刀,为数字世界雕刻文明!
597 6
|
前端开发 JavaScript 测试技术
Google提出的网页性能评价指标
Google推出的“网页指标”计划旨在优化网页用户体验,其中Core Web Vitals为核心指标,包括Largest Contentful Paint (LCP)、Interaction to Next Paint (INP)和Cumulative Layout Shift (CLS),分别衡量加载速度、互动性和视觉稳定性。这些指标采用第75百分位数评估,确保在不同设备和网络环境下提供一致的用户体验。
1184 5
Google提出的网页性能评价指标
|
数据可视化 Java 程序员
通过实例学习鸿蒙静态库的创建与使用
通过实例学习鸿蒙静态库的创建与使用
737 1
|
消息中间件 Kafka API
Flink-看完就会flink基础API
Flink-看完就会flink基础API
823 1

热门文章

最新文章