6个抽象,1个构造

时间:2011-07-03 06:15:39

标签: language-agnostic logic abstraction readability clarity

您更喜欢哪种,以及为什么:

典型

if (this.sun.hidden === true &&
    this.moon.visible === false) {
    print "its daytime"
}

可能不必要的抽象

if (isSunHidden() === true &&
    isMoonVisible() === false) {
    print "its daytime"
}

删除一些语法

if (isSunHidden() &&
    isMoonVisible()) {
    print "its daytime"
}

我喜欢这个,因为它非常易读,但也需要硬编码的“白天”字符串

if (timeOfDay() === "daytime") {
    print "its daytime"
}

这也很容易阅读

if (isItDaytime()) {
    print "its daytime"
}

将打印与时间检查混合打印,不太好

printDaytime();

无论如何,这在很大程度上是个人偏好,但也有好的,合乎逻辑的理由选择一个而不是另一个并且我有兴趣听到这些原因 - 或者如果它添加任何东西可能是同一构造的其他变体。< / p>

谢谢!

1 个答案:

答案 0 :(得分:3)

在您的选择中,我更喜欢:

if (isItDaytime()) {
    print "its daytime"
}

这个也不可怕:

if (timeOfDay() === "daytime") {
    print "its daytime"
}

...虽然我会使用枚举或类似的结构而不是文字字符串,例如:

if (timeOfDay() === TimeOfDay.DAY_TIME) {
    print "its daytime"
}