当前位置: 首页 > 编程日记 > 正文

软件开发经验总结(一)细节决定软件的成败

最近在公司做开发的时候,需要开发一个自动备份的功能,于是我想到了SQL SERVER备份调度功能,于是打开SQL SERVER 备份调度界面,想照样画葫芦做一个,然后20分钟就把该功能做出来。30分钟过去了,我的界面依然还没有做完,原来打算很快做完的界面却总是离目标遥遥无期,当把所有功能做出来时竟然花了45分钟,于是,我仔细地研究了该功能,居然从中发现了该功能的3个秘密:
  
  (1) 该功能为我们提供了快捷键,即使是LABEL上也提供了快捷键,使该软件能够适应不同的用户习惯操作。
  
  (2) 开发该功能的工程师确实很细心,什么样的日期以及时间备份都帮你考虑到了,你根据该功能,选择适合你的程序的备份时间。
  
  (3) 软件在给出的每一个提示都很中肯,不会误导用户。
  
   从这一个小功能中,微软在软件的细节上做得很投入,功能也很人性化,每次使用微软的软件时,总是感觉到很贴心,也许这就是我一直选择微软.net开发平台的原因。确实,开发软件的时候注意软件的细节将会使软件给用户更好的体验,我们学习微软的技术,更要学习微软的细心以及全面为用户考虑的精神,而不是满足于“软件可以使用”或“功能能够实现”的情况,多关注一些细节,将会使你的软件更完美。
  
   
  
  回头再看看自己开发的软件,发现自己开发的软件竟然还有很大的提升空间,于是,对之前开发过程中一些可以改进的细节列出,进行总结,在今后的开发中将进行改进。
  
   
  
  (1) 软件每一个打开的窗体都应该写上标题,而不能是默认的标题。
  
  (2) 软件的功能都加上快捷键,使它适应不同操作习惯的用户。
  
  (3) 每一个窗体都加上“关闭”快捷键,当用户需要关闭窗体时,只需要点“ESC”键就可以退出,方便用户的操作。
  
  (4) 所有输入文本框都必须按照用户的业务要求进行排列,使用户可以更快更好地输入数据。
  
  (5) 由于之前习惯使用了DropDownList,现在使用ComboBox时,如果不允许用户输入,应该修改为DropDownList模式。
  
  (6) 进入系统以及退出系统时,应该加上Splash窗口。
  
  (7) 如果程序执行比较耗时的代码,应该给出个提醒,而不能让用户傻等,最好放到线程中处理,不能让主线程出现假死状态。
  
  (8) 界面的各种TabIndex应该按照顺序排列,另外,当每个控件获得焦点时,应该改变控件的颜色,让用户清楚当前获得焦点的控件。
  
  (9) 如果用户习惯操作了EXCEL,应该将录入功能做成:录入一个项后,点“回车”焦点跳到下一个录入项。
  
  (10) 弹出的提示(MessageBox)窗体应该加上标题。
  
  (11) 用户登陆的窗口,应该自动帮用户记住用户名,用户可以自己确定是否要记住密码。
  
  (12) 系统中的各种提示必须要合理,不能有误导用户的情况。
  
   
  

  当然,还有许多需要注意的技术和非技术的细节问题,往往我们技术人员觉得不重要的东西偏偏是用户觉得最重要的。我相信,在软件开发的过程中,多关注开发过程中的细节,将会使我们的软件更加完美,当然付出得越多,得到的越多。  


本文转自左正博客园博客,原文链接:http://www.cnblogs.com/soundcode/archive/2010/12/24/1916407.html,如需转载请自行联系原作者


相关文章:

简明 HTML CSS 开发规范

作者:wjack 文章来源: 蓝色理想//总论本规范既是一个开发规范,也是一个脚本语言参考,本规范并不是一个一成不变的必须严格遵守的条文,特殊情况下要灵活运用,做一定的变通。但是,请大家千万不…

B 站神曲damedane:精髓在于换脸,五分钟就能学会

导读:AI 换脸技术层出不穷,但一代更比一代强。最近,一个发表在 NeurIPs 2019 的 AI 换脸模型 first order motion model 火了起来,其表情迁移效果胜过同领域其它方法。最近,这项技术在 B 站引起一波新潮流……来源 | H…

html select以数组的方式提交

2019独角兽企业重金招聘Python工程师标准>>> 1).select 以数组的方式提交 <form> <input type"hidden" name"app" value"wap_test"> <select name"attribute[颜色]"> &…

META的一些功用

作者&#xff1a;军军 文章来源&#xff1a;闪吧 META的一些功用 META标记用于描述不包含在标准HTML里的一些文档信息。基于这一基 础上又开发出一些其它的有用功能&#xff0c;下面我挑选几种功能和大家说一下&#xff1a; &#xff11;、如何让搜索引擎搜索到你的页面 …

Python爬虫并自制新闻网站,太好玩了

