Language agnostic 6个抽象,1个构造

Language agnostic 6个抽象,1个构造,language-agnostic,logic,abstraction,readability,clarity,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()

您更喜欢哪一种,为什么:

典型的

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"
}
我喜欢这个,因为它非常可读,但也需要一个硬编码的“Dayer”字符串

这也很容易阅读

if (isItDaytime()) {
    print "its daytime"
}
将打印与时间检查混合在一起,不好

printDaytime();
无论如何,这在很大程度上是个人的偏好,但也有很好的逻辑理由选择其中一个而不是另一个,我很有兴趣听到这些理由——或者可能是相同结构的其他变体,如果它增加了什么的话


谢谢

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

if (isItDaytime()) {
    print "its daytime"
}
这一点也不可怕:

if (timeOfDay() === "daytime") {
    print "its daytime"
}
…虽然我会使用枚举或类似的构造,而不是文字字符串,如:

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