DEV Community

Discussion on: Imperative vs Declarative Programming

Collapse
 
misterwhat profile image
Jonas Winzen

I usually prefer a declarative style. Imperative style makes the code hard to understand and work with later on. Here is a direct comparison. Both implementations do exactly the same.

Imperative:

function getUserDetails(user) {
  const result = {};
  result.name = "";
  if (user && user.details && user.details.firstName) {
    result.name += user.details.firstName;
  }
  if (user && user.details && user.details.lasName) {
    result.name += " " + user.details.lastName;
  }
  if (
    user &&
    user.details &&
    user.details.contact &&
    user.details.contact.email
  ) {
    result.email = user.details.contact.email;
  } else {
    result.email = "";
  }
  result.name = result.name.replace(/^\s/, "");
  return result;
}

Declarative:

const getUserDetails = (user) => ({
  name: [user?.details?.firstName, user?.details?.lastName]
    .filter(Boolean)
    .join(" "),
  email: user?.details?.contact?.email ?? "",
});

Maybe this comparison is a little bit unfair. But it shows the fact, that you get easily lost in details and spaghetti code, when writing an imperative style.