The first time I hear about the concepts of Refactoring and Design Patterns is in the course CS492 Mobile Software Development. The course taught me some knowledge about how to write code without smells and how to use Singleton (a very popular design pattern) to write maintainable database code. The idea behind it is to centralize database code in a singleton database manager class to ensure that only one instance of an object may exist. Recently, I found an interesting website occasionally, Refactoring Guru, which introduces Refactoring and Design Patterns in a very interesting way.
My thought about Refactoring and Design Patterns
Before talking about Refactoring Guru I want to share a bit of my thought about Refactoring and Design Patterns. In the past, almost every project I worked on is a school individual project. Most time I spent on those projects was focused on functionalities. So I have to admit that I didn’t develop good coding habits. Recently, I went back to check the code of my previous projects. There are much obvious code smells such as one method doing many tasks, inconsistent code styles (some variables use camel case, and others use snake case), comment-out codes and etc. Along with time, I found that I even didn’t understand some parts of the code I wrote before. It reminds me of the topics about Refactoring and Design Patterns.
Intro Refactoring Guru
Refactoring Guru is an interesting website I found recently. I was attracted by this website when a first opened it. I felt that I was reading an electric comic book because it includes many comic illustrations. Containing many interesting illustrations doesn’t enough to make it stand out. It also explains every design pattern clearly and detailed. Each post content includes the problem this pattern intends to solve, how to implement, pseudocode, pros & cons, relations with other patterns and etc. Besides, there are lots of images and graphs included to help users better understand. In addition, for each design pattern, there are code and usage examples in popular development languages (Python, C++, Java, PHP…etc.).
Like many beginners in software development, I put my most effort into how implementing functionalities in a smart and effective way. However, writing clear and tidy code is also important, especially in real-world team projects. Learning refactoring and design patterns could help me to become a more professional developer.