禁止类之间循环依赖-*重构*改善既有代码的设计(带完整书签)

时间:2024-06-27 17:56:07
【文件属性】:

文件名称:禁止类之间循环依赖-*重构*改善既有代码的设计(带完整书签)

文件大小:1.28MB

文件格式:PDF

更新时间:2024-06-27 17:56:07

C++ 编程规范

规则4.3 禁止类之间循环依赖 说明:循环依赖会导致系统耦合度大大增加,所以类之间禁止循环依赖。类A依赖类B,类B依赖类A。 出现这种情况需要对类设计进行调整,引入类C:  升级:将关联业务提到类C,使类C依赖类A和类B,来消除循环依赖  降级:将关联业务提到类C,使类A和类B都依赖类C,来消除循环依赖。 示例:类Rectangle和类Window互相依赖 class Rectangle { public: Rectangle(int x1, int y1, int x2, int y2); Rectangle(const Window& w); }; class Window { public: Window(int xCenter, int yCenter, int width, int height); Window(const Rectangle& r); }; 可以增加类BoxUtil做为转换,不用产生相互依赖 class BoxUtil { public: static Rectangle toRectangle(const Window& w); static Window toWindow(const Rectangle& r); }; 建议4.1 将数据成员设为私有的(struct除外),并提供相关存取函数 说明:信息隐藏是良好设计的关键,应该将所有数据成员设为私有,精确的控制成员变量的读写,对 外屏蔽内部实现。否则意味类的部分状态可能无法控制、无法预测,原因是:  非private成员破坏了类的封装性,导致类本身不知道其数据成员何时被修改;  任何对类的修改都会延伸影响到使用该类的代码。 将数据成员私有化,必要时提供相关存取函数,如定义变量foo_及取值函数foo()、赋值操作符 set_foo()。 存取函数一般内联在头文件中定义成内联函数。如果外部没有需求,私有数据成员可以


网友评论