我有几组截然不同的数据,其中有些在某种程度上是相关的(但不够紧密,无法将它们放在同一个类中)。
class LicenseData {
public:
bool hasFishLicense() const { return m_hasFishLicense; };
private
bool m_hasFishLicense;
}
class PetInventory() {
public:
bool hasFish() const { return m_hasFish; };
private:
bool m_hasFish;
}
class PetOwner {
PetInventory pets;
LicenseData licenses;
void walkPets() {
//...
if (pets.hasFish() && licenses.hasFishLicense())
//Never ever walk your Fish without a license (the fines are horrible)
}
void photographPets() {
//...
if (pets.hasFish() && licenses.hasFishLicense())
//The photo shop owner will tell the goverment about unlicensed Fish
}
void feedPets() {
//...
if (pets.hasFish())
// All Pets must be fed or they will die (like my poor parrot)
}
}
如您所见,几次相同的“相关”数据被一起评估(hasFish()
和hasFishLicense()
)-这是代码重复,要求将(重复)代码放入一个常用功能。但是,问题在于并非所有调用(与示例不同)都源自同一类。如果是这样,应该在哪里创建该通用功能?作为单独类中的“帮助函数”?即使全班有4-5个这样的功能,也似乎“过轻”。然而,将其放在现有的任何一个类中似乎都是错误的。
那么最好的前进方向是什么?创建一个新的(非常瘦的)类,扩展现有的类之一,还是只吸收重复项?