重构-过大的类

在面向对象的设计程序中,有个“单一职责”原则,也就是说,这个类的功能比较单一,只做一件事情,而且引起这个类对象变化也是唯一的。

说白了就是一个类只干一件事情,而且引起这个发生变化的接口也只有一个。

如果判断一个类是过大呢?一个简单的办法就是:这个类中的变量太多了,而且这些变量的含义功能优势多方面的。出现这种情况就要考虑要把这个类分成几个小类了。

提炼的时候,尽量把类内相关的变量放到一起。比如长方向的长和宽。

有时候类并非所有的时刻都使用所有的实力变量,把同一时刻使用的变量封装成一个类。

拥有太多的变量,往往就会有太多的代码,代码一多,就会出现重复的代码,最后就会变得很混乱。

所以尽量让每个类只负责一个功能,不仅有利于调试代码,更有利于整个代码的结构整洁。

例子:

飞机类

class Plane {
public:
	Plane();
	~Plane();

private:
	std::string _pilotName;//飞行员名字
	std::string _pilotCode;//飞行员编号
	int _pilotAge;//飞行员年龄
	std::string _pilotFrom;//飞行员所属单位

	std::string _planeType;//飞机的机型
	std::string _planeDuration;//飞机已经飞行的时长
	int _planeMaxDistance;//飞机最大飞行距离
};

上面的例子可以看出定义了一个Plane类,这个类中既包含了驾驶员的个人信息,又包含了飞机本身的信息。所以这个类对于我们来说还是太大了。我们要把这个类分解出两个小类。

#pragma once
#include <string>
//飞行员类
class Pilot {
public:
	Pilot();
	~Pilot();

private:
	std::string _pilotName;//飞行员名字
	std::string _pilotCode;//飞行员编号
	int _pilotAge;//飞行员年龄
	std::string _pilotFrom;//飞行员所属单位
};

Pilot::Pilot() {
}

Pilot::~Pilot() {
}

//飞机属性类
class PlaneAttr {
public:
	PlaneAttr();
	~PlaneAttr();
private:
	std::string _planeType;//飞机的机型
	std::string _planeDuration;//飞机已经飞行的时长
	int _planeMaxDistance;//飞机最大飞行距离
};

PlaneAttr::PlaneAttr() {

}

PlaneAttr::~PlaneAttr() {

}

class Plane {
public:
	Plane();
	~Plane();

private:
	Pilot _pilot;//飞行员
	PlaneAttr _planeAttr;//飞机属性
};

以上!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wb175208

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值