AI products have revolutionized software development or coding in modern times. Using AI, we can generate programming codes automatically and correct and optimize them through Code Refactoring. In this article, we explore the refactoring process and see how you can use Copilot to Refractor Code.
What is Code refactoring?
In software or application development, Code Refactoring refers to reconstructing or rearranging the program source code while maintaining its original functionality. The process aims to improve the software’s structure and design and reduce complexity. The integration of AI into code refactoring has helped us promptly identify software performance issues and ease out complex algorithms to improve overall efficiency.
How can Copilot help in refactoring codes?
It can analyze a particular section of the code and provide suggestions to improve its structure to a cleaner and user-friendly format to reduce the complexity. The recommendations provided are based on the following:
- Identify problems with the existing code: Copilot scans the entire code file to highlight the sections or areas to be refactored by pointing out duplicate codes, unused or unclear variables, etc.
- Suggest efficient options: When refactoring code, Copilot analyzes the existing code and suggests efficient alternatives that can produce the same results but make the code look cleaner. These recommendations include efficient language use for naming variables, methods, and data structures.
- Ensure maintainable code: Real-time feedback helps us avoid the inclusion of any bugs. The suggestions generally are based on the best practices of programming principles that can help maintain proper code structure, making it easier for others to understand and modify the same if needed.
How to use Copilot to Refractor Code
To use Copilot for refactoring, we can start by installing the GitHub Copilot extension for the concerned language (VS Code, Python, etc.). For example, if we want to reconstruct a source code written in Python, we can install the Copilot plugin by:
- Click to open the Settings option in the Integrated Development Environment or IDE ( JavaScript or Python).
- Click on the plugin option on the left.
- Click on the Marketplace option and search for the GitHub Copilot plugin.
- Once located, click on Install to install the plugin.
- The IDE will prompt for a restart once the installation is completed. After restarting, open the IDE and click on Tools -> GitHub Copilot -> Login to GitHub.
- After successful login, Copilot will be ready for use.
- To use Copilot, the below shortcuts can be used while writing the code
Action | Windows/Linux | MacOS |
Trigger inline suggestions | Alt+\ | Option+\ |
See the next suggestion | Alt+] | Option+] |
See the previous suggestion | Alt+[ | Option+[ |
Accept a suggestion | Tab | Tab |
Dismiss an inline suggestion | Esc | Esc |
Show all suggestions in a new tab | Alt+Enter | Alt+Enter |
Related: How to View Code downloaded from GitHub
Example 1: To simplify a complex code
Let us consider the code snippet below to demonstrate how a complex code can be simplified using the Refactoring feature of Copilot. Here, we are considering only a part of a larger program for ease of understanding:
Before Refactoring
public void processOrder(Order order) { // ... further codes if (order.isReadyForProcessing()) { // process the order } //... further codes }
After Refactoring with Copilot
public void processOrder(Order order) { // ...further codes processReadyOrder(order); // ...further codes }
private void processReadyOrder(Order order) { if (order.isReadyForProcessing()) { // process the order } }
In the above example, the first set of codes ( Before Refactoring) consists of a function or method named processOrder, which performs the steps for processing a particular order. Before the order is processed, the conditional IF statement checks if the order is ready for processing or not using the if (order.isReadyForProcessing()) function. In this set of codes, the processing logic is included inside the primary function, making it less modular.
In the following code snippet, we have the processOrder function to process the order. However, the logic of checking if the order is ready for processing and processing the ready order has been moved to a separate function named processReadyOrder. This helps isolate each method to provide clarity and modularity to the code.
Example 2: Variable renaming
Before Refactoring
def calculate_area(l, w): return l * w
After Refactoring with Copilot
def calculate_area(length, width): return length * width
After refactoring, though, the variables “l” and “w” were replaced with length and breadth, which added to the clarity of the code through variable renaming as an essential feature of refactoring.
Even though Copilot can help us reconstruct the code, it has several limitations, such as incorrect suggestions, overreliance, and refracting outdated codes. Once you have its suggestions, ensure you go through all manual checks and use the right prompts.
What data has GitHub Copilot been trained on?
GitHub Copilot has been trained on natural language text and source code from publicly available sources, including code in public repositories on GitHub. It is powered by generative AI models that GitHub, OpenAI, and Microsoft developed.
Read: How to use Microsoft Copilot on Mac
What are the compatible programming languages for Copilot?
Github Copilot supports various languages but works particularly well with JavaScript, TypeScript, Ruby, Python, Go, C++, and C#.