来源 | 凹凸数据&#xff08;ID&#xff1a;alltodata&#xff09;我们总是在爬啊爬&#xff0c;爬到了数据难道只是为了做一个词云吗&#xff1f;当然不&#xff01;这次我就利用flask为大家呈现一道小菜。Flask是python中一个轻量级web框架&#xff0c;相对于其他web框架来说…

CPU值满resmgr:cpu quantum造成的Oracle等待事件解决办法

cpu quantum造成的Oracle等待事件解决办法 不少接触数据库的朋友有一个困扰已久的问题——resmgr:cpu quantum。已经遇过不少次这种CPU突然全绿的情况&#xff0c;通过隐含参数屏蔽了一下&#xff0c;方便研究。 刚好有人问我这个问题&#xff0c;就干脆翻文档写一篇文章给这位…

讲解用户角色切换

方法一&#xff1a;有root密码&#xff0c;可以使用su - root切换到root下&#xff0c;为了安全起见&#xff0c;不建议使用&#xff0c;因为如果切换到root下&#xff0c;被人修改了root密码&#xff0c;就真的完蛋了.......方法二&#xff1a;通过sudo给普通用户授权&#xf…

HTML教程-各窗口间相互操作(Frame Target)

文章来源&#xff1a; 山西之窗由Frames分出来的几个窗口的内容并不是静止不变的&#xff0c;往往一个窗口的内容随着另一个窗口的要求而不断变化&#xff0c;这就提高了Frames的利用价值。为了完成各窗口之间的相互操作&#xff0c;我们必须为每一个窗口起一个名字&#xff0c…

[转载] 晓说——第3期:梦回青楼 爱与自由的温柔乡(上)

转载于:https://www.cnblogs.com/6DAN_HUST/archive/2012/08/20/2647811.html

10个 Python 工程师,9个不合格!

毋庸置疑&#xff0c;Python越来越被认可为程序员新时代的风口语言。 无论是刚入门的程序员&#xff0c;还是年薪百万的 BATJ 的大牛都无可否认&#xff1a;Python的应用能力是成为一名码农大神的必要项。 所以&#xff0c;很多程序员把Python当做第一语言来学习。 但对于Pytho…

驱动07.USB驱动程序

1 了解USB识别的过程 eg&#xff1a;在Windows系统下的一个现象&#xff1a;把手机的USB设备接到PC  1. 右下角弹出"发现android phone"  2. 跳出一个对话框&#xff0c;提示你安装驱动程序 问1. 既然还没有"驱动程序"&#xff0c;为何能知道是"a…

豪气!华为放话:3年培养100万AI人才!网友神回应了

大家经常把BAT挂在嘴边&#xff0c;但是可能有些人还不知道&#xff0c;华为的体量早已超越了这三巨头&#xff0c;只是迟迟不肯上市。华为的创始人任正非曾说表&#xff1a;上不上市不重要&#xff0c;最重要的是要让中国华为的技术能够称霸全球&#xff01;华为对技术的重视&…

InnoDB的启动,关闭,恢复

InnoDB存储引擎是MySQL的存储引擎之一&#xff0c;因此InnoDB存储引擎的启动和关闭更准确地是指在MySQL实例的启动过程中对InnoDB表存储引擎的处理过程。 参数innodb_fast_shutdown 在关闭时&#xff0c;参数innodb_fast_shutdown影响着表的存储引擎为InnoDB的行为。该参数可取…

微软推出提点神器动态ReLU,可能是最好的ReLU改进

作者 | Vincent 来源 | 晓飞的算法工程笔记 简介ReLU是深度学习中很重要的里程碑&#xff0c;简单但强大&#xff0c;能够极大地提升神经网络的性能。目前也有很多ReLU的改进版&#xff0c;比如Leaky ReLU和 PReLU&#xff0c;而这些改进版和原版的最终参数都是固定的。所以论…

监控 monit

官方说明文档 http://mmonit.com/monit/documentation/monit.html 实例 http://mmonit.com/wiki/Monit/ConfigurationExamples 下载最新软件包 wget http://mmonit.com/monit/dist/monit-5.4.tar.gz monit 介绍 monit是一个实用程序&#xff0c;用于在 Unix 系统上管理和监视…

框架窗口的尺寸设置

将窗口分割为几块&#xff0c;横向分用ROWS属性&#xff0c;纵向分用COLS属性&#xff0c;每一块的大小可以由这两个属性的值来实现。 <frameset cols#>  例&#xff1a;<frameset cols"100,200,300">   <frameset rows#>  例&#xff1a;<…

C语言双链表遍历,插入,删除

#include<stdio.h> #include<stdlib.h> #include <string.h> #define bzero(a, b) memset(a, 0, b)//windows平台下无bzero函数。 增加宏拓展移植性struct node{int data; //有效数据 struct node *pLast;//指向上一个节点的指针…

详解.NET的RAD功能

