crazy4groovy
9/27/2018 - 6:16 PM

using a switch for complex decision logic - no if-branching!

using a switch for complex decision logic - no if-branching!

// DYNAMIC/COMPLEX BOOLEAN LOGIC
function hasUnseenNews(newsTime, seenTime) {
    const newsMoment = +new Date(newsTime);
    const seenMoment = +new Date(seenTime);
    return newsMoment > seenMoment;
}

// DECISION TREE
function showDot(isFollowed, newsTime, seenTime) {
    switch (true) {
    case !isFollowed:
    case !newsTime:
        return false;

    case !seenTime:
    case hasUnseenNews(newsTime, seenTime):
        return true;

    default:
        return false;
    }
}

// test: not followed >>>> false
console.log(showDot(false, '1980-01-01', '1979-01-01'));
// test: no news >>>> false
console.log(showDot(true, '', '1980-01-01'));
// test: not seen >>>> true
console.log(showDot(true, '1980-01-01', ''));
// test: newsTime > seenTime >>>> true
console.log(showDot(true, '1980-01-01', '1970-01-01'));
// test: newsTime === seenTime >>>> false
console.log(showDot(true, '1980-01-01', '1980-01-01'));
// test: newsTime < seenTimer >>>> false
console.log(showDot(true, '1980-01-01', '1990-01-01'));