DEV Community

Cover image for Code Smell 222 - Comma Operator
Maxi Contieri
Maxi Contieri

Posted on • Originally published at maximilianocontieri.com

3

Code Smell 222 - Comma Operator

Don't abuse this fancy operator

TL;DR: Use comma operator just for loops

Problems

  • Readability

  • Hidden Defects

Solutions

  1. Avoid operator usage

  2. Prefer foreach operator

  3. Break the sentences

Context

In JavaScript, the comma operator allows you to evaluate multiple expressions sequentially and return the value of the last expression.

It's denoted by a comma and separates multiple expressions within a larger expression.

Each expression is evaluated in order from left to right, and the final value of the entire comma-separated expression is the value of the last expression.

Sample Code

Wrong

const gravitationalConstant = 6.67430e-11;

const massBlackHole1 = 1.5e31;  // Mass of the first black hole in kg
const massBlackHole2 = 2.2e32;  // Mass of the second black hole in kg
const distanceBlackHoles = 5.7e20;  // Distance between black holes in meters

var force = (distanceSquared = distanceBlackHoles * distanceBlackHoles,
             (gravitationalConstant * massBlackHole1 * massBlackHole2) /
             distanceSquared);

// Two operations in a single statement with comma operator     

console.log("Gravitational force between two black holes:", force);
Enter fullscreen mode Exit fullscreen mode

Right

function calculateGravitationalForce(mass1, mass2, distance) {
  const gravitationalConstant = 6.67430e-11;
  return (gravitationalConstant * mass1 * mass2) / (distance * distance);  
}

const massBlackHole1 = 1.5e31;  // Mass of the first black hole in kg
const massBlackHole2 = 2.2e32;  // Mass of the second black hole in kg
const distanceBlackHoles = 5.7e20;  // Distance between black holes in meters

const force = calculateGravitationalForce(
  massBlackHole1,
  massBlackHole2,
  distanceBlackHoles
);

// Notice force is calculated with a separate function

console.log("Gravitational force between two black holes:", force);

Enter fullscreen mode Exit fullscreen mode

Detection

[X] Automatic

Many linters can detect this problem.

Exceptions

Tags

  • Readability

Conclusion

This valid operator was designed to shorten for loops but is now sometimes abused.

Relations

Disclaimer

Code Smells are my opinion.

Credits

Photo by Stephen Hickman on Unsplash


My computer's so fast it finishes an infinite loop in 5 minutes.

Chisel Wright


This article is part of the CodeSmell Series.

Image of Timescale

Timescale – the developer's data platform for modern apps, built on PostgreSQL

Timescale Cloud is PostgreSQL optimized for speed, scale, and performance. Over 3 million IoT, AI, crypto, and dev tool apps are powered by Timescale. Try it free today! No credit card required.

Try free

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay