【发布时间】:2014-02-22 19:00:48
【问题描述】:
我正在尝试编写快速简洁的代码。我很感激您对编写以下代码的最佳方式以及原因的想法:
选项#1
def get_title
title = check_in_place_one
if title.empty?
title = check_in_place_two
if title.empty?
title = check_in_place_three
end
end
return title
end
选项#2
def get_title
title = check_in_place_one
title = check_in_place_two unless !title.empty?
title = check_in_place_three unless !title.empty?
return title
end
我认为选项#1 更好,因为如果check_in_place_one 找到title,我们测试一次title.empty?,然后跳过方法中的其余代码并返回。但是,它看起来太长了。选项#2 看起来更好,但处理title.empty? 一次额外时间,并且在返回之前有不必要的时间。另外,我错过了第三种选择吗?
【问题讨论】:
-
除了你的主要观点之外,双重否定
unless !...是不好的,无论是可读性还是性能。 -
@sawa 从可读性角度还是其他原因?
-
@izmangyo 主要是可读性。
unless !...是双重否定的。if ...更好。 -
check_in_place...是方法还是变量?虽然在方法中不使用括号是可以的,但在您的代码中很难分辨。 -
@theTinMan check_in_place.. 是方法。它们不带任何参数,因为它们都在一个公共实例变量上工作。
标签: ruby coding-style