作者&#xff1a;中国计算机报Visual Studio.NET 拥有开发者建立一个成功而强大的中间层应用服务所需要的所有开发工具&#xff0c;利用这些工具&#xff0c;开发者可以&#xff1a; 1.保障消息传播和利用微软消息队列&#xff08;MSMQ&#xff09;跨平台的通讯&#xff1b; 2…

Java初学者如何自学和自己定位解决问题

注&#xff1a; OneCoder 即本人苦逼Coder 今天群里(Java Coder群&#xff1a;91513074)的朋友&#xff0c;问我该如何看帮助文档&#xff0c;或者说在遇到问题的时候如何解决。希望我能介绍一下我的方法。 这个OneCoder其实没有资格高谈阔论&#xff0c;只能说说个人的习惯和…

仅用 4 小时,吃透“百度太行”背后硬科技!

我们正处于一个 AI 生万物&#xff0c;万物生 AI 的时代&#xff0c;云与 AI 也如共同体&#xff0c;水乳相容不可分割。无论是企业还是政府机构、社会团体&#xff0c;上云已然成为一个不可抗的趋势&#xff0c;尤其是 AI 的发展&#xff0c;更是离不开强大、灵活、便捷的云计…

(转)java 中的try catch finally 语句中含有return语句的执行情况(总结版)

原处&#xff1a;http://blog.csdn.net/ns_code/article/details/17485221在这里看到了try catch finally块中含有return语句时程序执行的几种情况&#xff0c;但其实总结的并不全&#xff0c;而且分析的比较含糊。但有一点是可以肯定的&#xff0c;finally块中的内容会先于try…

希捷携全线企业级解决方案出席ODCC,Exos X18与Exos 2X14硬盘斩获两项大奖

2020年9月15日&#xff0c;数据存储与管理解决方案提供商希捷科技公司亮相2020开放数据中心&#xff08;ODCC&#xff09;峰会&#xff0c;并发表了以“数据新视界”为主题的演讲。希捷银河&#xff08;Exos&#xff09;18TB硬盘与希捷银河&#xff08;Exos&#xff09;2X14 MA…

动态装载和使用类型

作者&#xff1a;微软Reflection提供诸如Microsoft Visual Basic.NET和JScript语言编译器使用的底层结构来实施隐性后绑定。绑定是定位与某一特定类型相对应的声明的过程。当这个过程发生在运行的时候&#xff0c;而不是编译的时候&#xff0c;它被称为后绑定。Visual Basic.NE…

求1 + 2 + 3...+ n的和

题目&#xff1a;求1 2 3 ... n 的和 要求&#xff1a;不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C) 答&#xff1a; #include "stdafx.h" #include <iostream>using namespace std;//1、函数查找表法 typedef in…

Debussy的安装

下载完成后对软件安装包进行解压缩&#xff0c;得到安装文件和破解文件。 双击Debussy-54v9-NT.exe进行安装&#xff0c;出现以下界面&#xff0c;选择安装的路径。 选择安装类型&#xff0c;最好选择typical类型。 选择相关配置。 进行安装。 选择Yes继续&#xff0c;dont dis…

如何调试你的C#程序

作者&#xff1a;龙山文化 文章来源&#xff1a;ASPCool.com欢迎来到C#的奇妙天空&#xff0c;在这里&#xff0c;希望你能获得你想获得的东西&#xff0c;.我们真诚希望能给你带来巨大的帮助&#xff0c;带你进入另外一个广阔的空间。 Come on. Follow me and then U can W…

SSAS使用时间智能解决本年累计、同比、环比【转载】

通常&#xff0c;我们需要使用MDX来定义本年累计、同比、环比等一系列基于时间维度的计算指标。但是这样有一个麻烦的地方就是比如我有50个基础指标&#xff0c;每个指标都需要本年累计&#xff0c;那我就需要写50遍下面的语句&#xff1a;create member CURRENTCUBE.[MEASURES…

良心贴!没想到 Google 排名第一的编程语言,可以这么简单!

作为最近几年最火的编程语言&#xff0c;Python&#xff08;没有之一&#xff09;已经走过了20多个年头。也难怪&#xff0c;作为大数据时代和人工智能时代的必备语言&#xff0c;Python 的优点太多了&#xff0c;语言简洁、易学、开发效率高、可移植性强......不过它火起来的主…

报错 org.springframework.beans.factory.BeanCreationException

2019独角兽企业重金招聘Python工程师标准>>> 一.问题背景&#xff1a; spring mvc eclipse启动报错&#xff1a;org.springframework.beans.factory.BeanCreationException 二.分析 1.写了一个名为“User”的 实体bean&#xff0c;然后写了有参构造函数&#xff0c;…

醉没醉,带上智能手机走两步就知道

来源 | HyperAI超神经场景描述&#xff1a;斯坦福大学和匹兹堡大学的研究小组&#xff0c;最近发表了一项用智能手机检测醉酒状态的研究&#xff0c;可利用步态特征检测相应的血液和呼吸酒精浓度。以后喝没喝多&#xff0c;用你的手机测一测就知道。关键词&#xff1a;智能手机…