Logica 101 – Preste atenção na mensagem

Um software é composto de códigos que se comunicam.
Comunicar é trocar mensagens.
Logo, um software é um conjunto de códigos que trocam mensagens.

Parece razoável? Espero que sim, mas se é razoável por que diabos os programadores não se preocupam com a mensagem e focam todo o seu trabalho no código?

Elaborando um pouco mais:

O objetivo de um  código é resolver o problema X.
Não deve existir Dois códigos resolvendo o mesmo problema X.
Logo, os códigos não compartilham o mesmo objetivo.

Também parece razoável. Para que ter dois códigos dentro do mesmo software resolvendo o mesmo problema?Os céticos citariam o capitão Nascimento “estratégia” a que eu responderia “o conteúdo de estratégia, do inglês strategy, do grego στρατηγική…”.

Então chegamos a:

Um software é uma coleção de códigos conectados que decompõem um problema em problemas menores.
Códigos conectados precisam comunicar seus resultados para compor a solução do problema objetivo do software.
Logo, códigos conectados compartilham a necessidade de trocar mensagens para se comunicar.

Então eu me pergunto, se parece óbvio, por que a mensagem normalmente é a coisa mais mal ajambrada na maioria dos software? Parecendo o resultado de um remendo após o outro. Mensagens gigantes, de formato instável, ideal para um código mas não para outro.

E por que os programadores ignoram o efeito que essa pratica tem sobre os algoritmos, que se tornam um emaranhado de if’s elses, sem condição alguma de serem mantidos?

Existem os códigos, a mensagem e o mensageiro.

O código de domínio de cada problema(esses códigos normalmente tem sua própria estrutura de dados interna); a estrutura de dados que navega pelos códigos(a mensagem) e a Service Layer que conecta a todos por que sabe formatar a mensagem para que cada código receba um input que compreenda e que o output possa ser compreendido e seja refletido na mensagem principal que contem a solução do problema a que o software se propõem.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s