这次应该说是经验总结,以下是我在工作中的几点经验总结,都是个人意见,望大家一起讨论, 多多交流,批评,指正。

1. 注意“重构”的影响程度。对于公用代码(模块)的修改尤其要慎重,到了项目开发的后期,如果不是非改不可的修改,还是不要改为好。
  例如一个典型的数据库应用程序,如果要重命名一个字段名,则下面的项都会受到牵连:
SQL Script;
Hibernate 映射文件(*.hbm.xml);
实体类;
DAO层;
表现层;

2. 关于时间。
声明一个DateTime实例,应该设置其默认值,如果不设,其值将是0001年1月1日,这样插入数据库将会出现问题。
在后台(代码,数据库)里的时间值,应该采用UTC时间(格林威治标准时间),对于CS/BS结构的应用,如果会有不同时区的用户去使用的话,不采用UTC时间将会导致时间不一致,不可比较的问题。当然在表现层还是要转换成当地时间来向用户显示的。

3. (C#)应该写internal 的地方就不要写public,例如同一个solution下会有多人开发多个模块(project),会有多个命名空间,如果你自己的子模块有一个Util类,只有你自己的模块用到,但是把它写成public了,这样很可能别人也写了一个这样的类,这样就会产生名字冲突(当然可以通过在类名前加命名空间前缀来解决,但是这样长的一串,还是不大好!)

4. 尽量为代码多打Log, 因为当你的产品拿出去用户用的时候,如果出现了问题,是不可能用开发阶段的一步一步Debug去找问题所在的。

5. 对于Web Application, 如果有IIS, 还是尽量用IIS来作平常调试,而不是用Vs.net 2005 自带的Web Server,因为他们还是有不少地方不一样的。并且产品Release之前, 要多在不同的操作系统,浏览器(即使是版本不同)测试,例如同一个网页可能在IE6与IE7完全两个样了。还有,建议使用预编译来部署,因为这样做一方面可能提高性能,一方面的把源代码隐藏。

6. 对于WCF 的Contract定义,建议化多个参数为一个参数,例如有一个OperationContract是
Login(string userName, string password), 应该先定义一个类:ParamOfLogin, 里面就两个属性:UserName, Password。 Login就定义成Login(ParamOfLogin loginParams); 这样做可以减少代码耦合性,如果哪一天需要往Login里面再加一个参数,就可以只加一个属性而用不着动Contract/接口了。

7. 写代码要写易于测试(至少是可测试)的代码。如果一段代码是无法用UT或者FT去测的话,其正确性将无法用自动化工具来保证。

8. 开发的每一个阶段都不能脱离需求(SR)。
9. 对于你给别人定的Schedule, 应该多设Checkpoint, 常问问他完全地怎么样了。

posted on 2007-12-06 23:55 Stanley.Luo 阅读(1666) 评论(7)  编辑 收藏 所属分类: 设计模式

  回复  引用  查看    
2007-12-07 01:28 | Jeffrey Zhao      
虽然好像比较简单,但是感觉还是很不错的啊。
  回复  引用  查看    
2007-12-07 08:48 | llj098 [未注册用户]
--引用--------------------------------------------------
Jeffrey Zhao: 虽然好像比较简单,但是感觉还是很不错的啊。
--------------------------------------------------------
同意
  回复  引用  查看    
2007-12-07 19:24 | Enzo      
@Jeffrey Zhao
同意 o(∩_∩)o...

  回复  引用  查看    
2007-12-07 22:44 | Stanley.Luo      
呵呵,确实比较简单。对于第6点,不知大家有没有不同意见,我也不确定这样设计好不好?
  回复  引用  查看    
2007-12-08 10:11 | 伍迷      
2. 关于时间。
声明一个DateTime实例,应该设置其默认值,如果不设,其值将是0001年1月1日,这样插入数据库将会出现问题。

有一点问题,设置默认值对于大多数是比较好的,但是如果对于没有发生的时间,比如一张订购单表里有三个字段,分别是订购时间,付款时间和到货时间。当你新增一个订购单时,只有订购时间,另两个时间没有发生。如果你都设置当前时间的默认值,此时表现出来的结果仿佛就是付款时间和到货时间都是和订购时间相同了。而实际上这两个事件都还没有发生。
  回复  引用  查看    
2007-12-11 13:59 | yangyi336 [未注册用户]
还可以
  回复  引用  查看    
2007-12-16 20:59 | Stanley.Luo      
@伍迷
嗯,说得有道理。
其实现在觉得, 应该用.Net 2.0的可空类型(如:DateTime? dateTime)来声明比较好.

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
 
另存  打印
最新IT新闻:
· 微软高管:Wii用户最终会成为Xbox 360用户
· 遵守YouTube案裁定 谷歌将陷入隐私指控深渊
· iPhone入华在即 中国手机产业生存面临考验
· 阿里巴巴集团再向淘宝注资20亿元
· 56被关一月 危机的是整个视频业
 


<2007年12月>
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345

与我联系

常用链接

留言簿(1)

我参与的团队

我的标签

随笔分类

随笔档案

相册

搜索

  •  

最新评论

阅读排行榜

评论排行榜