欢迎进入HappyQQ的Blog

成功者找方法,失败者找借口。
随笔 - 181, 文章 - 49, 评论 - 170, 引用 - 4
数据加载中……

WinForm 编程细节

作者:黄启清(www.cnblogs.com/happyqq)

日期:2008-4-19

这是我在Cnblogs里面的第一篇原创文章,以前在百度贴吧里面写的都是网络安全方面的文章。

希望Cnblogs里面的朋友给我多点支持与批评,我会继续努力。

我记得好像有一本书叫做《细节决定成败》,不知道是我记忆的问题,还是真有那么本书。其实在我们的日常开发当中,我们也得注意一些编程细节上的问题,其实一个成功的软件产品都是从细节中产生的,肯定很多朋友会骂我!现在,我将分别从界面设计以及代码编写这两个方面着手进行说明WinForm编程的细节,这篇文章只起到一个抛砖引玉的作用,并不详细对每一个步骤进行详细说明,如果要进行详细说明,也不是一两句话能够说得明白的,可能是用一本书或者是一章节来说明,在这篇文章的描述当中,如有说得不对的地方,还望前辈们多多指点!

界面设计细节:

1、界面应统一风格,包括对各模块界面及控件的属性,

比如:物料主档管理模块的界面颜色是白底黑色,而你库存管理模块却是绿底红字,这样就让用户的体验非常不好,我们应该遵守界面的统一风格,在界面的设计方面,可以参考一些专业的书籍。

2、控件的内容长度大小应等于对应数据字段的大小,以避免溢出的情况出现,当然对数据长度以及合法性的验证部分,我将在代码注意细节部分讲到。

比如:表ItemMaster表字段ItemName的长度是255,而你模块中输入Item Name的文本框的长度却不受限制,而你又没在代码中对数据输入的长度进行合法性验证,直接将值Insert into 或者 Update表ItemMaster对应的字段ItemName时,则会产生错误。

3、控件的布局应该以内容的重点为布局,遵守人的视眼扫描重点的方向,以从上至下,从左至右的方式对控件进行布局。

比如员工档案输入界面,则文本框输入控件对应的位置将是:

员工编号、

员工姓名、员工性别

员工出生日期、员工地址

而不应该是

员工地址

员工出生日期

员工性别,员工编号

员工姓名

4、控件的Tab Order在界面设计当中也要注意。

5、为老用户提供快捷键。
    比如点击“退出”的按钮,我们可以在按钮的Text属性前加(&X)以方面老用户直接按CTRL + X 退出

6、提供帮助支持
    当用户点击相应的模块中的帮助按钮时,我们直接导向对应的帮助文档。比如“供应商管理模块”,当我们点击右上角的“?”按钮时,将直接导向“供应商管理模块”的帮助文档。

7、以用户为中心的界面设计
    引用网友(yellowyu)对这文章中回复中的一句话:
     用户习惯(这个特别重要,我觉得爽不行,嘿嘿!大家好才是真的好)

代码编写细节:

1、变量命名规则统一,可以参考凶牙利命名规则,或者是Pascal命名规则。

2、模块代码之间的布局应该将遵守人的逻辑思维的方法,以增强代码的可读性以及可维护性。

比如:当我们打开一个窗体的代码,折叠所有的代码时,让一个陌生人来看我们的代码如下所示:

以VB.net伪代码为例

(第一种代码布局的逻辑)

frm_load()

ClearForm()

ClearFields()

Check_Data()

Update_Data()

Delete_Data()

cmd_AddNew()

cmd_UpdateNew()

cmd_Delete()

cmd_Exit()

(第二种代码布局的逻辑)

cmd_Exit()

Check_Data()

ClearFields()

frm_load()

cmd_AddNew()

Delete_Data()

……

你们认为哪种代码的布局让你看起来舒服一些了,我想大部分朋友都会说是第一种吧!

所以说,代码的可读性除了变量的命名规范化外,其实代码段(模块代码段)之间的布局顺序也影响到代码的可读性

