What is the best approach to implementing SOLID principles in real-world projects, and in which situations are they most effective for improving code quality?