Archivo de la etiqueta: Sobreingeniería

¿Qué es Overengineering (sobreingeniería)? (en typescript)

Y tu me preguntas «¿Qué es Overengineering (sobreingeniería)?» ….sobre ingeniería eres tú ….cacho de cabr…..de chico de oro .

El siguiente ejemplo es un ejemplo en la vida real, escrito en typescript el cual esta repartido por mas de 5 ficheros pero he resumido en 1 solo bloque de código y además he anonimizado….porque se dice el pecado pero no el pecador ni el sitio pecaminoso donde se esta cometiendo el pecado.

interface InterfaceA<T> {
a: number;
b: string;
c: T[];
}

interface InterfaceB {
d: number;
e: boolean;
}

abstract class D<T> {
public g: T;
constructor(g: T) {
this.g = g;
}
}

abstract class B extends D<number> implements InterfaceB {
public d: number;
public e: boolean;

constructor(d: number, e: boolean) {
super(13);
this.d = d;
this.e = e;
}
}

class A<T extends B> implements InterfaceA<T> {
public a: number;
public b: string;
public c: T[];

constructor(a: number = 666, b: string = 'a', c: T[]) {
this.a = a;
this.b = b;
this.c = c;
}
}

interface InterfaceC {
f: number;
}

class C extends B implements InterfaceC {
public f: number = 0;
constructor(d: number, e:boolean) {
super(d, e);
}
}

const a = new A<C>(111, 'b', [new C(222, false)]);

console.log(a);

 

Y el objeto que genera es:

A: {
  "a": 111,
  "b": "b",
  "c": [
    {
      "d": 222,
      "e": false,
      "g": 13,
      "f": 0
    }
  ]
} 

El código original es para mapear una fila de una base de datos de una tabla de postgresql (que bueno da lo mismo este dato) que tiene un campo tipo que sería el que hace A extienda de B (porque en el código original hay B1, B2, B3…) y otro campo id que sería el T de la clase D para por si acaso el id de la tabla no es un UUID y es un autonumerico u otra cosa.

Puñetera sobreingenieria…..me gustaría decir mas tacos, me gustaría decir como decía un compa llamado Alex que hay gente que le gusta sacar su polla gorda a paseo por sentirse superiores en vez de hacer los proyectos mantenibles, o me gustaría decir lo que mi amigo G (anonimizo) que mucha gente esta tirando de IAs para escribir el código en vez de picarlo ellos mismo y les da lo mismo si salen 3 o 100 lineas….pero yo que se prefiero pensar bien y que es simplemente código bola de caca de elefante que la gente en vez de hacer bien las cosas, pega otra mierda mas al proyecto le da vueltas para que quede aplanadito y redondo y a correr que hay presión por hacer un sprint perfecto….y que no hay maldad.

https://commons.wikimedia.org/wiki/File:Dung_beetle_1.jpg
https://commons.wikimedia.org/wiki/File:Dung_beetle_1.jpg