【问题标题】:Is "getSomething()" a bad method naming pattern?“getSomething()”是一种不好的方法命名模式吗?
【发布时间】:2011-09-04 17:30:08
【问题描述】:

方法应该告诉对象做什么,例如:

circle.paint()

但是,如果我将一个对象告诉getSomething(),我会告诉该对象得到“某物”(从任何地方),返回 “某事”,get 方法的典型用法是什么(getName() 将返回“名称”)。

我认为将方法命名为returnSomething()会更正确。

那么get(通常使用)是一种不好的命名模式吗?

【问题讨论】:

    标签: oop coding-style naming-conventions


    【解决方案1】:

    约定可能因您使用的语言而异,在 php(不支持 getter/setter 方法)中,以下是很常见的:

    $myObject=>setSomething($value) - 将代表“某物”的 $myObject 的内部变量设置为 $value

    $myObject=>getSomething() - 返回 $myObject 的内部变量,表示“某物”

    这在 C# 等支持 getter/setter 方法的语言中不太常见,您可能会在其中执行以下操作:

    public object Something {
      get { return _something; }
      set {  _something = value; }
    }
    

    那么就可以使用点语法来访问私有变量了:

    myObject.Something="something";
    string value=myObject.Something;
    

    【讨论】:

    • 这就像Java约定,但也许这些约定在oop方面不好。
    【解决方案2】:

    我个人不使用Get 前缀。

    我对检索某些内容的方法使用的唯一前缀是 Is 用于“指标”。
    例如。 payment.IsOverdue()

    至于 setter 方法 - 那些不应该存在。
    对象状态应通过调用行为自行定义。

    Get 不是必需的,因为当我们要求某事时,应该使用名词来命名。

    【讨论】:

    • 也许get 对于没有属性的语言来说只是一个糟糕的解决方法。
    【解决方案3】:

    Deamon,首先我认为这件事有点取决于语言。其次,我有这个Method Naming Guidelines 给你。

    以下是示例 正确命名的方法。

    全部删除()

    GetCharArray()

    调用()

    我也可以说,在我工作的公司中,我们的方法总是使用 GetSomething()GetYourAcceptRateHigher() 这样的名称。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-10
      • 1970-01-01
      • 1970-01-01
      • 2014-01-04
      • 2014-11-21
      • 1970-01-01
      • 2012-02-24
      相关资源
      最近更新 更多