onlyliuxin / coding2017

218 stars 643 forks source link

学了面向对象和设计模式后依旧只会写面向过程的代码 #549

Open xusheng199318 opened 7 years ago

xusheng199318 commented 7 years ago

虽然有学过面向对象和设计模式,对于书上说的例子也可以理解,但是在真正的web开发当中依然不知道该怎么做,有没有谁有什么在web项目中应用面向对象编程的demo可以参考下嘛?

liubin-vip commented 7 years ago

产生这种现象原因主要还是开发任务紧急,没有留下足够的时间去分析需求。 其实上刘大大的关于面向对象的课的时候,刘大大给的发打折商品信息推送邮件的作业就是一个很好的例子。 我觉得面向对象编程主要步骤如下: 1.分析出需求中涉及的主角(对象) 2.分析各个主体的行为,把有相同方法的一类主角抽象出来(类) 3.分析各个主体之间的联系,从而设计出类之间的关联关系,如继承。 4.根据业务选用合适的关联关系组织各个类,是他们各司其职(设计模式)

总结下就是:根据需求决定所需的类、类的操作以及类之间关联的过程

BlindingDark commented 7 years ago

要自然的使用对象,而不是刻意使用对象

对象是一组数据及其操作这些数据方法的“集合体”。把数据和方法封装在一起是为了更方便使用。如果你不知道什么时候该用对象,什么时候不该用,那证明你对对象的理解还不够深刻,你应该多看例子,增加代码量,多思考。

不要提前设计,好的设计是一个渐进的过程

不要想着一次就能设计出来良好的模型,你应该先写出大概的样子,然后逐渐改进设计。你看别人写的非常精妙,特别漂亮,其实那是好多遍修改之后的结果,这东西和文学创作有相似的地方。先写,先完成功能,然后重构,提取冗余代码。

onlyliuxin commented 7 years ago

在国内,传统的面向数据库表的开发方式非常流行, 尤其是很多维护性项目,你根本没有机会去设计领域模型-- 只是在其中修修补补, 何来OOD ?

现在虽然用不上,但是一定要学会OOD的精神,随着时间的推移,你的职责会越来越大, 负责的领域会从一个模块变成一个系统, 到时候大有用武之地。

不要着急, 现在不妨从你负责的模块开始考察, 看看有没有改进余地, 能不能应用OOD的思想去重构下, 千里之行,始于足下。对于一个遗留的,庞大的,可以工作的系统,重构通常都是这么开始的。

myparamita commented 7 years ago

感觉项目紧急情况下,依赖于后期重构在很多情况下也是很艰难的。特别是项目越来越庞大之后,如果能维持正常运转,很多leader是不会冒险去重构的。 所以一开始还是需要有一个相对良好的架构和原则,减少后期的重构阻力。