¿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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Información básica sobre protección de datos:

Responsable: Miguel de Dios Matías

Finalidad de la recogida y tratamiento de los datos personales: Responder a los comentarios enviados a través de la web

Legitimación: Consentimiento del interesado/a.

Destinatarios: No se comunican datos a terceros

Derechos: Podrás ejercer tus derechos de acceso, rectificación,  limitación y suprimir los datos en este formulario  así como el derecho a presentar una reclamación ante una autoridad de control.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.