一、先说点偏题的,学习与动手实践的区别
二、我的理解
工作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
设计模式作为程序设计的经典之作,确实值得程序员们细细品味
设计模式 模版方法模式 设计思想 演过过程 重构过程
页面重构中的设计模式,css开发真心不容易啊,写好css更不容易啊,希望有人喜欢吧,上传了再说。
面向对象重构与模式设计 软件模式的伟大之处,就在于它们传达了许多有用的设计思想。所以,在学习了大量模式之后,就理应成为非常优秀的软件设计人员,不是吗?当学习、使用了几十个模式后,我也曾这样认为。模式...
设计模式 原型模式 设计思想 演过过程 重构过程
《重构与模式》不仅展示了一种应用模式和重构的创新方法,而且有助于读者透过实战深入理解重构和模式。书中讲述了27种重构方式。 《重构与模式》适于面向对象软件开发人员阅读,也可作为高等学校计算机专业、软件...
书中包含了27种模式导向重构,每种重构通过一系列较小的重构,安全地在设计中实现、趋向和去除模式。实例均出自真实项目的代码。通过本书,读者不仅能够更好地学习和理解模式和重构,了解两个领域的新进展和业界最新...
设计模式与重构经典,其中包括了本人平时收集的一些关于C#的设计模式和重构的资料,以及一个PDF格式的《戏说面向对象编程》,真的很经典~~~~~
书中包含了27种模式导向重构,每种重构通过一系列较小的重构,安全地在设计中实现、趋向和去除模式。实例均出自真实项目的代码。通过本书,读者不仅能够更好地学习和理解模式和重构,了解两个领域的新进展和业界最新...
软件工程领域的超级经典巨著,与另一巨著《设计模式》并称"软工双雄"。在本书中,作者Martin Fowler充分展示了何处可能需要重构,以及如何将不好的设计改造为良好的设计。
设计模式,代码重构设计模式,代码重构设计模式,代码重构设计模式,代码重构设计模式,代码重构
本科阶段写过一个小游戏,是一门课的大作业,当时能力有限,代码能力以及对设计模式的理解和运用都不够,后来研究生期间,由于《软件结构设计与模式分析》这门课的期末考试需要我们编写并分析一个软件,软件类型不限...
高质量编程最好的教材之二: 重构-改善既有代码的设计 设计模式