Reglas del dise帽o simple

2/24
Recursos

Aportes 17

Preguntas 1

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

4 reglas del dise帽o simple

  1. El c贸digo pasa correctamente los test.
  2. Revela la intenci贸n del dise帽o. El c贸digo debe autoexplicarse.
  3. Respeta el principio DRY: 鈥渄on鈥檛 repeat yourself鈥, no repitas c贸digo.
  4. Tiene el menor n煤mero posible de elementos. 1 funci贸n = 1 acci贸n.

Clase 2: 4 reglas del dise帽o simple

  • El c贸digo pasa correctamente los test. -> Buenos test ayuda al c贸digo a garantizar la seguridad en funcionamiento
  • Revela la intenci贸n del dise帽o. El c贸digo debe autoexplicarse. -> Tu c贸digo tiene que hablar por s铆 mismo, revelando cu谩l es la intensi贸n de ese m茅todo, esa variable, esa funci贸n. Etc.
  • Respeta el principio DRY: 鈥渄on鈥檛 repeat yourself鈥, no repitas c贸digo. -> No te repitas a ti mismo, no repitas fragmentos de c贸digos
  • Tiene el menor n煤mero posible de elementos. 1 funci贸n = 1 acci贸n. -> Mas simple sea tu c贸digo es mejor
En alg煤n lado he escuchado lo siguiente: "Escribimos c贸digo para personas, no para m谩quinas." Esto haciendo referencia a que podemos escribir el c贸digo con las peores pr谩cticas de todas forma la m谩quina lo va a entender, no as铆 en el caso de una persona.

Mantener la regla de DRY (Don鈥檛 Repeat Yourself), NO siempre es sencillo. En muchos blogs he visto, esto casi siempre se refiere a modularizaci贸n del c贸digo (dividir nuestro c贸digo en funciones m谩s especificas). Y aunque esto es correcto, es solo la primera parte de esta regla.
.
Existen muchas otras variantes para aplicar esta regla que no son siempre 鈥渙bvias鈥 al momento de escribir c贸digo. Por ejemplo, considera las siguientes funciones:
.

function sortNumArr(arr, asc = 1) {
  return arr.sort((a, b) => {
    let result = 0;

    if (a > b) result = asc ? -1 : 1
    if (b > a) result = asc ? 1 : -1

    return result;
  });
}

function sortPeopleArr(peopleArr, asc = 1) {
  // Arr of person obj
  // { name: string, age: number }
  return peopleArr.sort((a, b) => {
    let result = 0;

    if (a.age > b.age) result = asc ? -1 : 1
    if (b.age > a.age) result = asc ? 1 : -1

    return result;
  });
}

.
Hace exactamente lo mismo, estan ordenando un array de datos, ya sea de primitivos o de objetos. En este caso, no se esta respetando la regla de DRY.
.

驴C贸mo lo solucionamos? Con una abstracci贸n

Vamos a crear una funci贸n que haga el algoritmo de ordenamiento, mientras que en uno de los argumentos le vamos a pasar el detalle, dependiendo del tipo de dato, al final queda algo como esto:
.

function sortGeneralArr(comparator, asc = 1) {
  return function (arr) {
    return arr.sort((a, b) => {
      let result = 0;

      if (comparator(a, b)) result = asc ? -1 : 1;
      if (comparator(b, a)) result = asc ? 1 : -1;

      return result;
    });
  };
}

const sortNumArr = sortGeneralArr((a, b) => a > b);
const numSortedArr = sortNumArr(numArr);

const sortPeopleArr = sortGeneralArr((a, b) => a.age > b.age);
const peopleArrSorted = sortPeopleArr(peopleArr);
Para m铆 es esta la regla m谩s importante **Respeta el principio DRY: "don't repeat yourself" junto con la ortogonalidad**
Siempre es mejor prevenir un mal codigo que pasar demasiado tiempo intentando entederlo y refactorizando Las 4 reglas del dise帽o simple 1. El c贸digo debe pasar correctamente todos los test. 2. El c贸digo debe hablar por si mismo 3. Dont Repeat Yourself 4. Tener el menor n煤mero posible de elementos.

Para mi ser铆a revela la intenci贸n del dise帽o, de esta manera cualquier desarrollador que lea el c贸digo pueda entender de la mejor manera lo que hace ese fragmento de c贸digo

yo pienso que es el de test

Puede ser muy te贸rico lo que menciona, pero a la hora de hacer un proyecto es sumamente importante tener en cuenta estos puntos.
As铆 que esto va para: #developers #softwareengineers

Feedback
Pareces una robot we, por fa mejora tus habilidades de oratoria, se nota desde la esquina que est谩s leyendo, esto por ende se le quita calidad y credibilidad al curso, te tienes que apropiar de tus palabras y de los conocimientos que tienes afianzados.

La regla m谩s importante es seguir el principio DRY, hay c贸digos que repiten las mismas funciones, adem谩s casi siempre lo hacen por estar violando el 煤ltimo principio, de que una misma funci贸n haga muchas cosas, empiezan a copiar y pegar y modificar un solo parametro, lo que se debe hacer es el principio cl谩sico "Divide y vencer谩s" asi mantenemos correctamente el DRY.
Buenas, para mi, el principio mas importa es pasar correctamente todos los test

Para mi sin dudas, la regla mas importante, sin quitarle el m茅rito a las dem谩s es 鈥淩espeta el principio DRY (don鈥檛 repeat yourself)鈥. Al reutilizar c贸digo dentro de nuestro proyecto desde un m茅todo, estamos haciendo que este sea mas estable y mantenible.

hay profes demasiado geniales !!

Pienso que cada regla del dise帽o simple aporta demasiado como para definir una m谩s importante que otra porque est谩n muy ligadas entre s铆. Revelar la intenci贸n del dise帽o se logra de una manera eficaz a menor cantidad de elementos contenga y procesos simples existan, para ello se debe respetar el principio DRY. A su vez, un c贸digo que no pueda ser probado eficientemente puede conducir a una equivoca interpretaci贸n de la intenci贸n.

Uy, esta dif铆cil decidir la mas importante, dir铆a que la separaci贸n de responsabilidad

Revela la intenci贸n del dise帽o.