【问题标题】:How to name a class that performs both creation and update of objects [closed]如何命名一个执行对象创建和更新的类[关闭]
【发布时间】:2015-04-02 15:33:34
【问题描述】:

该类有以下方法:

创建员工

更新员工

我将成为 EmplyeeCrud,但由于该类不执行删除,我认为这不是一个合适的名称。此外,在类名的上下文中,“crud”一词听起来也不好。我也在考虑将其命名为 EmployeeFactory,但我的理解是工厂是用于创建而不是更新。我也想过将它命名为 EmployeeManager ,但这表明它不是一个像上帝一样的类。

如果有任何其他建议,我将不胜感激。

【问题讨论】:

  • @LightningRacisinObrit - 在 Progs 上,“命名那个东西”问题经常被关闭为“主要基于意见”。我不认为这个问题在那里会很好。
  • @GlenH7:这里的情况更糟,原因大致相同。这完全是基于意见的,应该关闭。
  • 你真的应该格式化你的问题。
  • 如果你觉得很难为一个类想一个名字,它可能做得太多了。这听起来也像是一个糟糕的设计,为什么有一个只是数据的类,然后是另一个类(或类)来操作它。最合乎逻辑的事情是创建构造函数和更新方法......即OOP
  • @LightningRacisinObrit 正如 Glen 所说,这个问题非常不适合程序员 - 它会很快被否决并在那里关闭,请参阅meta.programmers.stackexchange.com/questions/6582/… 推荐阅读:What goes on Programmers.SE? A guide for Stack Overflow

标签: java c# oop


【解决方案1】:

执行 CRUD 功能的对象的两个常见名称是“Registry”和“Repository”,所以我会选择其中一个名称。例如,EmployeeRegistry 听起来很自我描述:

public interface EmployeeRegistry {
    Employee createEmployee(/* some args */);
    void updateEmployee(Employee e, /* more args */);
}

【讨论】:

  • 是的,但请使用以小写字符开头的方法名称。 (-:
  • @AdriaanKoster 标签之一是 C#; Microsoft 对方法名称使用 Pascal 大小写约定。 (msdn.microsoft.com/en-us/library/4df752aw(v=vs.71).aspx)
  • 糟糕,错过了那个标签。但是为什么我想知道 Java 和 C#...
【解决方案2】:

一次只做一件事。

对象应该按照封装的约定来处理它们自己的更新。无论处理数据,都应该简单地参数化依赖关系。

如果您愿意,可以创建一个池/堆/容器类,以确保您可以跟踪程序中的所有Employee 对象。然后,将容器类与实际对象分离,这样您就可以切换出容器或数据并使其仍然工作。

类比:如果您正在管理孩子,请不要试图自己对他们进行微观管理或“触摸”他们。找人考虑他们。然后,您作为 main() 主程序员,只需告诉每个孩子他们需要做什么。无需与他们进行肢体接触 - 只需组织所有内容,以便一个人跟踪,另一个人提供指导,而孩子们有责任改变自己的活动。

【讨论】:

    【解决方案3】:

    这个类的最佳名称是“Employee”,因为它只对员工进行操作。

    如果方法正在访问数据存储,那么这在我们习惯的标准应用程序分层/贫血对象模型方法中可能不实用。在这种情况下,您可以将此类称为 EmployeDao 或 EmployeeRepository。

    【讨论】:

      【解决方案4】:

      您可以创建一个类EmployeeBuilder 并在类Employee 的公共方法中进行更新。 EmployeeBuilder 可以保存在某些员工之间共享的数据。方法EmployeeBuilder#build() 将获取所有未在这些员工之间共享的信息作为参数,并调用Employee 的构造函数。

      另一方面,EmployeeFactory 应该是一个基于一些常见数据(例如他们在哪个城市工作)创建具体EmployeeBuilder 的类。

      【讨论】:

        【解决方案5】:

        在我看来,您应该使用下面描述的两个类和一个接口:

        接口:有一个接口来描述对任何对象集合执行常见任务的方法,例如重命名、删除、更新等。

        实现接口的类Employee。在构造函数中,您可以使用多个构造函数“创建和设置员工”。

        还有一个容器类,可以调用Employee类中实现的Interface方法。容器类本身可以是列表、向量或您认为最好的任何内容。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-10-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-02-27
          • 1970-01-01
          相关资源
          最近更新 更多