getOrCreate函数是好的还是坏的做法?

Mic*_*hal 5 java architecture

在我的代码(假设的)中,我想使用getOrCreate函数。我传递参数,然后从数据库中获取一个新实体或一个现有实体(如果存在)。

从一个角度看,这是一种错误的方法,因为函数不应做超过一件事。但是从另一个角度来看,这是一个单一的操作,只是没有一个合适的英文单词,我可以减少代码中的重复项。

那么,使用这种方法是好事还是坏事?又为什么呢?

Gil*_*anc 3

这是一个获取函数。您将获得该类的一个实例。

get 函数内部如何工作对于外界来说并不重要。

    public Object getObject(int key) {
        Object object = getObjectFromDatabase(key);
        if (object == null) {
            object = createObject(key);
            writeObjectToDataBase(key, object);
        }
        return object;
    }
Run Code Online (Sandbox Code Playgroud)

每种方法都有一种功能。

编辑补充:有些人从内到外看待方法。这就是您在为该方法编写代码时需要执行的操作。我认识到我的 getObject 方法必须做几件事才能真正获取对象。

但是,当您命名该方法时,您是从外部查看该方法。这就是为什么我的 getObject 方法“获取一个对象”(非常简短的 Javadoc 描述)。如果您不能写一个简单的声明性句子来描述您的方法的功能,那么您的方法可能太复杂了。

  • getObject() 只应该获取它。外界不会知道它也可能创建一个新对象(对象的创建和检索的紧密耦合)。如果有其他方法在同一数据库上执行其他操作(主要是读取),这种设计可能会被破坏。例如,如果您有一个 getRecordCount() 方法,它可以在本地记录表中的记录数。它如何知道“getObject()”已更改数据库的记录计数并且需要再次读取计数? (9认同)