对写代码的理解
Healthy Mind Lv3

​ 总结一下自己对面向对象编程的理解;记录一下也算是自己的感悟吧!

​ 在面向对象编程里,第一节课就是,世界万物皆是对象, 那个时候,以为理解了,可是随着编程时间 越来越长,对对象的理解也越来越深,这句话虽然一开始就懂,但是在懂的基础之上,我忽略了何为深度,也许那个时候的认知是很肤浅的,随着实践的时间越长就对一个概念的理解也会有不同程度的感悟,认识一个概念就相当打开了一扇门,但是这门后面有多深,多远就需要自己不断探索了。

​ 当看到 一些开源框架,和中间件的时候,什么是真正的面向对象,什么又是,继承、封装、多态; 在tomcat、elasticSearch、spring 等,这些源码里面把这些概念如何应用到,炉火纯青的地步。

​ 在自己的脑海里也有了一个对面向对象编程有了一个宏观上的理解。程序里的一个模块 可以理解成公司的一个部门行政部财务部

研发部市场部 ,这些部门都负责不同的工作,我们写代码就是构建不同的部门,在现实生活中,部门的职责是分的很清楚的,

​ 行政部:公司制度的制定,公司的管理规范等。

财务部:管理收入支出等。

研发部:相当于产品的生产部门

市场部:销售产品

对象,可以理解为部门里的人,数据:可以理解成 现实中的事件,任务。

每个部门的职责范围清楚,才能有序配合工作,写代码也是,如果代码模块的职责不清楚,就会导致代码调用混乱,线路交叉纵横,难以维护,而且bug比较多,

当在写代码的时候,想着是如何组件这个公司,那些人 该分配到行政部,那些人该分配到 研发部 等,当我们对业务 进行合理划分后,一个清晰的 系统之间的模块关系就出来了,如果模块不清晰,那么对象的职责肯定也是混乱的,就像公司的一个打杂部门一样。

要想模块清晰,就需要对业务有深刻的理解,把业务对象,和流程分解到合适的位置,关于这一块 ,我目前还在实践中,这也许就需要我们有比较高的抽象能力把,一开始可以写一些伪代码,或这画图;代码的抽象和职责分离 是一个持续的过程,当我们看到 tomcat 8 和tomcat 6的时候就会发现,其实tomcat的抽象能那么强,也不是一蹴而就的,是在不断的重构中完善的,所以模块的划分,类职责的划分,和类与类的关系,都是一点一点 随着业务,或者我们对业务的理解深度,以及对代码的理解程度 一点点 改变。