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


     

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

     

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

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

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

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

    改进的方法:

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

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

  • 相关阅读:
    一个图层隶属下一个图层
    windows安装Apache,注册服务出现“(OS 5)拒绝访问。 : AH00369: Failed to open the WinNT service manager..."错误
    windows下apache如何完整卸载?
    重设mysql数据库root用户密码
    mysql设置root密码
    mysql服务无法启动
    ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables opt
    亿丰之星 · 声动亚洲
    Euler's Sum of Powers Conjecture
    MATLAB Hacks from Richard Socher
  • 原文地址:https://www.cnblogs.com/dearplain/p/8971457.html
Copyright © 2020-2023  润新知