3、对存在有数据输入的每一个点都要用代码来进行验证,不能够让数据溢出产生,同时更加不允许非法的数据进入我们的系统!(B/S架构的程序尤其要考虑这些问题,因为一个SQL注入漏洞京可以让你哭笑不得,当然C/S架构的程序也存在这种威胁,大家可以参考我百度贴吧的另一篇文章:http://tieba.baidu.com/f?kz=137808190

比如在采购管理系统中,单据明细录入有“采购单价,采购数量”,我们对其进行数据验证时,要考虑以下几个问题:

1、全部必须为数字。

2、采购数量以及单价必须大于零。

3、根据其采购的物品类别,来决定采购数量是否必须为整数,比如我采购一台电脑,你不可能输入0.5这样的数字吧?

4、不允许用户在这恶意输入超出数据范围的数字。

4、在保存数据时,应考虑网络并发操作的情况出现。

5、代码的安全编程方面可以把我们的每一个用户当成一位非常狠的黑客,如何保证你数据的保密性、完整性等,就要靠你这位反黑客的人去考虑了。

6、模块代码中都需要加try catch 来进行异常检测并作相应的处理,以避免系统出现错误退出情况。



 

说明:待补充部分将根据网友们的建议添加。

成功者找方法,失败者找借口!

posted on 2008-04-19 13:32 HappyQQ 阅读(3370) 评论(29)  编辑 收藏 网摘 所属分类: 编程技术

评论

#1楼[楼主]   回复  引用  查看    

第一次在这发原创的文章,希望cnblogs的朋友多点建议,多点批评,谢谢啦
2008-04-19 13:54 | HappyQQ      

#2楼   回复  引用  查看    

都是实战得出的结论 很有意义
总结的不错
2008-04-19 13:59 | Yannic Yang      

#3楼   回复  引用  查看    

没看内容,只看了名字:跟我弟很像,我弟是:黄启生
2008-04-19 14:08 | 阿不      

#4楼   回复  引用  查看    

支持楼主,做程序要从点滴做起.
2008-04-19 14:21 | 侯垒      

#5楼   回复  引用  查看    

我在写界面程序时用采用下面方式命名控件感觉很方便
1.以下划线开头(在代码视图中输入“_”IDE就会列出所有控件的名称)
2.控件名称中加上控件类型缩写。

比如命名一个TextBox 为_tbxName
2008-04-19 14:51 | 最懒的程序员      

#6楼   回复  引用  查看    

lz说的都是一些开发规范问题,比如界面风格一致性、变量命名、校验规则等等,这些问题都很重要也很基础,一个软件公司应该有这方面的专门规范的,然后所有项目组都要去遵守呀。
2008-04-19 14:56 | Justin      

#7楼[楼主]   回复  引用  查看    

非常感谢大家对这篇文章的关注
文章只是我工作中的一点小总结
没有写的很细,也可能写得不是很全面,只是把我想到的写上去而已!
是的,每一个公司都有相对应的技术文档来说明变量、控件名、数据库设计的规范!


2008-04-19 15:10 | HappyQQ      

#8楼   回复  引用  查看    

支持搂主
2008-04-19 15:55 | 生鱼片      

#9楼   回复  引用  查看    

嘿嘿....Happy兄上首页了,支持下......
2008-04-19 16:45 | scotoma      

#10楼[楼主]   回复  引用  查看    

一听叫我Happy的,肯定是哪位群里面的兄弟
谢谢群里面朋友的支持
2008-04-19 17:21 | HappyQQ      

#11楼   回复  引用    

那个歌曲真讨厌。
2008-04-19 18:23 | wwwwwwwwwwww[未注册用户]

#12楼   回复  引用    

赞一下,百度贴吧还是不如博客园啊~~看到了我的程序的影子呵呵~
2008-04-19 19:25 | EdisonGG[未注册用户]

#13楼   回复  引用  查看    

界面上的规范不知怎么说好吧!实在是细节决定成败

特别是WINFORM的,控件那么多,很多细节,也只有在做了之后才知道

而我也觉得,在做界面这一块经验是非常重要的

我从一开始即做UI部分,基本公司的UI部分程序都是我写的,从一个刚入门就写,到现在熟了一点点,我觉得,什么程度的程序员都能做UI,做做个真正好的UI程序员却不是一朝一夕的事,

个人觉得,大体可从这几方面
代码规范(UI部分代码并不是很系统,事件一大堆)
控件属性熟练度(比如我去年一开始并不知datagridview默认Delete可以按,测试时才接到这么一个BUG)
用户习惯(这个特别重要,我觉得爽不行,嘿嘿!大家好才是真的好)
2008-04-19 21:56 | yellowyu      

#14楼[楼主]   回复  引用  查看    

第一次写文章能够得到这么多朋友的支持与建议

我非常高兴

同时,我也对文章作了部分补充!

yellowyu 网友提供的建议,我已经将其添加进文章"界面设计细节"的第七点,不知是否可以这样的概括?
2008-04-19 22:39 | HappyQQ      

#15楼   回复  引用  查看    

处女作啊
。。。
2008-04-19 22:51 | overred      

#16楼   回复  引用  查看    

注意细节是应该的,不仅为自己提更方便,也为用户提供便捷。
2008-04-20 09:39 | 镜涛      

#17楼   回复  引用  查看    

http://www.cnblogs.com/Emoticons/yoyocici/223852199.gif" alt="" />路过,支持。
请别强迫我听歌。
2008-04-20 09:50 | 李战      

#18楼[楼主]   回复  引用  查看    

谢谢支持,我会继续努力的!!


2008-04-20 11:32 | HappyQQ      

#19楼   回复  引用    

--引用--------------------------------------------------
李战: <img src="http://www.cnblogs.com/Emoticons/yoyocici/223852199.gif" alt="" />路过,支持。<br />
请别强迫我听歌。<br />

--------------------------------------------------------
2008-04-20 11:43 | 路过[未注册用户]

#20楼[楼主]   回复  引用  查看    

这首歌是由我的Flash自动播放的(在公告栏目里面)


我修改我的cnblog公告后,然后点击“SAVE”


却发现公告还是没改掉,不晓得是什么问题


不知你们有没有这种情况?
2008-04-20 12:03 | HappyQQ      

#21楼   回复  引用  查看    

介绍你一个以用户为中心的博客
http://uicom.net/blog/

里面有蛮多见解,嘿嘿,那首歌真的是在强迫我们听的呀!

一起讨论,一起进步
2008-04-20 15:07 | yellowyu      

#22楼   回复  引用    

音乐还是不要自动播放比较好 呵呵

#23楼[楼主]   回复  引用  查看    

呵呵,我现在想改公告都改不了

我已经将这个问题反应给dudu他们了


等待他们帮我解决


以后我一定不会在我的页面公告中加载我的自动播放的Flash


当初在加公告时没有考虑"以用户为中心",而是以个人为中心,哈哈,大错!!!


谢谢yellowyu提供的资料

2008-04-20 15:39 | HappyQQ      

#24楼   回复  引用  查看    

学习,转之!哈哈,支持。
2008-04-20 15:51 | Gavin.W.Lai(赖文华)      

#25楼   回复  引用  查看    

细节决定成败
2008-04-21 13:38 | 补丁      

#26楼[楼主]   回复  引用  查看    

谢谢楼上朋友提供我正确的书名!
2008-04-21 17:43 | HappyQQ      

#27楼   回复  引用    

谢谢,细节决定成败!
2008-04-25 12:15 | erway[未注册用户]

#28楼   回复  引用  查看    

不错
2008-05-11 08:33 | 求知无傲      

#29楼   回复  引用  查看    

请问楼主


frm_load()

ClearForm()

ClearFields()

Check_Data()

Update_Data()

Delete_Data()

cmd_AddNew()

cmd_UpdateNew()

cmd_Delete()

cmd_Exit()


在代码中这样排列方法是很好
要是一个窗体中,方法很多,手动一个个去排,可能很麻烦,你是否有什么简单的处理方法

2008-08-20 08:38 | aierong      



发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 1161093




相关文章:

相关链接: