方法命名公约问题(大多数语言)

时间:2010-09-09 15:34:42

标签: methods naming-conventions naming

如果我有隐藏按钮的方法,我可能会称之为 HideButton
如果我有一个显示按钮的方法,我可能会称之为 ShowButton

但是你们怎么称呼 ShowIfThisHideIfThat 样式方法?

可能的选择:
TestForButtonVisibility (这种声音会返回true / false但实际上并没有完成工作)
TestButton
ShowHideButton (我目前使用的风格)

已经这么多年了,仍然没有我喜欢这些类型的方法的风格。我主要使用C#和一些Java,Ruby和F#。在这方面你对方法名称使用了什么?

// example of the style of method
public void ShouldIShowOrHideButton()
{
  Button.Visible = ((chkSomeSetting.Checked) && (DateTime.Now.Day < 8));
}

6 个答案:

答案 0 :(得分:6)

updateButtonVisibilty()怎么样?

答案 1 :(得分:4)

我的偏好是保持切换方法而不是隐藏/显示的单独方法。

ToggleButtonVisibility()

这允许您将测试代码放在那里,预期的结果/输出将是一个正确可见/不可见的按钮。

编辑:切换是个人偏好,源于使用二进制门,架构等的部分背景,其中切换可能在到达结束状态之前经过几个单独的门。单词本身可以更改为其他任何内容,例如Update,Determine,Finalize,甚至Steve。它真的归结为对你有意义的东西以及你的标准。

答案 2 :(得分:4)

可能是过度工程,但你可能遇到问题的原因是因为它做了两件事。因此,确保只有一个函数执行单个操作,如何确定是否应显示按钮的方法(获取参数,返回bool),然后直接设置按钮的值。

  Button.Visibilty = DetermineIfButtonShouldBeShow(...);

答案 3 :(得分:2)

修改:现在编辑您的问题以包含示例

// example of the style of method
public void ShouldIShowOrHideButton()
{
  Button.Visible = ((chkSomeSetting.Checked) && (DateTime.Now.Day < 8));
}

我的回答是 。我会做两件事:

  1. Button.Visible部分移到函数外部,因此该函数只计算逻辑并返回bool
  2. 根据内部逻辑命名函数,而不是根据是否为按钮。因此,如果您的函数检查婚礼当天,它将被称为IsWeddingDay,如果它检查每月会议,它将是IsMonthlyMeeting
  3. 代码是

    Button.Visible = IsMonthlyMeeting()
    

    ,如果需要,逻辑可以随后用于控制任何其他小部件。

    旧答案: 您可能需要解释更多 ShowIfThisHideIfThat 的内容。

    如果它取决于一个条件,例如:

    if (condition)
        ShowBotton()
    else
        HideButton()
    

    然后我会用

    Button.SetVisibility(condition)
    

    根据Lazarenko上面的评论,或者语言是否有属性:

    Button.Visible = condition
    

    如果您有两个条件,例如 ShowIfThisHideIfThat 似乎意味着什么,相当于:

    if (cond1)
        ShowButton()
    else if (cond2)
        HideButton()
    else
        LeaveButtonAsItIs()
    

    那么我认为逻辑很复杂,我不会使用一个函数。当然,代码相当于

    Button.Visible = cond1 || (!cond2 && Button.Visible)
    

    但你失去了理解力。

答案 4 :(得分:0)

如何使用SetButtonVisibility( )

答案 5 :(得分:0)

混淆似乎源于业务逻辑和UI逻辑的混合。测试不是应该显示按钮。代码将使用测试来决定是否应该显示按钮。这可能取决于是否应该提供某些功能。考虑:

if (IsFeatureEnabled()) {
  ShowButton();
} else {
  HideButton();
}

这是业务逻辑(IsFeatureEnabled())符合UI(ShowButton() / HideButton())的代码。