DEV Community

loading...
Cover image for Code Smell 06 - Too Clever Programmer

Code Smell 06 - Too Clever Programmer

Maxi Contieri
Learn something new every day. - I am a senior software engineer working in industry, teaching and writing on software design, SOLID principles, DDD and TDD.
Originally published at maximilianocontieri.com Updated on ・2 min read

Code difficult to read, tricky with names without semantic. Sometimes using language's accidental complexity.

TL;DR: Don't pretend you are too smart. Clean code asks for readability and simplicity.

Problems

  • Readability

  • Maintainability

  • Code Quality

  • Premature Optimization

Solutions

Examples

  • Optimized loops

Exceptions

  • Optimized code for low level operations.

Sample Code

Wrong

function primeFactors(n){
  var f = [],  i = 0, d = 2;  

  for (i = 0; n >= 2; ) {
     if(n % d == 0){
       f[i++]=(d); 
       n /= d;
    }
    else{
      d++;
    }     
  }
  return f;
}
Enter fullscreen mode Exit fullscreen mode

Right

function primeFactors(numberToFactor){
  var factors = [], 
      divisor = 2,
      remainder = numberToFactor;

  while(remainder>=2){
    if(remainder % divisor === 0){
       factors.push(divisor); 
       remainder = remainder/ divisor;
    }
    else{
      divisor++;
    }     
  }
  return factors;
}
Enter fullscreen mode Exit fullscreen mode

Detection

Automatic detection is possible in some languages.
Watch some warnings related to complexity, bad names, post increment variables, etc.

Relations

Also Known as

  • Obfuscator

Conclusion

Too clever developers write cryptic code to brag. Smart developers write clean code.
Clear beats clever.

Tags

  • Declarative

More Info

Boolean Flags

Credits

Photo by NeONBRAND on Unsplash


Programming can be fun, so can cryptography; however they should not be combined.

Kreitzberg & Shneiderman


This article is part of the CodeSmell Series.

Last update: 2021/06/08

Discussion (6)

Collapse
tayyabtalha profile image
Tayyab Talha • Edited

There is no difference between wrong and right code.

Collapse
oloryn profile image
Ben Coleman

Refresh the page. This appears to be a bug in (at least) the Android DEV app.

Collapse
tayyabtalha profile image
Tayyab Talha

Yep you are right

Collapse
mcsee profile image
Maxi Contieri Author

From a machine point of view it isn't. The semantic parsing trees are equivalent

Collapse
dakujem profile image
Andrej Rypo

The code in the "wrong" example is not being clever at all. It's just obfuscated. That kind is typically written by juniors trying to look smart.
I'd swap the "A.K.A." section with the headline.

Collapse
bn_geek profile image
Mohcin Bounouara

In the point.