不要滥用面向对象,写出难以阅读和修改的代码

Posted Math & Code & Wave

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了不要滥用面向对象,写出难以阅读和修改的代码相关的知识,希望对你有一定的参考价值。

 

笔者参与过一些完全以面向对象为设计思想的项目,不过感觉都不太好,例如,它们往往有非常之多的硬编码和隐藏的逻辑,导致小小的修改往往会出现意外的问题;因为对象调用跳转太多,代码也很难阅读和修改,调用关系很难理解。

 

个人认为,这不但是写代码的人不注意的问题,而是面向对象这种方法,鼓励了非常之不好的代码写法:

1.  面向对象倾向于将所有函数都定义为内部函数,不喜欢将函数独立出来,函数需要的变量都定义为对象的内部变量,于是很多人开始写出这样的代码:所有的成员函数基本没有什么参数,执行时候不知道在干什么,在依赖哪些变量,改变哪些变量。

2. 不断地new对象,还用了各种虚方法,就是为了解决一些简单的问题,导致不知道究竟调用了哪些方法。这些问题不如直接switch case简单。

3. 写死了框架,极其复杂笨重,创建了太多对象,每个对象都不知道在干什么,而且能传的参数太少,后期修改时候,太复杂不敢改框架,于是乎开始写死各种代码逻辑。

 

改进的方法:

一:写比较内敛的代码:比如能用函数解决的问题,不要用对象;需要的参数尽量在函数参数内传入;状态尽量在函数内部流转,不要牵涉到外部的变量。

二:面向数据来设计框架,统一数据的处理,而不是用更多的对象来解决数据异化的问题。

 

以上是关于不要滥用面向对象,写出难以阅读和修改的代码的主要内容,如果未能解决你的问题,请参考以下文章

三种违反面向对象编程风格的典型代码设计

面向对象的一些学习笔记

设计模式学习笔记 违反面向对象编程风格的三种代码设计及应对

Java的继承与组合

选项卡面向对象练习

代码坏味道