Posteriormente a consultar expertos en la materia, programadores de varias ramas y profesores hemos dado con la solución al dilema y la dejamos plasmada en esta publicación.
Solución:
Cuando tiene código repetido, hay varias formas de evitar la repetición que equivalen a extraer la parte común y aún permitir que varíe la parte variable. Véase, por ejemplo, Evitar la repetición.
Poco es exclusivo de Apex: se trata más de estas ideas de diseño independientes del idioma:
- mecanismos de lenguaje como Reemplazar Condicional con Polimorfismo
- refactorizaciones como el método de extracción
- patrones de diseño como el método de plantilla.
A veces es preferible una pequeña cantidad de repetición a introducir complejidad. Me gusta esta cita de Code Reuse is Not a Good Goal:
Evitar la duplicación es un objetivo de vital importancia en el desarrollo de software, que a menudo le ahorra una deuda técnica descomunal. Pero evitar la complejidad especulativa y la abstracción en realidad tiene el mismo perfil de riesgo. Tienes que caminar por una línea muy fina en el medio.
Algunas lecturas adicionales:
- La obsesión DRY
- Refactorizaciones
- Catálogo de Patrones de Diseño
Un buen patrón de diseño es solo lo que necesita para evitar la repetitividad del código/código de placa de caldera. Hay un buen blog que describe maravillosamente el patrón de diseño de visitantes. Podrías intentar implementar esto. Esto lo ayudará a resolver la fealdad de demasiadas declaraciones if-else. Los ejemplos de este blog no están relacionados con Apex, pero se pueden implementar fácilmente en Apex.
Salesforce entregó la idea Agregar declaración “Switch” o “Caso” a Apex en la versión de verano de 2018. Ahora, en lugar de escribir if-else anidados, puede escribir declaraciones de cambio que son mejores en términos de rendimiento y organización del código. Las declaraciones de cambio son mejores alternativas en algunos casos, por lo que también puede probarlas.
La sintaxis es:
switch on expression
when value1 // when block 1
// code block 1
when value2 // when block 2
// code block 2
when value3 // when block 3
// code block 3
when else // when else block, optional
// code block 4
Si posees algún titubeo o forma de prosperar nuestro reseña eres capaz de escribir una ilustración y con mucho placer lo observaremos.