The path to clean and understandable code: What is refactoring?

Posted by Denny F.
7
Sep 8, 2021
291 Views


In the developer community, you can hear a lot about different technologies like https://iwanta.tech/technologies/php/ as well as about refactoring. What is this process? Why is it needed? And why is it given so much attention? We explain it in the article.

Take a cafe as an example

Let's imagine that we opened our own cafe, equipped it with excellent cuisine, and hired an experienced chef. In the beginning, we only included the simplest dishes on the menu so that they could be reheated in the microwave. Next to the microwave, a rack was placed for the necessary utensils.

A couple of months later, when things got better, we added flour products to the menu. We bought an oven, installed a tray rack next to it. There is less free space in the kitchen, the cook has to go around the counter and constantly step over the wires, but in general, this does not interfere with the work.

After some time, a deep fryer with a mixer for kneading the dough was installed. There are more wires. Another closet appeared next to it. A second chef was added to the staff. As a result, chaos formed in the kitchen: a pile of furniture and equipment, it became very inconvenient to move around and prepare dishes. If we decide to install a new stove, the situation will worsen significantly, because there is a sore lack of space, although it would seem that the area allows everything to be placed.

Then the kitchen designer comes along, re-creates the design, and puts all the tables, cabinets, and gadgets in their places. Now a completely different situation reigns in the kitchen: the equipment does not interfere with the work of the cooks, the wires are neatly hidden in the boxes, and the counters do not block the passage.

At the same time, nothing has changed for visitors: we have optimized only the kitchen – everything on the menu remains the same. This is called refactoring – when changes are made exclusively to the internal part, and, although it is not visible from the outside, further work is greatly facilitated.

In development, code refactoring means a change in it that does not affect functionality but makes it better readable and facilitates further support.

When programming refactoring is needed

There are two types of refactoring: planned and on-demand.

Refactoring, which is initially laid down by programmers in the development cycle, is called planning. For example, it might be scheduled every 6 months or every 4 splits.

In large companies, where there is usually a lot of legacy code, in general, separate teams are formed that are exclusively engaged in refactoring old stuff. This makes it easier and faster for other teams to understand what is going on in this code and how to use it.

The second option is refactoring as needed. It is used when it becomes difficult to add new features to old code. Then we suspend the process and set aside some time to reorganize what was.

Important points when refactoring

How do you know if your refactoring was successful? Easily: if the result is cleaner, simpler, and more understandable code.

For example, if variable A is responsible for the number of customers, then it is desirable to name it customer Count – this will make the code easier to understand.

If a fragment is used several times, it should be styled as a separate function/method. This will make it easier to make changes in the future – to update one place, and not search for the same fragments in all lines.

For better readability of the code, large functions that do not fit entirely on the screen are divided into somewhat less bulky ones. Sometimes some functions are generally transferred to a separate file and then attached to the code.

You need to understand that refactoring is not synonymous with optimization. Its purpose is to make the code clearer, and optimization is needed to speed up and improve the efficiency of the program.

Is it possible to do without refactoring?

Of course, refactoring is optional. But the longer you avoid it, the harder it will work. It's like cleaning a workplace: the longer you don’t put things in order, the more inconvenient it becomes to work. Regular refactoring saves you from slowdowns in further development and thus makes life easier for large teams. Only small and slowly developing products can do without it.

Comments
avatar
Please sign in to add comment.