在何处放置轻量级方法,这些方法只能跨多个类对单个代码行进行重复数据删除?

时间:2018-10-04 13:20:18

标签: c++

我有几组截然不同的数据,其中有些在某种程度上是相关的(但不够紧密,无法将它们放在同一个类中)。

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个这样的功能,也似乎“过轻”。然而,将其放在现有的任何一个类中似乎都是错误的。

那么最好的前进方向是什么?创建一个新的(非常瘦的)类,扩展现有的类之一,还是只吸收重复项?

0 个答案:

没有答案