Code Smell 128 — Non English Coding

TL;DR: Stick to English. Always.

Problems

  • Polymorphism
  • Cultural gaps
  • Mixed Code
  • Syntactic Errors

Solutions

  1. Write in English
  2. Rename Domain Concepts to English

Context

All programming languages are written in English.

Unless for a few failed experiments during the 90’s all modern languages use English for their primitives and their frameworks.

if you wanted to read or write in medieval Europe, you had to acquire a new language at the same time. Writing meant Latin.

This is true for programming languages nowadays.

I am not a Native English speaker.

My code (tries to be) in English.

Sample Code

Wrong

const elements = new Set();elements.add(1);
elements.add(1);
elements.size() = 1
//This is the standard set
var moreElements = new MultiConjunto();
//We defined a multiset in Spanish
//because we are extending the domain
moreElements.agregar('hello');
moreElements.agregar('hello');
//'agregar' is the Spanish word for 'add'
moreElements.size() = 2 //Since it is a multiset//elements and moreElements are NOT polymorphic
//I cannot exchange their implementation

Right

const elements = new Set();elements.add(1);
elements.add(1);
elements.size() = 1
//This is the standard set
var moreElements = new MultiSet();
//We defined a multiset in English
moreElements.add('hello');
moreElements.add('hello');
moreElements.size() = 2 //Since it is a multiset//elements and moreElements are polymorphic
//I can exchange their implementation anytime

Detection

[X] Automatic

Most IDEs and linters have a thesaurus.

We can search for foreign words.

Tags

  • Readability

Conclusion

Don’t mix Non-English domain words with English primitives.

Even when Mapping your real-world entities, use plain English.

More Info

Credits

Photo by Anna Vander Stel on Unsplash

A programming language is a tool that has a profound influence on our thinking habits.

Edsger Dijkstra

--

--

--

I’m a senior software engineer specialized in declarative designs. S.O.L.I.D. and agile methodologies fan. Maximilianocontieri.com

Love podcasts or audiobooks? Learn on the go with our new app.

Recommended from Medium

Honestly looks very well structured, welcoming and detailed without feeling like too much…

k8s kind

Virtual Environments for Python

[LeetCode]#1002. Find Common Characters

General Motors (NYSE)

How to quickly build a website using Tailwindcss and Tailblocks

Grin Community Collaboration to Bring Mimblewimble to Nervos

Image with logos for Nervos Network and Grin

The Real Power comes with iorad LIVE!

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Maximiliano Contieri

Maximiliano Contieri

I’m a senior software engineer specialized in declarative designs. S.O.L.I.D. and agile methodologies fan. Maximilianocontieri.com

More from Medium

Code Smell 129 — Structural Optimizations

Programmers’ 10 most controversial opinions

We’ve Been Teaching Object-Oriented Programming All Wrong (Part 1)

I can’t read my code