Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 我该如何制作我的红宝石?_Ruby - Fatal编程技术网

Ruby 我该如何制作我的红宝石?

Ruby 我该如何制作我的红宝石?,ruby,Ruby,在ruby或编程中,最好的做法是尽语言所允许的简洁,还是在仍然可读的情况下简洁?例如: animals = %w{ cat dog bird } chosen_animal = rand(animals.length) random_animal = animals[chosen_animal] 或 我觉得第二个是更好的代码。使用第一个有什么好处吗?你会用哪一种?为什么 在语言允许的范围内尽可能简洁,还是在可读的情况下尽可能简洁 总是,总是喜欢可读性。简洁性只有在使您的代码更具可读性时才有用(

在ruby或编程中,最好的做法是尽语言所允许的简洁,还是在仍然可读的情况下简洁?例如:

animals = %w{ cat dog bird }
chosen_animal = rand(animals.length)
random_animal = animals[chosen_animal]

我觉得第二个是更好的代码。使用第一个有什么好处吗?你会用哪一种?为什么

在语言允许的范围内尽可能简洁,还是在可读的情况下尽可能简洁

总是,总是喜欢可读性。简洁性只有在使您的代码更具可读性时才有用(即,不太冗长和杂乱无章)。如果它模糊了代码,只会减慢开发速度,那么它就不会为您节省任何东西

可读性/可维护性仅在性能问题上处于次要地位,并且仅在绝对必要时。这种情况在Ruby这样的语言中并不常见,在C这样的语言中更常见的是,当瓶颈已经被证明存在时,只能通过执行一些低级优化来解决,这些优化可能会使代码稍微难以理解。在本例中,添加注释以彻底解释代码的行为

在语言允许的范围内尽可能简洁,还是在可读的情况下尽可能简洁

总是,总是喜欢可读性。简洁性只有在使您的代码更具可读性时才有用(即,不太冗长和杂乱无章)。如果它模糊了代码,只会减慢开发速度,那么它就不会为您节省任何东西


可读性/可维护性仅在性能问题上处于次要地位,并且仅在绝对必要时。这种情况在Ruby这样的语言中并不常见,在C这样的语言中更常见的是,当瓶颈已经被证明存在时,只能通过执行一些低级优化来解决,这些优化可能会使代码稍微难以理解。在这种情况下,添加注释,彻底解释代码的行为。

这是一个非常广泛的问题,有很大的主观偏见空间

人们普遍认为可读性总是一件好事。然而,可读性因人而异

例如,从你的例子中,我实际上更喜欢第二种变体

有很多人会说,将代码分散开来,这很有帮助,但也有一些人(包括我自己)更喜欢不太分散(在限制范围内!)的代码,因为这让我更容易在远处感受到代码的“形状”(结构、循环、条件等)

在您的示例中,使用一个或另一个变体对可读性几乎没有影响。但假设你有这样一个公式:

r1 = $r*(($objcols-i).to_f+j+k)*3/total_objs
这里面有很多术语,所以很难吸引眼球。你可以把它拆开:

t1 = ($objcols-i).to_f
t2 = t1 + j + k
t3 = $r * t2 * 3
r1 = t3 / total_objs
但这会让它更具可读性吗?实际上,这个特殊的公式只是一个神奇的公式,可以产生一个很好的随机旋转

您可以通过将其水平展开进行折衷:

r1 = $r*( ($objcols-i).to_f+j+k ) * 3 / total_objs
这至少有助于对主要术语进行分组

但归根结底,我们谈论的是微观。是否有人需要3秒或10秒来理解这个片段并不重要。更重要的是:

  • 表达的原因必须是显而易见的。如果从代码本身看不明显,那么它需要一个注释来解释它
  • 代码应该易于导航。这意味着:
    • 消除/减少重复代码
    • 将您的程序分解为不太小或太大的函数。同样,“太小”和“太大”是主观的术语,通常也有例外
    • 用大量注释解释更复杂和更高级的结构(例如,交互类的大型网络)
最后,你知道你能做到吗?(至少在ruby 1.9+):


这是一个非常广泛的问题,有很大的主观偏见空间

人们普遍认为可读性总是一件好事。然而,可读性因人而异

例如,从你的例子中,我实际上更喜欢第二种变体

有很多人会说,将代码分散开来,这很有帮助,但也有一些人(包括我自己)更喜欢不太分散(在限制范围内!)的代码,因为这让我更容易在远处感受到代码的“形状”(结构、循环、条件等)

在您的示例中,使用一个或另一个变体对可读性几乎没有影响。但假设你有这样一个公式:

r1 = $r*(($objcols-i).to_f+j+k)*3/total_objs
这里面有很多术语,所以很难吸引眼球。你可以把它拆开:

t1 = ($objcols-i).to_f
t2 = t1 + j + k
t3 = $r * t2 * 3
r1 = t3 / total_objs
但这会让它更具可读性吗?实际上,这个特殊的公式只是一个神奇的公式,可以产生一个很好的随机旋转

您可以通过将其水平展开进行折衷:

r1 = $r*( ($objcols-i).to_f+j+k ) * 3 / total_objs
这至少有助于对主要术语进行分组

但归根结底,我们谈论的是微观。是否有人需要3秒或10秒来理解这个片段并不重要。更重要的是:

  • 表达的原因必须是显而易见的。如果从代码本身看不明显,那么它需要一个注释来解释它
  • 代码应该易于导航。这意味着:
    • 消除/减少重复代码
    • 将您的程序分解为不太小或太大的函数。同样,“太小”和“太大”是主观的术语,通常也有例外
    • 用大量注释解释更复杂和更高级的结构(例如,交互类的大型网络)
最后,你知道你能做到吗?(至少在ruby 1.9+):


哪个从
动物中随机抽取一个元素

一个人应该如何使语言X简洁?问题是一样的,而且是OT。在这种情况下,第二个更好,因为它没有