[{"@context":"https:\/\/schema.org\/","@type":"BlogPosting","@id":"https:\/\/ivonascimento.com\/2015\/02\/09\/ja-reparou-como-todo-alien-na-tv-fala-a-lingua-terraquea\/#BlogPosting","mainEntityOfPage":"https:\/\/ivonascimento.com\/2015\/02\/09\/ja-reparou-como-todo-alien-na-tv-fala-a-lingua-terraquea\/","headline":"J\u00e1 reparou como todo alien na TV fala a lingua terr\u00e1quea?","name":"J\u00e1 reparou como todo alien na TV fala a lingua terr\u00e1quea?","description":"por que o c\u00f3digo precisa falar a linguagem do seu interlocutor. Uma das coisas que mais gosto em um sistema bem escrito \u00e9 aquela m\u00e1gica sensa\u00e7\u00e3o de conseguir ler o c\u00f3digo e e navegar de uma chamada a outra, fluindo sem ser obrigado a ler os m\u00e9todos que comp\u00f5em o c\u00f3digo que estou lendo. Por [&hellip;]","datePublished":"2015-02-09","dateModified":"2015-02-09","author":{"@type":"Person","@id":"https:\/\/ivonascimento.com\/author\/ivonascimento\/#Person","name":"Ivo Nascimento","url":"https:\/\/ivonascimento.com\/author\/ivonascimento\/","identifier":10240028,"image":{"@type":"ImageObject","@id":"https:\/\/secure.gravatar.com\/avatar\/2305ea1f48319271d323c5e1c0aadd4cc45d10c4927dd8b3af083facb8c6f75f?s=96&d=identicon&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/2305ea1f48319271d323c5e1c0aadd4cc45d10c4927dd8b3af083facb8c6f75f?s=96&d=identicon&r=g","height":96,"width":96}},"publisher":{"@type":"Person","name":"Ivo Nascimento"},"image":{"@type":"ImageObject","@id":"https:\/\/i0.wp.com\/ivonascimento.com\/wp-content\/uploads\/2015\/02\/thor.jpg?fit=500%2C750&ssl=1","url":"https:\/\/i0.wp.com\/ivonascimento.com\/wp-content\/uploads\/2015\/02\/thor.jpg?fit=500%2C750&ssl=1","height":750,"width":500},"url":"https:\/\/ivonascimento.com\/2015\/02\/09\/ja-reparou-como-todo-alien-na-tv-fala-a-lingua-terraquea\/","about":["texto de Bus\u00e3o"],"wordCount":891,"articleBody":"por que o c\u00f3digo precisa falar a linguagem do seu interlocutor.Uma das coisas que mais gosto em um sistema bem escrito \u00e9 aquela m\u00e1gica sensa\u00e7\u00e3o de conseguir ler o c\u00f3digo e e navegar de uma chamada a outra, fluindo sem ser obrigado a ler os m\u00e9todos que comp\u00f5em o c\u00f3digo que estou lendo.Por isso, nesse texto de bus\u00e3o, vou tentar falar do que se deve ter em mente para conseguir esse tipo de c\u00f3digo, que fornece essa flu\u00eancia ao leitor e que faz o c\u00f3digo n\u00e3o parecer com grego antigo ou uma altera\u00e7\u00e3o do c\u00f3digo morse com 10 sinais por caractere?Tudo se baseia na linguagem ideal para cada tipo de c\u00f3digo.A analogia mais clara que me vem \u00e0 mente est\u00e1 no escrit\u00f3rio. Quando voc\u00ea fala com seu colega programador vc usa uma sele\u00e7\u00e3o de palavras que voc\u00eas estabeleceram como padr\u00e3o, quase um dialeto que os alguns chamam de informatiqu\u00eas, quando fala com seu gerente esse dialeto \u00e9 outro e com o diretor \u00e9 outro e assim continua com o RH, o financeiro, a garota bonita do caf\u00e9, com o visitante e o prestador de servi\u00e7o.Em todas essas ocasi\u00f5es ainda \u00e9 voc\u00ea falando e a mensagem pode inclusive ser a mesma, mas o interlocutor muda e voc\u00ea se adapta a ele para se tornar um comunicar mais eficiente.Eu espero que voc\u00ea j\u00e1 tenha acordado para o fato de que cada Interlocutor requer uma linguagem, ou melhor, requer uma modelagem diferente da mensagem. Eu demorei para perceber isso e a quantidade de ru\u00eddo que foi criado a partir desse erro foi grande.N\u00e3o se trata de alterar o que voc\u00ea quer dizer, mas formatar a mensagem na expectativa de ser melhor compreendido.Essa hist\u00f3ria toda para dizer que o mesmo efeito decorrente do dialeto na linguagem falada tamb\u00e9m ocorre no c\u00f3digo que voc\u00ea escreve.Pergunto:Voc\u00ea acha chato ter de consultar um dicion\u00e1rio a cada tr\u00eas palavras ditas pelo seu interlocutor e sonha com um michaellis instalado num Google glass? E se as palavras ditas fossem o c\u00f3digo e o dicion\u00e1rio fosse todo o c\u00f3digo do mundo excluindo aquele que est\u00e1 sendo lido(que precisa ser traduzido)?Dif\u00edcil n\u00e9? Sacou por que existe os padr\u00f5es. Sacou por que existe code style e por que existe dicion\u00e1rio de dom\u00ednio. Tem espa\u00e7o pra g\u00edria no c\u00f3digo? Claro, se for uma g\u00edria universal!Para conseguir isso a primeira chave \u00e9 entender que interlocutor \u00e9 cada &#8220;lugar em que voc\u00ea escreve c\u00f3digo&#8221;.Um c\u00f3digo dentro de um controller em um MVC, por exemplo, quando voc\u00ea l\u00ea um c\u00f3digo no controller, o que espera entender? Eu espero entender que dados est\u00e3o chegando, como eles deveriam chegar e a inten\u00e7\u00e3o com rela\u00e7\u00e3o a eles, ent\u00e3o se ele comunica algo mais que isso \u00e9 um controller prolixo, que fala demais e n\u00e3o \u00e9 objetivo e se ele n\u00e3o fala nem isso ele \u00e9 surdo\/mudo.Al\u00e9m dessas possibilidades ainda existe aquela do Controller de que ele fala uma l\u00edngua desconhecida.Exemplo de um controller que se comunica bem.Class UserController{  public function editAction()  {    $input = User:: validate($_POST);    if (!input-&gt;isValid()){     return erro(\"dados inv\u00e1lidos\");    }    $user = new User ($input);    if (! $user-&gt;exists()) {      return error(\"User n\u00e3o existe\");    }    Persistence::save($user);  }}O c\u00f3digo acima pode ser lido em 10 segundo e diz:a) trata da entidade usu\u00e1rio.b)\u00a0 recebe dados via POST.c) espera os dados formatados de uma maneira espec\u00edfica.d) s\u00f3 trabalha com usu\u00e1rios existentes.e)Grava altera\u00e7\u00f5es em usu\u00e1rios existentes.Essa \u00e9 a linguagem esperada dentro de um controller mas ele poderia ainda utilizar uma camada de servi\u00e7o e ser ainda mais sucinto.  public function editAction()  {    $resultado = servi\u00e7oDeUsuario-&gt;editaSeExistir($_POST);    return $resultsdo-&gt;hasError();  }Ou pode escolher falar todas as l\u00ednguas(ser prolixo e ter de se repetir toda hora), validando campo a a campo o input, fazendo um select na tabela user e depois setar cada campo numa query e gravar. O que \u00e9 mais claro?Eu sei, vc est\u00e1 rindo de t\u00e3o claro que o tema \u00e9 para voc\u00ea, mas ent\u00e3o pq ainda existe tanto c\u00f3digo escrito direto no controller, colocando toda a l\u00f3gica l\u00e1?Enfim, o mesmo racioc\u00ednio deve ser levado para outras partes. As entidades devem saber lidar com as caracter\u00edsticas da entidade, como seus dados, suas regras de neg\u00f3cio e, quando chegar a hora de persistir os dados, ela deve delegar para a camada de persist\u00eancia.Se ocorrer um erro durante o processamento, n\u00e3o \u00e9 a entidade que deve registrar o evento no log, ela deve demandar para algu\u00e9m especializado nessa a\u00e7\u00e3o.Se cada camada falar sua lingua espec\u00edfica vai ser facil faze-las se adapatar para conversarem, por que o objetivo de cada uma sera de facil discernimento. Agora, se todas elas falarem todas as linguas, voc\u00ea tera uma linda babel sem controle.Alias, voc\u00ea ja reparou como todo alien na TV fala a lingua terr\u00e1quea. Por que ser\u00e1?Compartilhe isso:\t\t\t\tImprimir(abre em nova janela)\t\t\t\tImprimir\t\t\tTweet\t\t\t\tCompartilhar no WhatsApp(abre em nova janela)\t\t\t\tWhatsApp\t\t\t"},{"@context":"https:\/\/schema.org\/","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"2015","item":"https:\/\/ivonascimento.com\/2015\/#breadcrumbitem"},{"@type":"ListItem","position":2,"name":"02","item":"https:\/\/ivonascimento.com\/2015\/\/02\/#breadcrumbitem"},{"@type":"ListItem","position":3,"name":"09","item":"https:\/\/ivonascimento.com\/2015\/\/02\/\/09\/#breadcrumbitem"},{"@type":"ListItem","position":4,"name":"J\u00e1 reparou como todo alien na TV fala a lingua terr\u00e1quea?","item":"https:\/\/ivonascimento.com\/2015\/02\/09\/ja-reparou-como-todo-alien-na-tv-fala-a-lingua-terraquea\/#breadcrumbitem"}]}]