Ruby 如果一行超过80个字符,我不应该使用三元表达式吗?

Ruby 如果一行超过80个字符,我不应该使用三元表达式吗?,ruby,Ruby,这里的语义问题。我喜欢使用三元表达;例如(为了说明我的问题,这是一个愚蠢的例子): ……但队伍往往很长。我是否应该使用此选项: if some_int >= 5 @description = "This is a pretty long value" else @description = "This value is a little shorter" end 只是为了让每一行都更短?越短越好?谢谢 将表达式分成几行: @descript

这里的语义问题。我喜欢使用三元表达;例如(为了说明我的问题,这是一个愚蠢的例子):

……但队伍往往很长。我是否应该使用此选项:

    if some_int >= 5
      @description = "This is a pretty long value"
    else
      @description = "This value is a little shorter"
    end

只是为了让每一行都更短?越短越好?谢谢

将表达式分成几行:

@description = some_int >= 5
    ? "This is a pretty long value"
    : "This value is a little shorter"
通过这种方式,您可以保持代码的可读性,并且仍然具有三元结构

some_int >= 5 ? @description = "This is a pretty long value" : @description = "This value is a little shorter"
这是对三元数的不当使用。三元函数的唯一用途是使用返回值。应该这样写(格式问题除外):

如果一行超过80个字符,我不应该使用三元表达式吗

行长度是错误的度量。这就像询问子例程是否不应超过25行(或其他)。这并不是问题的根源,可能会导致一些尴尬的选择。真正的问题是复杂性

从复杂性的角度来看,你的三元是好的。它是一个简单的条件,简单的语句,并且使用返回值。问题是语句太长,而且会换行。您可以根据需要重新设置它们的格式

您还可以将字符串放入它们自己的变量中,为代码添加进一步的说明

@long_description  = "This is a pretty long value"
@short_description = "This value is a little shorter (except it's not)"

@description = some_int >= 5 ? @long_description : @short_description
这两种工具都是有效的,可以组合使用。这是情境性的


嘿,看看这一点,现在文本是一个可配置的对象变量。

Ruby的有趣之处在于,如果三元数太混乱或太笨拙,可以使用
if

@description =
  if some_int >= 5
    "This is a pretty long value"
  else
    "This value is a little shorter"
  end
这比三元等价物更容易一目了然

if
case
都以这种方式工作,返回触发的值

在一般实践中,三元函数在处理非常短的值时效果最好:

method_call(value > 5 ? :high : :low)

除此之外,很难理解会导致意外错误的原因。

为什么要将行数保持在80个字符以下?@spickermann因为80个字符是最小编辑器窗口宽度的安全假设,如果超过80个字符,它将在右边距处换行或消失,使其更难阅读。就我个人而言,我假设现在我们有100个宽屏,但你需要一个最低限度。
@long_description  = "This is a pretty long value"
@short_description = "This value is a little shorter (except it's not)"

@description = some_int >= 5 ? @long_description : @short_description
@description =
  if some_int >= 5
    "This is a pretty long value"
  else
    "This value is a little shorter"
  end
method_call(value > 5 ? :high : :low)