Code Refactoring: When and When not to

Code Refactoring: When and When not to

·

4 min read

Code refactoring basically involves cleaning up your previously written code without changing its functions. It is a method widely used by developers in cleaning up previously written software code without changing the function of the code at all.

When do you need to refactor?

to refactor .jpg

  • When there are a lot of bugs: When there are bugs to fix, it's usually safer to go through the process of refactoring as fixing bugs without refactoring can lead to the creation of even more bugs. Although, if there are few bugs to fix, refactoring might not be necessary. make sure the code you are going to debug doesn't have too many repetitions and it is quite easy to read.

Code_bug.jpg

  • When you need to make code subject to changes: You know you need to refactor your software codes when you add new features and bugs appear in parts that has full functionality initially. This means your code is faulty. To prevent this, developers must follow principles of test-driven development and behavior-driven development as well as SOLID and DRY principles.
  • When Code is hard to read: The main idea behind refactoring is to improve code readability. You can't have your code looking all jumbled up. As they often say- a good programmer writes code that humans can understand.

Code refactoring might not even be necessary, as long as functions or variables bear names with less ambiguity enough to make it more readable.

understand.png

  • When there’s repetitive code: Code refactoring might be necessary when there is numerous repeated code. This often occurs when several developers work on a different part of the same project and do not realize that there is a code already written by someone else and can be reused.

Such repetition leads to cases where a bug is already fixed in a certain place but not in all others. Repetitions make code clumsy and can easily lead to burn-out.

When not to refactor

Refactoring is an essential part of the development process. However, there are some cases when it is actually not needed and can be regarded as a waste of time if attempted.

not to refactor.jpg

Refactoring might not be necessary when;

  • You need to launch fast: If you are eager to launch your product as soon as possible, then code refactoring might not be necessary.

For instance, you may need to validate your idea or hit the market faster. Refactoring might slow you down in this case so there might be a need for you to ignore. Bugs might be irrelevant here as they can be fixed later.

  • You are not clear on where to move: When dealing with codes that don't look very pretty, especially source codes that are inherited from someone else or inherited from an older version of the software or ones that you don't understand and are difficult to change(legacy codes). In such cases, you are sure that it needs to be modified but you are not sure where to start or what to change to improve it.

Without a clear understanding of how to refactor, any attempt to alter anything can lead to new bugs and complications. Therefore, it is better to leave the code as it is until you are sure of how to refactor successfully without rendering the whole code useless.

  • Your module needs to be revamped completely:
  • When your team can barely understand the code you write
  • You spend more time fixing a bug than creating new features,
  • Your code is too messy and difficult to maintain.

Here, it is much easier to rewrite the module from scratch than to try and refactor.

However, when refactoring is necessary, it is important to apply the Red-Green-Refactor method where refactoring is broken down into three distinct steps:

  Stop and consider what needs to be developed. [RED]
  Get the development to pass basic testing. [GREEN]
  Implement improvements. [REFACTOR]

red-green-refactor.png

In conclusion, consider code refactoring as a way of keeping your code clean and compact. When you have a neatly presented code, you are less stressed because everything is easier to find and modify if necessary. As a form of 'emphasis', it is necessary to know when and when not to refactor your code.