Most programmers spend more time reading code than they do writing new code. It is important, then, to write code in such a way that it is easy to read and understand.
Consistency goes a long way to help with this, but there is more to consistency than naming conventions and bracket placement.
Have you ever seen a table of contents like the one below?
- Chapter 1. The Beginning
- Chapter 2. John wasn’t paying attention when he modified the class. He failed to notice that the code was organized so that details of the multistep process were abstracted into a method calls. John introduced details of a new step alongside calls to the methods that nicely summarized the other steps. Fortunately, his team caught the inconsistency during code review.
- Chapter 3. A Lesson Learned
- Chapter 4. The Conclusion
It appears that someone provided too much detail for Chapter 2’s description relative to the other chapter descriptions.
Now consider the code below:
public List<string> GetTopTenBooks() {
var bookTitles = GetBookTitles();
if(bookTitles.Count > 10)
bookTitles = SortByRating(bookTitles).Take(10);
SortAlphabetically(bookTitles);
return bookTitles;
}
A method called TakeTenHighestRatedBooks that is called in place of the if-statement would hide the details of the ranking and truncation step and keep the code in the GetTopTenBooks() method at a consistent level of detail.
This is called code stratification. It is achieved when methods and classes have a consistent level of abstraction.