Good developers are defined by the quality of their codes. Writing good code in the software business Good developers are defined by the quality of their codes. Writing good codes in the software business means to avoid spending money on testing, updating, expanding, or fixing bugs.
What is refactoring and why do we need It?
Refactoring refers to methods and techniques that support the creation of clear codes. Other developers will benefit from this because they can read, modify, and reuse the code without having to make many changes.
Never refactor a production code that does not have unit tests
My first piece of advice is to never begin refactoring legacy code that lacks proper unit tests. The obvious reason, is that you will have malfunctioning functionality that is challenging to fix because you won’t be able to identify what is malfunctioning. Therefore, test it first before refactoring it if you need to. Make sure the tests are covering the part of the code you are going to refactor.
Start refactoring from the deepest point of your code
Take a look at the next picture. This is a real project for a hotel management system that I found on Github. This is a real open source project so the closed source can be worst. There are three levels in this method, as indicated by the red markings. The nested if/else clause inside the initial if condition ought to be the deepest point. Typically, the deepest point concentrates on a single logic, which makes refactoring simpler.
Divide your methods into smaller ones, configuration files, or database tables to shorten them
Maybe, in this case, we can extract it to a private method as following:
The retrieval of post data and loading of views will be the next deepest point. After refactoring the other components, take a look at the method add() now. It is much more readable, testable, and clean.
Use meaningful names for your methods, variables and tests
You can see two methods from the hotel management system called “room m()” and “index()” in the example below. I am unable to determine what they are trying to accomplish. If their names were more evocative, I believe it would be simpler to understand.
Make the most of your programming language's capabilities.
Many programmers fail to take advantage of all that their chosen programming language has to offer. A lot of these features can help you save time and effort while strengthening your code. Look at the following examples to see how type hinting can be used to easily achieve the same result with less code.
I’d like to wrap up by offering a few more quick suggestions for better coding:
•Use a new array form  instead of the old one array().
•Unless it is crucial to ignore the dataType check, use the === operator in place of the == operator.
•Public methods should always have short, descriptive names. Private methods can have longer names because their scope is constrained.
•Use descriptive names for single class methods like addUser() or addDocument() instead of general names like add() for methods that implement interfaces ().
•Remove unused methods from your classes.
•With functions that return booleans, such as isAdmin($user) and hasPermission($user), use the prefix is/has.
•In class methods and properties, access modifiers must always be used. (Public, private, protected)
Organize classes methods where public methods are on the top.