`

对设计模式、重构的一点点小理解【完善版】

阅读更多

  一、先说点偏题的,学习与动手实践的区别

 

 

二、我的理解

工作2 年多来,看了一些设计模式、重构的书籍、资料。

现在自己突然觉得:

设计模式和重构其实讲的是同一个东西,他们的思想和原则其实是一样或者说是相近的,只是从不同角度和方向而已。

 

设计模式、重构是从不同的出发点,用了一些相近的思想和原则来指导我们如何写出更合适的代码。

1 、设计模式更多的是从设计的角度出发,来指导的。是从上到下

        过程 是【问题-- 分析、设计(key-- 最优答案】

2 、重构更多的是从代码角度,从优化角度,来指导的。是从下到上

       过程 是【问题-- 一般答案-- 优化(key-- 最优答案】

设计模式强调 分析、设计,强调思考、思想

重构强调 先动手,有错就改

 

如果是解决同一个问题,

A 、不管你是用设计模式,从设计角度出发,一开始用设计模式中得原则和思想来分析,然后完成代码。

B 、还是你是先写代码,完成功能,然后用重构中得原则、思想、方法来对代码重构,然后得到这种代码。

如果都得到最优结果,不管你是用A 方式,还是用B 方式,我觉得代码结构是非常相近的。

所以我认为设计模式和重构其实是同一个东西。

 

三、我的心得体会

工作中:【尽量少用设计模式,一定要多重构】

原因不好说,我也说不清楚。

  我主要认为的是,设计模式会让开发进度漫长,很容易过度设计,可能会让代码变的复杂,易读性降低。

  另外,

  重构后的代码就会慢慢趋向模式,因为这两种手段的最终最优结果是一样的

 

我的这些心得体会,一切一切的原因都是

1、   无论是谁,对业务【现实世界】、系统【代码】的理解,都是逐步深入的,你不可能一下子就会对业务、和未来的系统有很深入的理解;

2、   现实与系统是有差距的,不同的,即现实世界的问题、逻辑与代码中逻辑、问题是有差距的,不同的;

3、   有一些代码中得东西、问题,并不是从现实世界中分析、抽象出来;

 

设计模式中有很多原则:单一职责、关闭、依赖倒置、迪米特等等,

重构中也有很多手段和方法,

但我觉得设计模式和重构的思想中,最重要的分两个类别(这两个类别有交差):

 

 

抽象 职责 耦合度 变化的和不变的

   1 、抽象:类、函数的真正作用或者说其思想,不是封装,而是抽象。必须学会抽象,抽象出相同的部分,封装其变化的 部分;

   2 、职责:这个太重要了,一定要认真分析每个类、每个模块、每个组件的职责,是设计模式和重构最关键的部分。在分析职责的时候,不仅仅只分析自身的职责,还要分析跟外部的联系,这也是其职责的一部分。

   3 、耦合度:耦合度包括两部分-- 现实世界中耦合的抽象,降低代码维护成本、复杂度的需要使用的武器。

 

理想中得过程:

1 、接近完美的设计------2 、接近完美的代码

 

现实中较好的过程:

1 、一个不错的抽象框架与设计-----2 、一个不错的代码架构-----3 、逐步重构代码-----4 、完善设计----5 、接近完美的代码

 

真正工作中的过程:

1、 脑子里有的大部分是功能方面的逻辑和思路,只有非常少得抽象------

2、 用面向对象的语言,开发面向过程的。【这一步有很大的作用,能很快很容易加深对业务和代码的理解】-------

3、 情况A 觉得整体代码、结构很烂、很臭、不舒服、不清晰等等,

原因:很可能设计上有问题,设计的不够好,

解决办法:这时候,需要用加深后的理解,重新设计或者完善设计。

情况B 自己觉得代码局部范围有问题,耦合度强,职责不清晰,很难复用等,

原因:很可能是代码结构不好,没抽象好,没职责分配的不好,

解决办法:进行代码重构

 

 

在实际工作中,

为了进度,为了敏捷,

还有就是软件的本质:需求不确定,变化性,还有人的思维的局限性:很难面面俱到,

所以大部分,工作中是【设计模式+ 代码的重构】的增量迭代。

即,一开始简单出发,从确定的功能 + 能预期到的变化,进行简单设计, 然后完成功能,完成代码,融合再重构,改设计。。。

  • 大小: 8.8 KB
  • 大小: 8.3 KB
分享到:
评论

相关推荐

    设计模式重构代码

    学习型设计模式重构代码

    软件设计模式与重构大作业-心算大师游戏

    西南科技大学软件设计模式与重构大作业-心算大师游戏(高分作业)

    重构与设计模式

    内部培训资料 重构与设计模式

    设计模式与重构

    详细介绍了设计模式和重构,并附带源码,请需要的同学下载查看。

    重构设计与代码设计模式

    这是一个很好的重构模式,设计方案,这是一个很好的重构模式,设计方案,这是一个很好的重构模式,设计方案,这是一个很好的重构模式,设计方案,这是一个很好的重构模式,设计方案,这是一个很好的重构模式,设计...

    设计模式与代码重构合集

    深入浅出设计模式(中文版).pdf 深入浅出设计模式.pdf 漫谈设计模式.pdf 编程珠玑(第二版).pdf 设计模式与java实践.pdf 设计模式精解.pdf 设计模式精解-GoF 23种设计模式解析附C++实现源码 .pdf 软件架构设计的思想...

    使用设计模式重构代码.pdf

    使用设计模式重构代码.pdf

    设计模式与重构(design pattern )

    设计模式作为程序设计的经典之作,确实值得程序员们细细品味

    设计模式 模版方法模式 设计思想 演过过程 重构过程

    设计模式 模版方法模式 设计思想 演过过程 重构过程

    页面重构中的设计模式

    页面重构中的设计模式,css开发真心不容易啊,写好css更不容易啊,希望有人喜欢吧,上传了再说。

    面向对象重构与模式设计

    面向对象重构与模式设计 软件模式的伟大之处,就在于它们传达了许多有用的设计思想。所以,在学习了大量模式之后,就理应成为非常优秀的软件设计人员,不是吗?当学习、使用了几十个模式后,我也曾这样认为。模式...

    设计模式 原型模式 设计思想 演过过程 重构过程

    设计模式 原型模式 设计思想 演过过程 重构过程

    重构与模式.pdf

    《重构与模式》不仅展示了一种应用模式和重构的创新方法,而且有助于读者透过实战深入理解重构和模式。书中讲述了27种重构方式。 《重构与模式》适于面向对象软件开发人员阅读,也可作为高等学校计算机专业、软件...

    重构与模式2.pdf

    书中包含了27种模式导向重构,每种重构通过一系列较小的重构,安全地在设计中实现、趋向和去除模式。实例均出自真实项目的代码。通过本书,读者不仅能够更好地学习和理解模式和重构,了解两个领域的新进展和业界最新...

    设计模式与重构经典(C#)

    设计模式与重构经典,其中包括了本人平时收集的一些关于C#的设计模式和重构的资料,以及一个PDF格式的《戏说面向对象编程》,真的很经典~~~~~

    重构与模式 清晰.pdf

    书中包含了27种模式导向重构,每种重构通过一系列较小的重构,安全地在设计中实现、趋向和去除模式。实例均出自真实项目的代码。通过本书,读者不仅能够更好地学习和理解模式和重构,了解两个领域的新进展和业界最新...

    Martin Fowler《重构——改善既有代码设计》(中文版)

    软件工程领域的超级经典巨著,与另一巨著《设计模式》并称"软工双雄"。在本书中,作者Martin Fowler充分展示了何处可能需要重构,以及如何将不好的设计改造为良好的设计。

    程序员圣经(设计模式,代码重构)

    设计模式,代码重构设计模式,代码重构设计模式,代码重构设计模式,代码重构设计模式,代码重构

    设计模式大作业(含源代码+PPT+报告)

    本科阶段写过一个小游戏,是一门课的大作业,当时能力有限,代码能力以及对设计模式的理解和运用都不够,后来研究生期间,由于《软件结构设计与模式分析》这门课的期末考试需要我们编写并分析一个软件,软件类型不限...

    设计模式_重构改善既有代码的设计

    高质量编程最好的教材之二: 重构-改善既有代码的设计 设计模式

Global site tag (gtag.js) - Google Analytics