首页 > 编程语言 >12年前写的关于程序设计的感想

12年前写的关于程序设计的感想

时间:2024-06-15 23:01:18浏览次数:15  
标签:12 处理 程序 感想 用户 默认 窗体 程序设计 用户手册

程序设计

这是个很大的命题,讲述这个的书籍非常多。俺在这里只是说说俺自己的观点。有一次,一个朋友的公司要做一个项目,找我去参谋参谋。到朋友那里时,他们初期的分析阶段刚好结束,接下来打算开始码代码了。那天下午刚进会议室,朋友就很兴奋的给我讲解整个模型,那个是那个的实体类,那个又是那个的工厂,那个继承自那里等等。朋友很high的讲了半小时后,问我有啥意见时。我就说“有主界面和最常用的界面的效果图吗?”。朋友说:“这个还没有,这个具体开发时再找美工做”。我就又问:“用户手册是不是也打算程序开发时再写呢。”朋友也说是这样的。之后我就和朋友讨论这个项目,其实就是一个申报审批的管理,只是中间的流程繁琐,有工作流的影子,又一些行业标准在里边。我建议他:“晚2天再开始具体编码。但是用户手册和效果图要先做一些”。

用户对程序的评价实际上就是来自于用户的体验。简单好用的程序,用户就喜欢。用户手册和效果图实际上就反应了程序的用户体验。程序打算将来带给用户什么样的用户体验,这也是程序设计中很重要的一部分。用户手册恰恰体现了这个。举个最简单的例子。一套合理的快捷键的设置和定义,绝对可以让你的程序好用不止一点点。快捷键能用单个键的就不用组合键、ESC键的处理、上下键的处理、回车键的处理、Tab键的处理等等。这些在开始写代码前就可以到写用户手册中。俺之前处理过别人的一个项目。那个就是火车站的一个后勤系统。客户抱怨很难用,主要是输入时要从几万条中选择一个合适的数据。最初的设计时点击输入框右边的一个小按钮,然后弹出一个查询窗体,然后再输入关键字,进行查询,选中某条数据,然后再点击确定按钮。我给那个系统的诊断就是,直接在输入框里输入关键字,在输入的同时,下面用浮动窗体显示符合条件的数据。并响应上下方向键和回车键的处理。采用了这种方式后,客户说好用多了。为了实现这样的效果,我特意给他写了一个高速的查询方法,因为如果用数据库的全文搜索和like都太慢,在键盘连续按下时有明显的停顿感。我一直认为,尽量减少弹出窗体的使用,因为弹出窗体会带来停顿感,而且也会给用户造成操作步骤繁琐的错觉。当然,我不是排斥弹出窗体,业务上从一个环节到下一个环节的操作,我觉得用弹出窗体比较好。默认值和默认焦点,也是我认为比较重要的。一个窗体在激活时,默认焦点在那个按钮或者输入框里,这个要花很多心思研究。举个简单的例子,那个询问是否执行啥啥操作的提示框,打开时焦点到底是在“是”还是“否”上?我以前的处理时,那种悲观意义的操作,默认是“否”,因为我担心用户不小心连续按住了键盘。这里的悲观意义的操作,我是指“删除”,“封存”,“还原”之类。默认值的处理,一般是日期,选择框之类的,例如日期是默认今天还是下一个工作日,民族默认是汉族(这个人最多嘛)。这些可能你会觉得有点无聊,这些东西没必要写在用户手册中。但是,俺不这么认为。俺觉得。这些有必要和用户交代清楚。程序是用来使用的,只有被使用的程序才有价值,那么程序设计要设计那些呢?首先就应该是这个程序用来做什么和这个程序怎么用,这是项目的负责人要知道自己想要的是个怎样的项目,越清晰越好。俺一直和别人说,项目负责人主要是看对项目的把握能力,如果连自己想要的是啥都模糊,那难免会有偏离方向的时候。所以,有时候,设计程序的架构和模式之前,写两页用户手册是没坏处的。其实用户手册还有一个附加作用。很多的开发团队里,有新手也有熟手,那种刚毕业的写的程序,你看上去可能很郁闷。评价往往是“很多细节有待完善”,你还可以把用户手册当开发规范来用,你可以要求新人写的窗体也要符合用户手册上标出的细节。

