面向对象编程乱弹

简介: 可以先看看代码对比,精华都在代码里:基于类的方式改写:http://git.oschina.net/web3d/DeCMF/commit/58f915b9d24ab5ffe40adf4ad4ed769fdb6ebe6e原来的函数形式:http://git.oschina.net/web3d/DeCMF/commit/228983fb76b7bd6b69e6116d984ebfe7454d4b8d这个项目是为了演示OOP编程实践而建立的,基于OneThink CM框架。

可以先看看代码对比,精华都在代码里:

基于类的方式改写:

http://git.oschina.net/web3d/DeCMF/commit/58f915b9d24ab5ffe40adf4ad4ed769fdb6ebe6e

原来的函数形式:

http://git.oschina.net/web3d/DeCMF/commit/228983fb76b7bd6b69e6116d984ebfe7454d4b8d

这个项目是为了演示OOP编程实践而建立的,基于OneThink CM框架。

上述代码,将一个函数的代码,拆分到两个类中-父子类继承,在后续整理的过程中,就发现了这样的好处,函数库中另一个类直接代码重用了。

get_addon_list函数的改写:

http://git.oschina.net/web3d/DeCMF/commit/9ae6a2fe9abe27789a1d1c0982d20f97950c1895

原本的一个get_list_field 函数58行,基于面向对象的方式初步改写后,变成240多行,咋一看,代码行数多了很多,不科学啊!

但仔细看后,除去注释90行、语句换行大致20行,其他嵌套语句拆分10几行,原本缺少的逻辑细化,并没有真正增加几行代码。

其实,OOP代码更多是个伪命题,我只是想以此为话题,回顾一下OOP!

面向对象好像对很多人不是个事,但其实只是大多数人没有真正去在意什么是OOP。

OOP的三大特性:

1.封装

把过程和数据包围起来,只让可信的类或者对象操作,对不可信的进行信息隐藏。

2.继承

通过过程抽象和数据抽象。理出一般与特殊的关系。代码重用。

3.多态

不同类的对象对同一消息作出响应的过程不同。接口重用!

将所有逻辑塞到一个函数或者类方法中是没有区别的,这不是面向对象,也不是面向对象的初衷,设计OOP的初衷是解决代码的重用问题。现实中代码的重用程度好像并没有一个明确的标准,所以不同的人实践后会有不同程度的接受度。

通过面向对象,我们要找到相关数据和功能逻辑的关系,并与外界相对隔离,专心专意的去解决一个问题,不会因为暴露出来的全局变量或者函数影响整体代码的可读性和可维护性;同时,考虑事物的多态性,分层去定义对象的属性与功能。

在团队项目中,一坨垃圾代码我们要维护很久很久,直到受不了离开为止。或者是新团队,从头开始写,用最牛掰的框架,最牛掰的架构,写出一坨垃圾代码,然后维护很久很久,直到受不了离开为止......

所以,能否战胜垃圾代码,其实才是真正检验程序员水平的标准。面试了很多人,也有一些新人加入团队后不久就离开,标准理由都是,项目太复杂了,代码太垃圾了,最好能从头开始一个新系统、或者给我一年时间重构现在的系统!

我只能不屑的一笑:你们都是懦夫,真正的程序员敢于直面垃圾的代码,敢于正视破碎的系统!

这是怎样的哀痛者和幸福者?然而造化又常常为平庸的程序员设计,以时间的流逝,来洗涤旧逻辑,仅使留下苍白的产品和微漠的悲哀。在这苍白的产品和微漠的悲哀中,又给程序员暂得偷生,维持着这似是而非的系统。你不知道这样的系统何时是一个尽头!

但我知道!OOP是没有尽头的!

目录
相关文章
|
5月前
|
Java 关系型数据库 数据安全/隐私保护
八股文-面向对象的理解
面向对象编程(Object-Oriented Programming,OOP)是一种程序设计方法,其核心思想是将问题抽象为由若干个对象,通过这些对象之间的调用、配合及协调,共同完成当前的问题。 面向对象的三大基本特征:封装、继承和多态。 面向对象的五大基本原则:单一职责原则、开放封闭原则、里氏替换原则、接口隔离原则、依赖反转原则。
176 1
八股文-面向对象的理解
|
2月前
【编码狂想】解谜OOP:通过实战揭秘面向对象编程的奥秘
【编码狂想】解谜OOP:通过实战揭秘面向对象编程的奥秘
62 0
|
4月前
|
Python
跟我从0学Python——面向对象编程
第四篇:面向对象编程 —— 类和对象的概念
|
存储 Java 数据库连接
写了这么久代码你了解Java面向对象的设计原则吗?(三)
写了这么久代码你了解Java面向对象的设计原则吗?
88 0
写了这么久代码你了解Java面向对象的设计原则吗?(三)
|
设计模式 XML JavaScript
写了这么久代码你了解Java面向对象的设计原则吗?(一)
写了这么久代码你了解Java面向对象的设计原则吗?
96 0
写了这么久代码你了解Java面向对象的设计原则吗?(一)
|
存储 XML Java
写了这么久代码你了解Java面向对象的设计原则吗?(二)
写了这么久代码你了解Java面向对象的设计原则吗
178 0
写了这么久代码你了解Java面向对象的设计原则吗?(二)
|
设计模式 uml
重新认识面向对象(一)
重新认识面向对象(一)
|
设计模式 前端开发 Java
把书读薄 | 《设计模式之美》学习导读 & 面向对象(中)
设计模式某些概念比较抽象,认真看完有时似懂非懂,往往没过多久就忘了,在实际设计与编码中,也不知道如何下手,所以需要落地,想办法加深理解,阅读开源项目,应用到项目中等等。 本文是 学习导读(3讲)和面向对象(11讲) 的浓缩总结,二手知识加工难免有所纰漏,感兴趣有时间的可自行查阅原文,谢谢。
126 0
|
设计模式 存储 算法
把书读薄 | 《设计模式之美》学习导读 & 面向对象(下)
设计模式某些概念比较抽象,认真看完有时似懂非懂,往往没过多久就忘了,在实际设计与编码中,也不知道如何下手,所以需要落地,想办法加深理解,阅读开源项目,应用到项目中等等。 本文是 学习导读(3讲)和面向对象(11讲) 的浓缩总结,二手知识加工难免有所纰漏,感兴趣有时间的可自行查阅原文,谢谢。
75 0

热门文章

最新文章