【问题标题】:Term for percent, percentage, fraction, scale factor?百分比,百分比,分数,比例因子的术语?
【发布时间】:2011-12-27 15:51:05
【问题描述】:

我的函数在概念上都返回相同的东西,但结果可以采用不同的形式:

function GetThingy()

有四个不同的函数,每个函数可以返回不同的东西:

  • 0.071float 值表示增加了 7.1%)
  • 7.1float 值表示增加了 7.1%)
  • 1.071float 值表示增加了 7.1%)
  • "7.1%"string 值代表 7.1% 的百分比)

我可以使用哪些术语来帮助记录这些函数的返回值?

我想出了自己的术语:

  • fraction:一个fraction;该值被理解为介于 0..1 之间(例如,0.07 代表 7%)
  • 百分比每百个值;其中值被理解为介于 0..100 之间(例如,7 代表 7%)注意:这与 分数 形成对比,它是 per-one,而不是超过一百分
  • 因素A scale factor, that can be used to directly multiply;理解为相当于1+fraction(例如1.07表示增加7%)
  • percentage:一个字符串,包含实际的百分比字符(即%),适合显示给用户,或喜欢本地化文本的情况(例如,"7%" 意味着 7%)

所以将我自己的命名方案应用于函数:

  • GetThingyFraction() = 0.071
  • GetThingyPercent() = 7.1
  • GetThingyFactor() = 1.071
  • GetThingyPercentage()= "7.1%"

你说什么?

【问题讨论】:

  • 我强烈建议不要使用四个基本上都做同样事情的函数。相反,有一个 getter(总是返回一个“分数”),然后是可以从一种格式转换为另一种格式的辅助函数。
  • @duffymo 我既不寻求验证,也不要求采用。我要求正确的条款。如果我谈论使用 SHA1 来“加密”我的密码,我相信我会听到正确的术语。
  • 我不会将帮助命名方法称为编程问题。使用内联文档来描述函数。
  • 也许是English.S.E的人。对你没有大写“I”感到愤怒。
  • @BalamBalam:它们都返回相同的概念,只是格式不同。

标签: language-agnostic naming-conventions


【解决方案1】:

不确定是否有“答案”,但如您所演示的那样命名函数可以让消费者很容易理解他们得到了什么。我也喜欢你选择的条款。

您是否计划实现每个函数的所有四种(或 n 种)风格,或者当不同的操作以不同方式处理结果时,这是否是严格的命名问题?

我不太确定“百分比”版本的实用性。通常,应在表示中处理消息 UI 的字符串,而不是在计算中。演示文稿将确定小数位数,“%”与“pct”与“百分比”等。

【讨论】:

  • 我也认为名称很好,但我会使用术语FormatThingy 而不是GetThingy,并创建一个函数,其参数定义返回的格式类型。值始终相同,只是格式不同。
  • 除非函数实际上是在计算......所以它可能是 GetDiscountPercent() 或 GetInterestFactor()
  • 就我而言,我正在维护一些具有返回“百分比”的函数的遗留代码。但是不同的函数将它们返回为不同的“种类”:70.071.07。试图破译每个函数返回的内容被证明是非常乏味和困难的(函数名称没有给出任何关于它们返回的指示)。并且没有 cmets 指示它们返回的“百分比”形式。所以是时候给混乱带来秩序了。 7=*percent*、.07=*fraction*、1.07=*factor*。然后,当我需要显示值时,7%=*percentage*。或者不是……我不知道。
  • 重命名遗留函数以正确识别返回内容听起来是一个绝妙的主意,并且也会使消费代码更具可读性。
  • 我采用的代码示例:function getHealingPercentBonus() 返回1.07function getSpellCrit() 返回 4.3function getHealingFactor() 返回0.02
【解决方案2】:

我会说你刚刚得到它,但我会在某些地方添加“增加”这个词,并将你的示例放在文档/cmets 中:

  • GetThingyFractionIncrease() [例如0.071代表增加7.1%]
  • GetThingyPercentIncrease() [例如7.1代表增加7.1%]
  • GetThingyFactor() [例如1.071代表增加7.1%]
  • GetThingyPercentageString() [例如“7.1%”代表增加7.1%]
  • 【讨论】:

      【解决方案3】:

      尽管您的标签与语言无关,但我假设您正在使用现代的面向对象编程语言编写代码。

      如果您有一个 Thingy 类和一个具有私有分数的 thingy 对象,那么您可以通过以下方法允许公共访问:

      • double thingy.asFractionIncrease
      • double thingy.asPercentIncrease
      • double thingy.asFactor
      • String thingy.asPercentIncreaseString

      附:我要投票赞成你的 EL&U 帖子。到现在为止,这将使您回到 0 并且您将对声誉产生净正面影响

      【讨论】:

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