Não é para reutilizar que se encapsula
Desde 1998 que oiço colegas ABAPers dizerem que não vale a pena meter determinado código numa função ou método porque não lhes parece que este vá tornar a ser reutilizado. E lá vão continuando na SE38 a fazer os seus reports cheios de includes.
A ideia de que a principal razão para encapsular código é poder reutilizá-lo é um dos maiores mal entendidos da história do nosso planeta.
Que isto que eu disse não seja também mal entendido pois adoro reutilizar código e, sempre que identifico algo passível de ser reutilizado, tento criá-lo o mais genérico, contido e autónomo possível para simplificar a sua reutlização.
Mas uma coisa não invalida a outra. Todo o código, independentemente de vir a ser reutilizado, deve sempre ser encapsulado e modularizado e liskovizado e uniresponsabilizado e empacotado e todos os outros -ados que se conseguir. Porque a principal motivação para tudo isto é criar código que seja robusto, simples de testar, resiliente a erros e, acima de tudo, fácil de manter.
E a prova disso é o Ratatouille. Quem quiser fazer um Ratatouille de jeito sabe que tem de usar 4 panelas. E no fim mistura-se tudo. E depois come-se. Podes usar só uma panela visto que no fim acaba tudo junto. Se o fizeres acabas com algo que se parece com um Ratatouille mas que não é um Ratatouille. Portanto, a modularização e o encapsulamento são essenciais para o Ratatouille ainda que, se tudo correr bem e este ficar bom, vão comer tudo e não vai sobrar nada para reutilizar no dia seguinte. Está assim provado que uma coisa não tem nada a ver com a outra.
Foto por stijn.
O Abapinho saúda-vos.