效果图也有类似用户手册的效果。好的效果图,能够体现出程序的设计。例如主界面,一个友好的导航能使用户更轻松的使用软件。还有用户最常用的界面一定要设计好,要显示那些信息,那些信息要突出显示等等。而且设计时,最好用实际的数据量,如果是表格,那么一般情况下这个表格是多少条数据,那就做多少条数据的效果。还有不同的分辨率下的效果。还是那个朋友的申报审批系统。每个申报在业务流程中有着复杂的状态。然后操作这些就对应这个无数的按钮和菜单。这点我比较反对,因为这样的设计经常会把人搞晕。

你看看很多游戏,初中生高中生玩一下就上瘾,我们设计的程序连大学生都不知该怎么用。

一个审批单的后续流程很复杂,是的,可能有很多分支。但是这不意味着,要不停的关闭窗体,然后在几十个菜单里

选择不同的菜单,才能继续下一步的。完全可以用一个界面,类似技能树的方式来处理吗,这个小学生都会攀技能树。

默认处理在程序设计中是个很重要的环节。例如窗体打开的默认焦点。一个窗体打开,默认焦点在那里,一定要设计好。

如果是弹出的窗体是 那种多个处理的选择,那么默认的焦点应该就是 根据之前选择的数据,推测的最可能的选择。

合理的快捷键也是程序设计的必须环节。

先写用户手册

有一次,一个朋友的公司要做一个项目,找我去参谋参谋。到朋友那里时,他们初期的分析阶段刚好结束,接下来打算开始码代码了。那天下午刚进会议室,朋友就很兴奋的给我讲解整个模型,那个是那个的实体类,那个又是那个的工厂,那个继承自那里等等。朋友很high的讲了半小时后,问我有啥意见时。我就说“有主界面和最常用的界面的效果图吗?”。朋友说:“这个还没有,这个具体开发时再找美工做”。我就又问:“用户手册是不是也打算程序开发时再写呢。”朋友也说是这样的。之后我就和朋友讨论这个项目,其实就是一个申报审批的管理,只是中间的流程繁琐,有工作流的影子,又一些行业标准在里边。我建议他:“晚2天再开始具体编码。可以先写写用户手册”。

