不要滥用面向对象,写出难以阅读和修改的代码
笔者参与过一些完全以面向对象为设计思想的项目,不过感觉都不太好,例如,它们往往有非常之多的硬编码和隐藏的逻辑,导致小小的修改往往会出现意外的问题;因为对象调用跳转太多,代码也很难阅读和修改,调用关系很难理解。
个人认为,这不但是写代码的人不注意的问题,而是面向对象这种方法,鼓励了非常之不好的代码写法:
1. 违反封装隔离的原则:面向对象倾向于将所有函数都定义为内部函数,不喜欢将函数独立出来,函数需要的变量都定义为对象的内部变量,于是很多人开始写出这样的代码:所有的成员函数基本没有什么参数,执行时候不知道在干什么,在依赖哪些变量,改变哪些变量。
2. 太多对象使得问题复杂化:不断地new对象,还用了各种虚方法,就是为了解决一些简单的问题,导致不知道究竟调用了哪些方法。这些问题不如直接switch case简单。
3. 每个对象都在重复做相同的事情:写死了框架,极其复杂笨重,创建了太多对象,每个对象都不知道在干什么,而且能传的参数太少,后期修改时候,太复杂不敢改框架,于是乎开始写死各种代码逻辑。
改进的方法:
一:写比较内敛的代码:比如能用函数解决的问题,不要用对象的继承和虚函数;需要的参数尽量在函数参数内传入;状态尽量在函数内部流转,不要牵涉到外部的变量。
二:面向数据来设计框架,统一数据的处理,而不是用更多的对象来解决数据异化的问题。