DEV Community

Cover image for Code Smell 87 - Inconsistent Parameters Sorting
Maxi Contieri
Maxi Contieri

Posted on • Originally published at maximilianocontieri.com

2 1

Code Smell 87 - Inconsistent Parameters Sorting

Be consistent with the parameters you use. Code is prose.

TL;DR: Don't confuse you readers. Keep the order.

Problems

  • Readability

  • Consistency

Solutions

  1. Refactor and change parameters order.

  2. Use named parameters

Sample Code

Wrong

function giveFirstDoseOfVaccine(person, vaccine) {
  //
}

function giveSecondDoseOfVaccine(vaccine, person) {
  //
}


giveFirstDoseOfVaccine(jane, pfizer);
giveSecondDoseOfVaccine(jane, pfizer);  //Unnoticed mistake
Enter fullscreen mode Exit fullscreen mode

Right

function giveFirstDoseOfVaccine(person, vaccine) {
  //
}

function giveSecondDoseOfVaccine(person, vaccine) {
  //
}


giveFirstDoseOfVaccine(jane, pfizer);
giveSecondDoseOfVaccine(jane, pfizer);  //jane is immunized
Enter fullscreen mode Exit fullscreen mode

Detection

  • Some very smart linters may be able to compare arguments and hint for possible mistakes.

Tags

  • Readability

Conclusion

This is a very simple smell.

Readability is very important to avoid mistakes.

Relations

Credits

Photo by Lance Grandahl on Unsplash


Computers are good at following instructions, but not at reading your mind.

Donald Knuth


This article is part of the CodeSmell Series.

Tiugo image

Modular, Fast, and Built for Developers

CKEditor 5 gives you full control over your editing experience. A modular architecture means you get high performance, fewer re-renders and a setup that scales with your needs.

Start now

Top comments (1)

Collapse
 
jamesrweb profile image
James Robb

Usually for cases like this I would create a factory to avoid the ambiguity, something like:

type Vaccine = "pfizer" | "moderna"
type Patient = {
    name: string;
}
type PatientWithCoronaVaccineDetails = Patient & {
    vaccine: Vaccine;
    doses: number;
}

function vaccineFactoryForPatient(patient: PatientWithCoronaVaccineDetails) {
  // ...

  return {
    giveFirstDoseOfVaccine() {
        // ...
    },
    giveSecondDoseOfVaccine() {
        // ...
    }
  }
}
}
Enter fullscreen mode Exit fullscreen mode

This way we can avoid this category of issues in the first place.

Redis image

Short-term memory for faster
AI agents

AI agents struggle with latency and context switching. Redis fixes it with a fast, in-memory layer for short-term context—plus native support for vectors and semi-structured data to keep real-time workflows on track.

Start building

👋 Kindness is contagious

Discover fresh viewpoints in this insightful post, supported by our vibrant DEV Community. Every developer’s experience matters—add your thoughts and help us grow together.

A simple “thank you” can uplift the author and spark new discussions—leave yours below!

On DEV, knowledge-sharing connects us and drives innovation. Found this useful? A quick note of appreciation makes a real impact.

Okay