设计及模式(.NET).docVIP

  1. 1、本文档共70页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
重构既有代码 程序员与软件设计 当你开始学习这本书时,应该已经写过上万行代码了吧。 此时你已经配得上“程序员”这个称号,虽然需要在前面加上“初级”二字。再积累几万行代码,你就可以摘下“初级”的帽子,换上一顶新帽子:“平庸”或“高级”。 两者区别何在?平庸程序员是流水线上的加工员、是一个翻译者,将设计师勾勒的模型简单的转换为代码;高级程序员是思想者、创造者,在技术领域内追求更完美的实现,创造更有价值的代码。前者类似于工匠,后者类似于艺术家,成为前者还是后者,软件设计能力是一个重要的衡量指标。 图1 关于平庸程序员的漫画 一个很常见的误解是程序员并不需要了解设计,企业中有架构设计师会帮你完成一切。实际上在很多企业中专职的架构设计师只是一种传说,程序员必须自己决定该做什么以及怎么做,设计能力的缺失导致了大量冗余、低效、充满Bug且不易维护的代码,甚至一些工程失败的直接原因就是编码能力的低下。反之具备设计能力的程序员在编写代码时具有章法,不急于动手,先进行全盘的思考、制定方案,再配合优秀的开发模式,往往能在更短的时间内编写出更高质量的代码。有统计数据指出,一个高级程序员与一个平庸程序员的产出比可达10 : 1,显然企业更愿意使用高级程序员以节省成本。 具备软件设计能力是高级程序员与平庸程序员的分水岭,如何提升软件设计能力就是本书所关注的内容。本书从四种不同的角度介绍了软件设计,第1章介绍了“重构”这一利器,用于对已有的代码进行二次设计,第2章介绍了面向对象编程的重要原则,可以作为代码结构是否优秀的判断标准,第3、4、5章介绍了常用的设计模式,类似于中国功夫中的“招式”,使用设计模式可以解决大部分常见的问题。 在学习本书时应该注意到:软件设计的基本理论好学,但灵活应用却不容易,需要持续对基本理论进行思考、推敲。学习完本书并不是学习软件设计的结束、而只是开始,在后续其他课程的学习中,应该不断将本书所讲内容与新的知识进行比对、参照、应用,这样才能快速的提高软件设计能力。 重构 重构指在不改变代码功能的情况下,调整代码的架构,使代码具有更好的可读性、可扩展性等优点。 有三种典型的情况需要使用重构: 拿到了别人的代码,要在其基础上修改以添加功能,这时发现原来的代码结构混乱,功能不全,还有一些隐含的bug。 自己最初写代码时只注意实现软件的功能,未注意软件的结构,发生再添加新功能时代码无法扩展。 需要将代码包装为公用代码供大家使用,需要设计更好的软件结构和接口。 可见重构更类似于一种补救的方式,很多程序员在拿到一个需求后总是热心于快速实现功能,而忽略了代码的结构,为以后的维护、升级增加了困难。在软件功能实现后回过头来进行重构,则可以持续保持软件结构的合理性。 在重构领域,最具影响力的著作当数Martin Fowler所写的《重构——改善既有代码的设计》一书。《重构》一书中通过对一段具有代表性的代码不断进行重构展示了重构技术的特点和魅力,下面以一个简单的例子了解重构的基本要素,然后通过《重构》一书深入了解重构的各种技术手段。 图2 Martin Fowler与其著作 开始重构 下面展示了一个简单的个人所得税收据打印的例子。Tax类代表申报人信息,包括了申报人姓名,月收入两个属性,Report类为收据打印类,提供Print打印方法,代码如下: 代码演示:重构前——Tax类 using System; namespace Com.QhIt.Before { public class Tax { private string name; public string Name { get { return name; } set { name = value; } } private double saraly; public double Saraly { get { return saraly; } set { saraly = value; } } public Tax() { } public Tax(string name, double saraly):base() { this.name = name; this.saraly = saraly; } } }

您可能关注的文档

文档评论(0)

0520 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档