追求梦想,程序人生。

2011年5月30日

创建方面的重构-用Creation Method替换构造函数

摘要: 所谓Creation Method,就是类中的一个静态或非静态的负责实例化类的方法。Creation Method没有命名限制,可以取一些可以明确表达对象性质的名字。Creation Method的缺点是可能会引入非标准的创建方式,有的类可能通过new实例化对象,有的类通过Creation Method实例化对象,程序员需要了解每个类是如何创建的。可以将构造函数声明为不公开的(如果不会增加复杂度),来保证客户代码使用统一的创建的方式。【优缺点】比构造函数更能表达所创建实例的种类;避免了构造函数的局限,如两个构造函数的参数数目和类型不能相同;更容易发现无用的创建代码;创建方式是非标准的,有些类通 阅读全文

posted @ 2011-05-30 15:29 伊默宁 阅读(204) 评论(0) 推荐(0)

2011年5月23日

创建方面的重构

摘要: 如果类中有太多的构造函数,客户代码要弄清该调用哪个构造函数会非常困难。可以应用【提炼类】或【提炼子类】重构,减少构造函数的数量。 如果以上方案作用不大,可通过应用【Creation Method替换构造函数】重构来澄清构造函数的意图。 如果类层次中多个类都类似的实现了一个方法,只是创建步骤不同,可能需要首先应用【Factory Method引入多态创建】重构来删除重复代码。 如果创建过程中的数据和方法在很多类中都存在,就会发现经常要在很多地方更新代码,这就是解决方案蔓延的明确标志。应用【将知识创建搬移到Factory】重构,可以将代码和数据合并为一个Factory类来减少代码的蔓延。 【用F. 阅读全文

posted @ 2011-05-23 12:56 伊默宁 阅读(112) 评论(0) 推荐(0)
《重构与模式》代码坏味与重构的方法

摘要: 代码坏味重构重复代码(Duplicated Code)形成Template Method用Factory Method引入多态创建链构造函数用Composite解决一/多之分提取Composite通过Adapter统一接口引入Null Object方法过长(Long Method)组合方法将聚集操作搬移到Collecting Parameter用Command替换条件调度程序将聚集操作搬移到Visitor用Strategy替换条件逻辑条件逻辑太复杂(Conditional Complexity)用Strategy替换条件逻辑将装饰功能搬移到Decorator用State替换状态改变条件语句引入 阅读全文

posted @ 2011-05-23 12:49 伊默宁 阅读(267) 评论(0) 推荐(0)

2011年5月21日

程序出错后,程序员与测试人员的对白

摘要: 国外程序员 Katelynn Eaton 在其博文总结分享了程序员和测试人员之间的高频对话。 20. "That’s weird…" 很奇怪……19. "It’s never done that before." 以前没这样过的。18. "It worked yesterday." 昨天还好好的。17. "How is that possible?" 那怎么可能?(怎么会出问题?)16. "It must be a hardware problem." 这一定是硬件问题。15. "Wh 阅读全文

posted @ 2011-05-21 14:32 伊默宁 阅读(159) 评论(0) 推荐(0)
Kent Beck “红,绿,重构”

摘要: “红” 创建一个测试,表示代码所要完成的任务,在代码通过测试前,测试(工具)显示红色;“绿” 编写一些权宜代码,以通过测试;“重构” 对已通过测试的代码改进设计。 阅读全文

posted @ 2011-05-21 14:30 伊默宁 阅读(230) 评论(0) 推荐(0)
复合重构和测试驱动重构

摘要: 复合重构指[X1]多个低层次重构组成的高层次重构。低层次重构都涉及代码搬移,如【提炼方法】,需要将代码移动到另一个新方法中;【上移方法】,需要将方法从子类移动到超类;【提炼类】,将代码搬移到新类中;【搬移方法】,将方法从一个类搬移到另一个类中。 测试驱动重构,“重新实现和替换”,测试驱动重构的例子:替换算法、用Builder 封装Composite。[X1]测试是复合重构的一个重要方面! 阅读全文

posted @ 2011-05-21 14:29 伊默宁 阅读(175) 评论(0) 推荐(0)

2010年8月3日

【转】华表

摘要: 1 基础: (1) 在页面上引入华表对象: 代码 <OBJECTid=CellWeb1height=220width=700classid=clsid:3F166327-8030-4881-8BD2-EA25350E574AVIEWASTEXT> <PARAMNAME="_Version"VALUE="65536"> <PARAMNAME="_ExtentX"VALU... 阅读全文

posted @ 2010-08-03 16:20 伊默宁 阅读(719) 评论(0) 推荐(0)

2010年5月20日

CRM PickList 批量编辑(unsupported)

摘要: /Files/emorning/MSCRM/AttributesPicklistEditAll.rar 阅读全文

posted @ 2010-05-20 13:51 伊默宁 阅读(211) 评论(0) 推荐(1)

2010年5月18日

【转】CRM 4.0 用户 (users)和Active Directory的集成绑定

摘要: FAQ1: 我们使用了Active Directory的ADMT工具做了跨域用户的迁移,从此以后那些被迁移过的用户无法登录到CRM系统中,什么原因呢?解答: 这个 要从CRM 4.0中和AD的绑定说起。正常情况下登录的时候,用户会被IIS那里验证,传出一个WIndows AuthInfo信息,CRM平台拿到这个信息后会比对SystemUserAuthentication这个库表,对应找到UserI... 阅读全文

posted @ 2010-05-18 08:37 伊默宁 阅读(401) 评论(0) 推荐(0)

2010年5月14日

MissingParameterException: The 'CRM_CalendarType' parameter is missing a value

摘要: The error message he was getting is as follow:[MissingParameterException: The 'CRM_CalendarType' parameter is missing a value] at Microsoft.Reporting.WebForms.ParametersArea.ValidateAllReportInputsSat... 阅读全文

posted @ 2010-05-14 16:37 伊默宁 阅读(468) 评论(0) 推荐(1)