To align assignments or not?

github logo ・1 min read

If you've looked at the code of some well-known maintained C/C++ open source projects, you may have noticed that whenever there are multiple variable assignments they tend to be aligned like this:

first_num      = 1;
second_num     = 2;
third_num      = 3;
fourth_num     = 4;
fifth_num      = 5;
some_other_num = 6;

instead of

first_num = 1;
second_num = 2;
third_num = 3;
fourth_num = 4;
fifth_num = 5;
some_other_num = 6;

This can sometimes also be seen in Makefiles (especially automatically generated ones). But speaking of Java, most IDEs will likely attempt to trim redundant whitespace by default.

So what do you think? Is this style relevant to Java as well?
Also, which one looks more readable to you?

twitter logo DISCUSS (1)
markdown guide

It's certainly easier on the eyes when they are aligned, but IMHO the benefit is negligible or even irrelevant in a modern programming context.

In Java, it's preferred to declare a variable as close to where it is first used, instead of in the beginning of the block. Java developers are also encouraged to constantly refactor code into simpler and smaller methods. So overall there is less chance of having a long list of variable declarations anywhere.

Where we do have a list of variable declarations, most of them tend to be instantiating objects or calling methods, instead of assigning literal values. Java classes and methods tend to have much longer names, so aligning variables doesn't seem like an economic use of space and would mostly cause more unnecessary line wrapping.

Another practical annoyance from aligning variables is, when you need to add a new, longer variable, you'll have to realign all the variables before it. That messes up the commit diff and authorship on those lines. IMHO in programming these days, the readability of commits and line-based blame/annotate can be actually more important than that of the code itself.

Classic DEV Post from Jul 30

Save the planet, clean your mailbox

RedCreator37 profile image
A curious Java and C++ developer spending most of his free time setting up Linux servers.