I recently got put onto a project with code from another dev house.

The problem I have with the code isn’t the fact that it’s from another dev house. It’s usually got to do with the fact that the processes, testing, variable naming etc… are completely different, or non-existent.

In my case it was quite clear that they had no processes or standards in place. Obviously there were no tests either. Needless to say there have been points where I was completely overwhelmed.

Fortunately I happened upon this talk by Martin Fowler (which I really enjoyed and think is definitely worth watching), where he goes into his ideas on refactoring. He reminded me that small incremental changes go a long way in improving code.

I would now like to take you through the process I went through of refactoring code by simply changing variable names. This will hopefully show you how changing variable names can be a game changer (and save lives by reducing cardiac arrest cases :P)

Okay, so below is the blob of code that was left behind.

Cardiac arrest waiting to happen

WTF.

Yeah that was my thought too. Where do I even begin? At the beginning of course — Line 1:

Object.keys(data).sort().map((item, key) => {

So we’re taking an object called data (WTF IS DATA?), sorting it and mapping over each of its keys (which has been called item — WTF IS ITEM?).

I hate the word data in this case because it is not apparent what this data is. This becomes doubly worse when you use item because now you don’t know anything about two variables.

Hence I did what I think everyone should do and renamed data and item into more relevant names:

Object.keys(productionDays)      
  .sort()      
  .map((productionDay) => {

It turned out that data was in fact all the days of a production, hence productionDays. It therefore makes sense to call an item of productionDays a productionDay. I removed the key because it wasn’t actually necessary. (I find that moving the different functions into different lines also really improves the readability of code as is the case in the above — usually a linter will do this for you automatically, which is something I highly recommend).

Now that we actually know what the context is that we are working in we can march forward!

#developer #professional #clean-code #variables #javascript

Variables Naming Saves Lives
1.85 GEEK