Basic SOLID: must to do

Basic SOLID: must to do

SOLID principles are an essential base of software engineering because they give recommendations for projects on how to change and add new functionality without breaking existing code and creating bugs, save maintainability and easy understandable software.

SOLID principles are:

  • Single responsibility principle
  • Open/closed principle
  • Liskov substitution principle
  • Interface segregation principle
  • Dependency inversion principle

Using all 5 principles at the same time may be complicated (with good or bad consequences) and is not necessary for quality software, but there is an approach on how to deal with common software engineering problems. These principles should be applied depending on the actual problem and situation.

Let’s start with an overview of each of 5 principles.

  • Single responsibility principle: 1 class - 1 aim

With time, the complexity of class will grow dramatically and it will cause code redundancy, maintaining difficulties and as a result higher code breaks probability.

Write the class with the 1 only aim, for more - extend super class with subclass.

Avoid tight coupling!

Tight coupling is the state of a system where the components are highly dependent on each other. Better use loose coupling (state of a system where components are independent).

  • Open/close principle: add to class - yes, change - big no

Don’t change the class, add new functionality to it with subclass.

Stop breaking other parts of software that are dependent on the piece of code you change. If new functionality for your software, add it but don’t erase the existing versions.

  • Liskov substitution principle: while extending the super class, subclass behaves like parent class and does not alter superclass behavior

Similarities in behavior are:

  • Subclass takes the same parameters, returns the same, throws (or not) the same errors.
  • Subclasses don’t change (generally) conditions and results to save behavior predictable.
  • Always true conditions or relations of superclass must be preserved.
  • Subclass can’t change private fields of superclass.

Read more about Liskov substitution principle.

  • Interface segregation principle: tiny interface - yes!

Don’t add a lot of not necessary functionality in 1 class, break it in many ones.

  • Dependency inversion principle: high-level class depends on low-level class - no, low-level depends on abstraction - yes!

This way dependency “high-class -> low-level class” is changed to “high-level class -> abstract class <- low-level class”.

High level classes has high-level abstraction classes and low-lever classes depend on high-level abstraction class.


Source: DEV.to / Julie Cherner


Daniel Davidov

Freelance Product Designer I Passionate about accessibility in design

5 个月

???? ??? ?? ??????! ?????? ?? ????? ??? ?????? ??????: https://chat.whatsapp.com/HWWA9nLQYhW9DH97x227hJ

回复
Yossi Shwartz

Junior SEO & B.Sc. in Digital Communication and Marketing

6 个月

???? ??? ?? ?? ???????? ??????? ?? ????? ??? ?????? ??????: https://chat.whatsapp.com/DsQ1OBdSeGsBd6rKgnnE1L

回复
Netanel Stern

CEO and security engineer

6 个月

???? ??? ?? ?? ???????? ??? ???? ???? ????? ???? ?????? ???: https://chat.whatsapp.com/DsQ1OBdSeGsBd6rKgnnE1L

回复
Yossi Kessler

Freelance Mechanical Designer

6 个月

???? ??? ?? ?? ???????? ??????? ?? ????? ??? ?????? ??????: https://chat.whatsapp.com/DsQ1OBdSeGsBd6rKgnnE1L

要查看或添加评论,请登录

社区洞察

其他会员也浏览了