用户对程序的评价实际上就是来自于用户的体验。简单好用的程序,用户就喜欢。用户手册和效果图实际上就反应了程序的用户体验。程序打算将来带给用户什么样的用户体验,这也是程序设计中很重要的一部分。用户手册恰恰体现了这个。举个最简单的例子。一套合理的快捷键的设置和定义,绝对可以让你的程序好用不止一点点。快捷键能用单个键的就不用组合键、ESC键的处理、上下键的处理、回车键的处理、Tab键的处理等等。这些在开始写代码前就可以到写用户手册中。俺之前处理过别人的一个项目。那个就是火车站的一个后勤系统。客户抱怨很难用,主要是输入时要从几万条中选择一个合适的数据。最初的设计时点击输入框右边的一个小按钮,然后弹出一个查询窗体,然后再输入关键字,进行查询,选中某条数据,然后再点击确定按钮。我给那个系统的诊断就是,直接在输入框里输入关键字,在输入的同时,下面用浮动窗体显示符合条件的数据。并响应上下方向键和回车键的处理。采用了这种方式后,客户说好用多了。为了实现这样的效果,我特意给他写了一个高速的查询方法,因为如果用数据库的全文搜索和like都太慢,在键盘连续按下时有明显的停顿感。我一直认为,尽量减少弹出窗体的使用,因为弹出窗体会带来停顿感,而且也会给用户造成操作步骤繁琐的错觉。当然,我不是排斥弹出窗体,业务上从一个环节到下一个环节的操作,我觉得用弹出窗体比较好。默认值和默认焦点,也是我认为比较重要的。一个窗体在激活时,默认焦点在那个按钮或者输入框里,这个要花很多心思研究。举个简单的例子,那个询问是否执行啥啥操作的提示框,打开时焦点到底是在“是”还是“否”上?我以前的处理时,那种悲观意义的操作,默认是“否”,因为我担心用户不小心连续按住了键盘。这里的悲观意义的操作,我是指“删除”,“封存”,“还原”之类。默认值的处理,一般是日期,选择框之类的,例如日期是默认今天还是下一个工作日,民族默认是汉族(这个人最多嘛)。这些可能你会觉得有点无聊,这些东西没必要写在用户手册中。但是,俺不这么认为。俺觉得。这些有必要和用户交代清楚。。程序是用来使用的,只有被使用的程序才有价值,那么程序设计要设计那些呢?首先就应该是这个程序用来做什么和这个程序怎么用,这是项目的负责人要知道自己想要的是个怎样的项目,越清晰越好。俺一直和别人说,项目负责人主要是看对项目的把握能力,如果连自己想要的是啥都模糊,那难免会有偏离方向的时候。所以,有时候,设计程序的架构和模式之前,写两页用户手册是没坏处的。其实用户手册还有一个附加作用。很多的开发团队里,有新手也有熟手,那种刚毕业的写的程序,你看上去可能很郁闷。评价往往是“很多细节有待完善”,你还可以把用户手册当开发规范来用,你可以要求新人写的窗体也要符合用户手册上标出的细节。

用户手册是用来让用户更容易的使用你的软件。你在写用户手册时,会自然而然的站在用户角度上来审视程序。这个角度的转换是很必要的。“坚持以人为本”,十六届三中全会《决定》中明确指出了这一点。貌似好像有点牵强。10多年前,我一个质量控制的程序的用户手册有“第一次使用本系统”这样一章。这个章节标题算是最常见的,内容也更简单,就是说明了系统有自我演示的功能。打开程序后选择“操作演示”,系统就会开始模拟鼠标键盘操作同时有浮动提示。用户就像看电影似的,基本不需要你做啥培训,就会用你的系统。当然也可以用视频之类的,但是那样带入感,要稍微差点。说到这里,不得不说,很多网游在这方面做得很出色。网游的用户手册就是网游本身,他们把导航信息提示之类的做到了很完美的一个程度。还是那个朋友的申报审批系统。那个环节状态很多,我看了就有点晕,我就让朋友学习一下网游。很多网游,初中生高中生玩一下就上瘾,小学生注册后就都会玩。很多公司开发的程序又截然相反,实施时,培训了一天之后,连大学生都不知该怎么用。有的连博士专家都用不会用。我们看看网游是如何处理这一点的。它们的每个细节都有详细的说明显示给用户,下一步到那里,它们都会用脚印或者其他方式提示给你,你跟着脚印走就可以了。需要点击那里,它们就用闪烁的箭头边框之类告诉你。快捷键啥的也是很直观的展现给你。总之,基本只要是进入了游戏,它就带你感受系统的一切,打怪不会他教你,挖矿不会他教你。有点傻瓜机的概念。我觉得这就是地地道道的“以人为本”。貌似有点跑题了,话说回来,先写用户手册只是一种方法,只要一开始就把精力放在怎么捉住用户,怎么让用户感觉到舒服这些方面上就可以。我见过太多的项目负责人,一开始就是整技术框架,然后就是实际开发,中间考虑用户体验的时间不到20%,我不看好这种开发方式。

标签:12,处理,程序,感想,用户,默认,窗体,程序设计,用户手册
From: https://blog.csdn.net/withcsharp2/article/details/139612287

