Today I wanted to talk about new kinds of benefits you can get from Refactoring. Everyone knows that refactoring is the process of simplifying and clarifying code without changing the program’s behavior. The benefits include making the developer more productive by providing tools to automatically clean up the code. Some of you may be aware of the common refactoring such as “Rename” to rename a variable, parameter or function in your code. Or Extract Function to create a function call and body based on some selected code.
These are great and provide important value but imagine now being able to get additional benefits of reduced compile times and reduced system size in addition to the increased maintainability and reduction of complexity. All this with a “Optimize Headers” refactoring.
For those who write Java code know of a similar refactoring called “Optimize imports”. The optimize headers refactoring is for C/C++ code to optimize your include directives. Specifically it is looking for extra includes and missing transitive issues. For extra includes you need to analyze the system build structure for that file and identify if any identifiers from the included file are used. If not then simply remove. That will reduce your build time, system size and clean up your include structure.
Missing transitive include issue is something that consists of 3 or more files. For example file A includes B, then B includes C. But if file A is not using anything from B then you should remove that include and replace it with C (because file A uses identifiers from C).
I’ve added a video that shows how this is done with Eclipse. So if you thought refactoring is just about code reuse and maintainability think again.