Interface segregation principle (ISP) says that clients should not be forced to depend upon interfaces that they do not use. Practically that means that we should have rather small interfaces with just few (or even one) methods than fat interfaces with many methods. In this blog post I will explain what ISP is and what relationship it has with Liskov substitution and single responsibility principles.
You can't get any idea of what Liskov substitution principle (LSP) is from its name. And its definition is hard to understand. But when you dig into it you'll find that it is quite important and not that difficult principle. It has a relationship with open/closed principle and contract by design. LSP guarantees that every object of subclasses behaves just like superclass. In this blog post I will explain what LSP is and how it helps to make better code.
"Software entities should be open for extension, but closed for modification" is the definition of open/closed principle. I learned a lot while writing this blog post. For example I learned what relationship does open/closed principle have with strategy pattern. I will explain also it beside I explain what is the open/closed principle. This is the 2/5 blog post from SOLID serie. It was worth to write!
Single responsibility principle (SRP) is a good way to write better code that is easier to maintain and read. In this blog post I have written what is SRP and why you should write code applying SRP. This is the first blog post from SOLID serie. Reason to write this serie was to deeply learn what SOLID is and master it.
This is a book about how to detect bad code from code base with the help of code's history from git. I was surprised how simple things and techniques book uncovered about code quality. The key point is the time. We shouldn't do just static analysis from our current code but analyze how our code has lived and progressed. Tornhill calls this behavioral code analysis. I will explain some interesting things from the book, like hotspot analysis and what are surprises in code and why they can be really expensive. After reading the book I understood how to improve code quality cost-effectively.
I recently read a great book The DevOps Handbook by Gene Kim et. al. (must read for every developer!) where I first time read about heroic efforts and why they are bad things. Even if I had faced them before this was the first time I realized them and that they block automatic deploys. Start to decrease your heroic debt from today to automate you deploys.
Unit tests are my passion. I always write them and I also encourage others to write them and even have taught developers to write unit tests. But I am quite surprised how often developers don't write unit tests. There is a lot of benefits for writing unit tests. In this blog post, I will explain three main reasons why every developer should always write unit tests.
This is the third and last part of my code review related blog post series. Reviewing code is an important task where you can give feedback to the programmer. If you do it right, the programmer can learn something and code quality will be better. In this blog post I wrote how you can review the code better and more effectively.
In the previous blog post, I wrote about why you should do code reviews. This time I wrote about how code reviews should be created. Code review's author has an important part to make review successful. With these best practices review of your code will be better.
Code reviews are something I really value high. In my opinion, every software development team should do code reviews. In brief, the reason is learning and sharing knowledge and code quality. In this blog post, I will explain why.