相关文章

  • 《计算机组成原理与汇编语言程序设计》读书笔记
    信息《计算机组成原理与汇编语言程序设计(第4版)(高等学校规划教材)》徐洁电子工业出版社摘录硬件组成在早期,冯·诺依曼将计算机的硬件组成分为5大部件。几十年来,计算机硬件系统已有了许多重大变化。首先,现在采用的大规模及超大规模集成电路,可将运算器和控制器集成在一块芯片......
  • Java程序设计的精髓:构建稳健的异常处理体系
    在Java的世界里,异常处理是确保程序稳定性和健壮性的关键一环。一个良好的异常处理机制不仅能够提升用户体验,还能在出现问题时保护应用程序不受损害。本文将深入探讨Java中的异常处理机制,并通过实例和图解来展示如何构建一个稳健的异常处理体系。异常处理基础在Java中,异常(Exce......
  • 完美解决“由于找不到msvcp140.dll,vcruntime140_1.dll,msvcp100.dll,msvcr120.dll等导致
    成功解决问题:由于找不到msvcp140.dll,vcruntime140_1.dll,msvcp100.dll,msvcr120.dll,mfc140u.dll,mfc140u.dll等导致的无法继续执行代码。重新安装程序可能会解决此问题。......
  • 17岁中专女生勇夺2024阿里全球数学赛12名好成绩,今天,站在程序员的视角,我们来聊聊数学对
    大家好,我是程序员陶朱公,一个认真生活,总想超越自己的程序员。前言相信这两天,大家都刷屏到了一个比较热度的新闻——17岁中专女生在今年这届阿里举办的全球数赛中,勇夺第12名的好成绩。↓↓↓看到这里,可能有小伙伴会觉得有点疑惑:又不是第一名,不明白第12名的她,为什么会引起社会......
  • FinGPT:12.3k 星星!金融领域的开源大模型来了!
    ✨点击这里✨:......
  • square869120Contest #3 G Sum of Fibonacci Sequence
    洛谷传送门AtCoder传送门特判\(n=1\)。将\(n,m\)都减\(1\),答案即为\[[x^m]\frac{1}{(1-x-x^2)(1-x)^n}\]若能把这个分式拆成\(\frac{A(x)}{(1-x)^n}+\frac{B(x)}{1-x-x^2}\)的形式,其中\(\degA(x)\len-1,\degB(x)\le1\),那么答案就是好算的。......
  • 【会议征稿,IEEE独立出版】第四届计算机技术与信息科学国际研讨会(ISCTIS 2024,7月12-14)
    第四届计算机技术与信息科学国际研讨会(ISCTIS2024)将于2024年7月12-14日在中国西安举行。大会将邀请国内外计算机技术与信息科学领域的知名专家学者出席会议,在大会上通过主题演讲、口头报告等方式与学者们分享最新研究成果、交流探讨学术难题。同时,我们诚挚邀请您参加本次......
  • AI预测福彩3D采取888=3策略+和值012路或胆码测试6月15日新模型预测第5弹
            今天咱们继续验证新模型的8码定位=3,目前新模型新算法8码定位经过4次测试,已命中3次,9码定位连续命中4次。咱们重点是预测8码定位=3+和值012+胆码。有些朋友看到我最近几篇文章没有给大家提供缩水后的预测详情,在这里解释下:其实我每篇文章中既有8码定位,也有和值012......
  • Android 12.0 MTK平台关机充电动画横屏显示修改
    1.前言在12.0的系统rom定制化开发中,在关于MTK平台的产品中,系统默认的充电动画是竖屏显示的,但是在像平板的产品中竖屏动画肯定不符合规范,所以需要在平板TV产品中,充电动画同时也是需要修改为横屏显示的,接下来就来分析下充电动画的相关绘制流程,然后实现功能2.MTK平台关机充电动......
  • DreamJudge-1248-整数奇偶排序
    1.题目描述TimeLimit:1000msMemoryLimit:256mb输入10个整数,彼此以空格分隔。重新排序以后输出(也按空格分隔),要求:1.先输出其中的奇数,并按从大到小排列;2.然后输出其中的偶数,并按从小到大排列。输入输出格式输入描述:任意排序的10个整数(0~100),彼此以空格分隔。输......