Solid Principles
-
Single Responsability
Una clase de tener una sola razon para cambiar
Frase popularizada por Robert C. Martin en su libro
Clean Code
se refiera a que cada clase debe hacer una sola cosa y hacerla bien.<button class="button button--secondary"> Soy Un Boton </button>
.button { border-radius: 2rem; } .button--secondary { background-color: grey; color: black; }
no dejar que entren codigo que pueda limitar y desviar el proposito de la clase
. -
Open-Closed
La entidades de software deben estar abiertas para extensión pero cerrada para modificación.button { border-radius: 2rem; } .button--secondary { @extend .button--sm; background-color: grey; color: black; }
.
-
Liskov Subtitution
Propuesto por Barbara LiskovUn objeto puede ser reemplazado por un subojeto sin romper el programas
-
Una clase derivada debe poder ser utilizada en lugar de la clase base sin romper el comportamiento esperado del programa.
<button class="button--secondary"> Soy Un Boton </button>
.button { border-radius: 2rem; } .button--secondary { @extend .button; background-color: grey; color: black; }
.
-
-
Interface Segregation
No se debe obligar a ningun codigo a depender de metodos que no utiliza.
Una interfaz debe ser específica y contener solo los métodos que sean relevantes para las clases que la implementan. No se deben forzar a las clases a implementar métodos que no necesitan, ya que esto podría llevar a una dependencia innecesaria y acoplamiento entre clases..button { border-radius: 2rem; } .button--secondary { @extend .button; background-color: grey; color: black; border-radius: 1.5rem; }
.
-
Depency Inversion
Modulos de alto nivel no deben depender de modulos de bajo nivel. Ambos deberian depender de abstracciones.
Este principio facilita la reutilización del código, ya que los módulos pueden ser intercambiados o extendidos más fácilmente a través de las interfaces, sin alterar la lógica general del sistema.
❌.card div .title { font-size: 2rem; }
✅
.text-md { font-size: 2rem; }
.
Don’t Repeat Yourself
Reducir la repeticion de código
❌
.card {
display: flex;
justify-content: center;
align-items: center;
border: 1px solid grey;
width: 100%;
height: 20rem;
}
.card div {
display: flex;
justify-content: center;
align-items: center;
padding: 2rem;
}
✅
.center {
display: flex;
justify-content: center;
align-items: center;
}
.card {
@extend .center;
border: 1px solid grey;
width: 100%;
height: 20rem;
}
.card div {
@extend .center;
padding: 2rem;
}
.
Inmutability
Objeto cuyo estado no puede ser modificado una ver creado.
. card p {
color: black;
}
.grey {
color: gray !important
}
<div class="card">
<p class="grey">Grey y su padre card</p>
</div>
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?