## DEV Community

Maxi Contieri ⭐⭐⭐

Posted on • Updated on • Originally published at maximilianocontieri.com

# Code Smell 06 - Too Clever Programmer

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

# 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;
}
``````

## 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;
}
``````

# Detection

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

• Obfuscator

# Conclusion

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

• Declarative

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

## Top comments (7)

Teodor Kulej

You are of course aware that math background promotes using single character names for variables? Also, there are valid (due to historical reasons) short names, like `i` for iterator in a `for` loop?

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.

Tayyab Talha • Edited

There is no difference between wrong and right code.

Ben Coleman

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

Tayyab Talha

Yep you are right

Maxi Contieri ⭐⭐⭐

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

Mohcin Bounouara

In the point.

DEV Community