La pirámide invertida del código. Programación, práctica de estar en… | de Maciej S. | diciembre 2022
Imagen original de Eugene Tkachenko a través de unsplashLa programación, que es más que nada un ejercicio de escritura¹, puede inspirarse en otras disciplinas de escritura más establecidas. Una técnica de escritura interesante utilizada en periodismo o redacción de informes se llama pirámide invertida². Este enfoque mejora la comprensión del texto al comenzar primero con la información más importante, antes de pasar a los detalles menos importantes más adelante. El lector puede comprender rápidamente el concepto básico sin tener que leer todo el texto. En esta metáfora, el comienzo del texto es la base de la pirámide: contiene la información más rica o importante. Es posible que el lector simplemente revise esta base y aún se vaya con una cierta comprensión del tema. De manera similar, la parte superior de la pirámide representa la parte inferior del texto, donde se encuentra la información menos importante. Cuanto más te muevas en esta dirección, más «pasable» se vuelve el contenido. “¿Cómo se aplica esto exactamente al código?”, puede que se pregunte en este punto. El mismo principio se puede aplicar a los niveles de abstracción: comience primero con las definiciones más abstractas (la base) y solo vaya a los detalles del algoritmo (la parte superior) cuando sea necesario.Una ilustración de mala calidad de la pirámide invertida aplicada a los niveles de abstracción en el código del autor :fun makeCupOfTea(coldWater: ColdWater, teaLeaves: TeaLeaves): CupOfTea {val hotWater = cookWater(coldWater)val tea = brewTea(hotWater, teaLeaves)return pourTeaIntoTheCup (té)} ¡Posiblemente podría dejar de leer el código aquí y obtener una descripción general de cómo se ve el proceso sin tener que entender exactamente cómo hervir el agua o cómo verterla en la taza (????! ??! ?!??!?!) Alternativamente, si desea profundizar más Para adentrarse en el arte arcano de la preparación del té, puede desplazarse hacia abajo hasta la función brewTea y explorar los detalles allí (desde la base hasta la mitad de la pirámide) : fun brewTea (agua caliente: agua caliente, hojas de té: hojas de té): té {val tetera con hojas = poner hojas en tetera (tetera) val tetera con agua y hojas = verter agua caliente en una tetera (agua caliente, tetera con hojas) return SteepLeaves (tetera con agua y hojas, 3 minutos s)}Esto sigue y sigue a medida que avanza hacia abajo y hacia los detalles del algoritmo de elaboración del té. Ahora podrías decir: «Ese es un ejemplo un poco estúpido, ¿no?», y estaría de acuerdo. En cualquier caso, debería bastar para ilustrar. Por supuesto, eso solo tiene sentido si mantienes juntos los mismos niveles de abstracción. Todos los pasos en la función hacer una taza de té son (en términos generales) tan abstractos como los pasos en la función preparar té. Con este enfoque, cuando abra una función de preparación de té, no se verá abrumado con todos los detalles esenciales del algoritmo de inmediato. Siempre tiene el control de la cantidad de detalles a los que está expuesto y puede acercar y alejar según sea necesario.