tmxfh@163.com 发表于 2014-4-16 11:04:25

多次重构代码的惨痛经历,业余程序爱好者请进交流

    一直以来,我试图找到一种通用的、可扩展的操作办法来组织我的程序。至少到目前,我还没有成功。     首先说一下我的软件组织历程:    最开始,我采用DevExpress作为软件的皮肤,XPO访问数据库来处理一个小型的办公程序。不出意外,程序能较好的运行。但是,烦恼却来了:单位领导看到这个程序不错,说可以推广一下。可是我使用是盗版的控件,说出去没有底气,不能说是完全自主知识产权,另外,当数据流大了后,我没有做分页处理,没敢答应,只能说做下贡献,不敢推广。     于是,我开始了又一次的重构。这次,我采用了CSLA.net作为我的数据访问引擎,并设计了一种通用的操作方法:C#的泛型。我花了大约两个月的时间,并使其健壮起来。每一个类(相对于数据库中的一个表),可以直接通过泛型方法来进行增、删、改、查,并结合了CSLA.net优秀的权限管理机能,框架能很好的运行!我太高兴了,准备进行下一步的开发。烦恼又来了:当一个表单需要跨几张表时,我的框架却无能无力!比如我有个项目信息,项目下面有很多的人员,我想在一个类中处理时,框架却不能工作了,他仅对单个数据库表起作用。     这个打击对我来说非常大,两个月的努力白费了。看来,程序是不可避免的又要重构了。出错的原因是因为要跨几张表的类,较好的处理方法只能通过手工处理SQL来完成。C#的泛型处理增、删、改、查的方式显然不适用于较大型的程序。为了验证这个想法,我下载了大型游戏的服务端源代码进行分析,发现别人都是用SQL拼接的,速度快,且灵活。     下次,我准备重构时,经过深入思考,我决定还是采用WCF+ CSLA.net配合SQL语句来进行开发,界面采用微软提供的原始控件,这样在版权方面就不会有问题了。这里任然有潜在的问题:CSLA的交互能力很差。    很不甘心。因为我花了大量时间来熟悉DevExpress的TreeList控件,而且又很难找到一个好的类似控件。没有办法,只能再硬着头皮再去学习了。     经验教训:作为一名业余开发人员,应多注重知识的积累,不要把过多的精力放在第三方控件的收集与学习中,因为这种经验是无法扩展和通用的,另外还要多学习一下设计模式,组织良好的程序框架。

hyqok 发表于 2014-5-8 09:51:41

谢谢分享,请问你编译过DXPER吗

ads1223 发表于 2014-5-11 18:31:34

发个帖在真难

闲云野鹤 发表于 2014-6-20 20:02:20

好经验啊,学习

edward_128 发表于 2014-8-3 21:57:02

if you want to design the DAL, see more MetaData
or you can try other ORM tools

cvccvccv 发表于 2014-9-17 17:06:38

发个帖在真难

ahat 发表于 2014-11-16 20:19:56

自学总是要有点过程的

newbobo 发表于 2014-12-8 12:38:59

说的有些道理~~~ 但要推广商业项目,花点钱买个正版的也应该的,也算是支持下原创~~

userlm 发表于 2015-1-16 14:19:53

哈哈框架大都给懒人用的,把简单的东西复杂话,复杂的东西就傻眼了

windylongyi 发表于 2015-7-23 17:52:56

不错不错,赞一个

a179073421 发表于 2015-7-25 12:58:41

业余的惨痛经历……很久不写感觉啥也不会了……

elunlang2000 发表于 2016-4-29 09:49:37

谢谢分享
页: [1]
查看完整版本: 多次重构代码的惨痛经历,业余程序爱好者请进交流