【问题标题】:Looking for better method names [closed]寻找更好的方法名称[关闭]
【发布时间】:2013-10-30 14:49:58
【问题描述】:

在代码审查中,我面临一个包含以下方法对的类:

getOrCreateXXXFor(YYY)
getXXXFor(YYY)

(XXX 和 YYY 是两种业务逻辑类型。)我不确定这些是否是理想的名称。

第一个确实和Singleton模式有关,但是有一个参数和

  • 返回一个对象,如果它存在或
  • 创建并返回它,如果它不存在。

第二个

  • 返回与第一个方法相同的对象,但仅限于存在时
  • 如果 Exception 不存在,则抛出它。

我正在考虑是否应该重命名它们。你有更好的建议吗?


[编辑] 具体来说:

  • 名称应该简短而简明地描述所发生的事情(无需阅读文档)
  • 两个方法的关系应该通过名字来保留

简而言之,它应该会产生一个干净的 API。 给事物起一个易于理解的名称是软件工艺的核心部分。该主题与排序数组一样很少基于意见。

【问题讨论】:

  • 你如何定义一个“理想”的名字?
  • 他们返回的是不同的对象吗?
  • 这基本上是一种享元模式。为什么不提供createOrGetcontains 方法?
  • 当有一个方法会为他创建对象而不是抛出异常时,为什么用户要调用一个可能抛出异常的方法?您的问题听起来可以使用单例或享元模式解决
  • 为什么这被否决了?

标签: java oop method-names


【解决方案1】:

看看Singleton-Pattern 和/或Flyweight-Pattern

我建议将其实现为 Singleton 并提供 exists 方法。

public class SingletonDemo {
    private static volatile SingletonDemo instance = null;

    private SingletonDemo() {       }

    public static SingletonDemo getInstance() {
            if (instance == null) {
                    synchronized (SingletonDemo .class){
                            if (instance == null) {
                                    instance = new SingletonDemo ();
                            }
                    }
            }
            return instance;
    }

    public boolean exists() {
        return instance != null;
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多