DEV Community

Discussion on: Where do you prefer your conditionals – inside or outside?

Collapse
 
guillermohurtado profile image
guillermohurtado

I face this dilemma as well as I like to avoid excessive branching if possible. However, If you follow the recommendations from Clean Code amazon.com/Clean-Code-Handbook-Sof... you should limit functions to do one thing ONLY and do it very well. For your example above, my advice would be to have one function for the mobile case, a different one for native, and have the name of the function clearly state that. Otherwise the outcome of doIt() is not clear. It can do something or not.

Collapse
 
rvisharma profile image
Ravi Sharma • Edited

Interesting!
Your approach would actually eliminate the cons that i mentioned. Thanks for book mention, will check it out.
Based on your comments it can look something like this.

function run() {
  if (isMobile) {
    runMobileFlow();
  } else {
    runWebFlow();
  }
}

function runMobileFlow() {
  notifyInApp();
  log();
}

// only to be called in Mobile
function notifyInApp() {}

function runWebFlow() {
  sendEmail();
  log();
}

// only to be called for web
function sendEmail() {}

function log() {
  console.log("common logging");
}

// Start
run();

Enter fullscreen mode Exit fullscreen mode