{"id":1324,"date":"2013-03-16T19:34:54","date_gmt":"2013-03-16T22:34:54","guid":{"rendered":"https:\/\/devkico.itexto.com.br\/?p=1324"},"modified":"2013-03-17T12:53:42","modified_gmt":"2013-03-17T15:53:42","slug":"corpo-estranho-questionando-a-orientacao-a-objetos","status":"publish","type":"post","link":"https:\/\/devkico.itexto.com.br\/?p=1324","title":{"rendered":"Corpo estranho: questionando a orienta\u00e7\u00e3o a objetos"},"content":{"rendered":"<p><a href=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2012\/11\/quickrete.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-medium wp-image-1175\" style=\"margin: 3px;\" title=\"quickrete\" src=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2012\/11\/quickrete-300x300.jpg\" alt=\"\" width=\"300\" height=\"300\" srcset=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2012\/11\/quickrete-300x300.jpg 300w, https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2012\/11\/quickrete-150x150.jpg 150w, https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2012\/11\/quickrete.jpg 400w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a>Rar\u00edssimas vezes me deparo com uma equipe questionando se deve ou n\u00e3o adotar orienta\u00e7\u00e3o a objetos em seus novos projetos. Dado que sabemos n\u00e3o existir bala de prata em software este \u00e9 o tipo de comportamento que levanta minhas antenas para a possibilidade de sermos v\u00edtimas de <a href=\"https:\/\/devkico.itexto.com.br\/?p=292\">determinismo lingu\u00edstico<\/a>. Ser\u00e1?<\/p>\n<p>No mundo dos bancos de dados talvez o evento mais importante das \u00faltimas tr\u00eas d\u00e9cadas tenha sido a populariza\u00e7\u00e3o das bases de dados NoSQL, que trouxeram \u00e0 tona o questionamento a respeito do escopo em que os bancos de dados relacionais deveriam ser aplicados. At\u00e9 ent\u00e3o a cren\u00e7a de que o modelo relacional deveria ser aplicado a qualquer situa\u00e7\u00e3o imperava. E com isto solu\u00e7\u00f5es que poderiam ser implementadas com facilidade em outros modelos eram executadas a duras penas em um formato que n\u00e3o lhes servia. Me pergunto portanto o seguinte: <strong>ser\u00e1 que esta nossa f\u00e9 cega na orienta\u00e7\u00e3o a objetos n\u00e3o estaria nos causando o mesmo tipo de problema? Ser\u00e1 que n\u00e3o deviamos criar um movimento NoOOP (Not Only por favor)?<\/strong><\/p>\n<p>Temo que a orienta\u00e7\u00e3o a objetos tenha nos cegado para as outras op\u00e7\u00f5es. Prova disto \u00e9 que muitas vezes quem levanta questionamentos contra o paradigma (como estou fazendo agora) \u00e9 automaticamente rotulado de retr\u00f3grado, ing\u00eanuo, etc. Sendo assim, antes de continuar, gostaria de pedir ao leitor que evite a postura do mal artista.<\/p>\n<h3>S\u00edndrome do mau artista<\/h3>\n<figure id=\"attachment_1327\" aria-describedby=\"caption-attachment-1327\" style=\"width: 166px\" class=\"wp-caption alignright\"><a href=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2013\/03\/manalisa_moba.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-1327 \" title=\"manalisa_moba\" src=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2013\/03\/manalisa_moba-277x300.jpg\" alt=\"\" width=\"166\" height=\"180\" srcset=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2013\/03\/manalisa_moba-277x300.jpg 277w, https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2013\/03\/manalisa_moba.jpg 379w\" sizes=\"(max-width: 166px) 100vw, 166px\" \/><\/a><figcaption id=\"caption-attachment-1327\" class=\"wp-caption-text\">Sim, eu vou criticar suas pinturas ruins. :)<\/figcaption><\/figure>\n<p>Sou a ovelha negra de uma fam\u00edlia composta massivamente por pintores e escultores. Neste meio \u00e9 muito comum a postura do mal artista. \u00c9 f\u00e1cil detect\u00e1-la: \u00e9 aquele sujeito que tem uma obra completamente herm\u00e9tica (e portanto ruim, visto que n\u00e3o consegue comunicar nada) e que rotula todos os que a questionam de insens\u00edveis, incultos, ignorantes, etc.<\/p>\n<p>O mesmo vejo acontecer na nossa \u00e1rea de TI. Ali\u00e1s, j\u00e1 at\u00e9 escrevi sobre isto ao abordar a quest\u00e3o dos <a href=\"https:\/\/devkico.itexto.com.br\/?p=1082\">fan boys<\/a>. Sendo assim por favor tenha a mente aberta ao ler este post, mesmo por que vou levantar aqui muito mais perguntas que respostas ok? Na realidade, eu n\u00e3o acredito que o problema esteja na OOP em si, mas sim no uso for\u00e7ado desta.<\/p>\n<h3>Jogando o ouro fora<\/h3>\n<figure id=\"attachment_1328\" aria-describedby=\"caption-attachment-1328\" style=\"width: 130px\" class=\"wp-caption alignleft\"><a href=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2013\/03\/expensive-trash-can.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-1328 \" title=\"expensive-trash-can\" src=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2013\/03\/expensive-trash-can-217x300.jpg\" alt=\"\" width=\"130\" height=\"180\" srcset=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2013\/03\/expensive-trash-can-217x300.jpg 217w, https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2013\/03\/expensive-trash-can.jpg 221w\" sizes=\"(max-width: 130px) 100vw, 130px\" \/><\/a><figcaption id=\"caption-attachment-1328\" class=\"wp-caption-text\">Foto de um projeto OO ultra high tech que substituiu um sistema legado que funcionava. N\u00e3o \u00e9 lind\u00e3o?<\/figcaption><\/figure>\n<p>Em diversas consultorias que dou topo com a mesma situa\u00e7\u00e3o: uma equipe composta por bons programadores que devem ser reciclados (<strong>odeio<\/strong> quando usam este termo) para uma tecnologia mais <em>moderna<\/em>. Normalmente v\u00eam na forma de alguma linguagem orientada a objetos. E ent\u00e3o come\u00e7am aquele processo nojento de substituir software legado que funciona por software escrito do zero na linguagem OOx (Joel Spolsky tem um <a href=\"http:\/\/www.joelonsoftware.com\/articles\/fog0000000069.html\">texto maravilhoso<\/a> sobre isto) que pode terminar na demiss\u00e3o de um ou outro funcion\u00e1rio e que SEMPRE mina a auto estima dos desenvolvedores mais antigos.<\/p>\n<p>Nestes momentos eu sempre me pergunto o seguinte: se voc\u00ea j\u00e1 tem algo que funciona bem por anos, que tipo de v\u00edrus \u00e9 este que invade a mente dos gestores que os leva a jogar fora a prata da casa? Ei, eu sei: <a href=\"https:\/\/devkico.itexto.com.br\/?p=1148\">hype<\/a>. Eu fico impressionado como nestes casos uma equipe composta por profissionais talentosos \u00e9 trocada por outra que, na maior parte das vezes, ser\u00e1 no m\u00e1ximo med\u00edocre. Os novatos podem at\u00e9 mesmo ter uma vis\u00e3o t\u00e9cnica mais avan\u00e7ada sobre a nova tecnologia imposta (normalmente tem), mas o que realmente importa, que \u00e9 o conhecimento por tr\u00e1s dos problemas que precisam ser resolvidos, n\u00e3o.<\/p>\n<p>Ent\u00e3o pergunto: se sua equipe t\u00e1 trabalhando BEM com uma linguagem procedural como PL\/SQL ou alguma outra de neg\u00f3cio, <strong>realmente<\/strong> \u00e9 necess\u00e1rio trocar a tecnologia e, com isto, transformar sua equipe experiente em um bando de estagi\u00e1rios? Este \u00e9 meu primeiro questionamento. E esta experi\u00eancia que tenho \u00e9 a base pro resto deste post.<\/p>\n<h3>Qual complexidade importa? A quest\u00e3o dos verbos<\/h3>\n<figure id=\"attachment_1331\" aria-describedby=\"caption-attachment-1331\" style=\"width: 226px\" class=\"wp-caption alignleft\"><a href=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2013\/03\/wecandoitposter1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-1331\" title=\"wecandoitposter1\" src=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2013\/03\/wecandoitposter1-226x300.jpg\" alt=\"\" width=\"226\" height=\"300\" srcset=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2013\/03\/wecandoitposter1-226x300.jpg 226w, https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2013\/03\/wecandoitposter1.jpg 245w\" sizes=\"(max-width: 226px) 100vw, 226px\" \/><\/a><figcaption id=\"caption-attachment-1331\" class=\"wp-caption-text\">Yeap, solu\u00e7\u00f5es n\u00e3o OO tamb\u00e9m podem!<\/figcaption><\/figure>\n<p>No desenvolvimento de software h\u00e1 duas complexidades. A primeira \u00e9 inerente ao problema que precisamos resolver. N\u00e3o h\u00e1 muito o que possamos fazer a n\u00e3o ser estudar ao m\u00e1ximo sua natureza. A segunda diz respeito \u00e0 dificuldade na implementa\u00e7\u00e3o da solu\u00e7\u00e3o, que normalmente piora de acordo com nossas escolhas mal feitas.<\/p>\n<p>Observando o pessoal que trabalha com ADVPL, Clipper, VB, Power Builder, Delphi, PHP de forma estruturada fico maravilhado com o fato de serem equipes extremamente produtivas <strong>sem<\/strong> precisarem se preocupar com coisas que n\u00f3s, que trabalhamos com OO lidamos o tempo inteiro, como por exemplo padr\u00f5es de projeto, encapsulamento, etc. Os caras se dedicam apenas \u00e0 implementa\u00e7\u00e3o da solu\u00e7\u00e3o do problema, e isto n\u00e3o quer dizer que o software gerado \u00e9 ruim. (voc\u00eas sabem que existe sistema feito sem orienta\u00e7\u00e3o a objetos bom por a\u00ed n\u00e9? :) )<\/p>\n<p>Observando o c\u00f3digo fonte fica claro que ele expressa BEM o modo de pensar do programador: foco no verbo. Yeap, quando planejamos uma a\u00e7\u00e3o, n\u00e3o pensamos nas entidades que precisam ser implementadas, mas sim nas <strong>a\u00e7\u00f5es<\/strong> que precisamos tomar. Na abordagem puramente OO v\u00eamos o pensamento contr\u00e1rio: o sujeito primeiro projeta as suas classes e DEPOIS o que elas fazem (Steve Yegge tem um<a href=\"http:\/\/steve-yegge.blogspot.com.br\/2006\/03\/execution-in-kingdom-of-nouns.html\"> texto excelente<\/a> sobre isto). O modo de pensar OO primeiro v\u00ea os substantivos: s\u00f3 depois os verbos. Ser\u00e1 que isto \u00e9 uma coisa boa? Ser\u00e1 que n\u00e3o est\u00e1 a nos levar para uma solu\u00e7\u00e3o mais complexa do que precisamos?<\/p>\n<p>Algumas das perguntas que escuto em consultorias em um primeiro momento podem parecer tolas em sua superf\u00edcie, mas exp\u00f5em muito bem o mau uso da OO. Seguem algumas:<\/p>\n<ul>\n<li>Meu trabalho aqui consiste na maior parte das vezes em criar novos relat\u00f3rios. Por que eu estou sendo obrigado a aprender padr\u00f5es de projeto? Ser\u00e1 que o padr\u00e3o de projeto n\u00e3o \u00e9 uma solu\u00e7\u00e3o para defici\u00eancias da pr\u00f3pria orienta\u00e7\u00e3o a objetos?<\/li>\n<li>Se pra obter os dados a partir do banco de dados eu tenho SQL, por que eu preciso usar uma ferramenta ORM? S\u00e9rio que eu preciso implementar um DAO???<\/li>\n<li>Por que as minhas classes n\u00e3o tem nome de verbo? (yeap: esta parece tolice mas tem uma profundidade incr\u00edvel)<\/li>\n<\/ul>\n<p>Ignore seu arsenal de boas pr\u00e1ticas por um momento e ponha-se no lugar de algu\u00e9m saindo do mundo procedural para OO. Voc\u00ea ver\u00e1 que s\u00e3o perguntas muito justas.<\/p>\n<h3>Sintoma: as classes desnecess\u00e1rias<\/h3>\n<p>Sabe uma coisa que sinto falta no Java? Structs. Ao ler c\u00f3digo Java diversas vezes topamos com classes usadas para representar um registro no banco de dados como a abaixo:<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\nclass Pessoa {\r\nprivate String nome;\r\nprivate String sobrenome;\r\nprivate Date dataNascimento;\r\n\r\npublic String getNome() {return this.nome;}\r\npublic void setNome(String valor) {this.nome = valor;}\r\n\r\n\/\/ e mais getters e setters para os demais campos\r\n}\r\n\r\n<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-1332\" style=\"margin: 4px;\" title=\"Sabe aquela classe que n\u00e3o serve pra nada?\" src=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2013\/03\/recruta_zero.jpg\" alt=\"\" width=\"128\" height=\"149\" \/><\/p>\n<p>Na maior parte das vezes s\u00e3o usadas APENAS para expor informa\u00e7\u00f5es em uma tela ou relat\u00f3rio. No segundo caso \u00a0\u00e9 pior ainda: s\u00e3o instanciados centenas, milhares de objetos com o \u00fanico prop\u00f3sito de exporem estes dados. Nestes momentos me v\u00eam \u00e0 mente o seguinte questionamento? Eu REALMENTE precisava representar estes dados como objetos? Ser\u00e1 que n\u00e3o seria mais f\u00e1cil se eu tivesse usado algo como uma estrutura, visto que o encapsulamento aqui n\u00e3o possui utilidade ALGUMA? Se formos levar em conta o custo computacional de se instanciar um objeto, a quest\u00e3o passa a ser ainda mais significativa. (sobre getters e setters, o Paulo Silveira tem um texto muito interessante que pode ser lido no <a href=\"http:\/\/blog.caelum.com.br\/nao-aprender-oo-getters-e-setters\/\">blog da Caelum<\/a>).<\/p>\n<p>Algu\u00e9m poderia me dizer que h\u00e1 objetos ricos e tal. Mas dado que na maior parte das vezes o uso da classe \u00e9 apenas para armazenar dados, ser\u00e1 que ter uma classe rica \u00e9 realmente um ganho? Ser\u00e1 que uma abordagem mais simples n\u00e3o cairia melhor, como por exemplo o uso direto de uma linguagem declarativa como SQL ou mesmo algo procedural? Cad\u00ea meu ganho? Ei: o pessoal do COBOL sabe disto h\u00e1 muito tempo. N\u00e3o \u00e9 a toa que sistemas de processamento em lote violent\u00edssimos s\u00e3o implementados de maneira procedural por D\u00c9CADAS sem serem substitu\u00eddos por alguma outra coisa implementada usando orienta\u00e7\u00e3o a objetos.<\/p>\n<h3>Mas a culpa \u00e9 do programador!<\/h3>\n<figure id=\"attachment_1336\" aria-describedby=\"caption-attachment-1336\" style=\"width: 300px\" class=\"wp-caption alignright\"><a href=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2013\/03\/the-dictator-2012_0.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-1336\" title=\"the-dictator-2012_0\" src=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2013\/03\/the-dictator-2012_0.jpg\" alt=\"\" width=\"300\" height=\"225\" \/><\/a><figcaption id=\"caption-attachment-1336\" class=\"wp-caption-text\">Estes objetos ditadores...<\/figcaption><\/figure>\n<p>Uma solu\u00e7\u00e3o para os problemas que levantei acima seria apontar o dedo para o programador que n\u00e3o fez o seu trabalho direito. Mas a\u00ed eu me pergunto: ser\u00e1 que ele <strong>realmente<\/strong> tem toda a culpa? Acredito que n\u00e3o. A partir do momento em que a OO passou a ser vista como bala de prata, a op\u00e7\u00e3o por linguagens que n\u00e3o siga o paradigma passa a ser vista como retr\u00f3grada, muitas vezes <strong>obrigando<\/strong> o profissional a usar a ferramenta errada para o problema. Yeap: n\u00e3o \u00e9 f\u00e1cil dizer n\u00e3o quando sua imagem ou emprego depende disto (sou kamikaze).<\/p>\n<p>Dado que nas faculdades as linguagens ensinadas hoje s\u00e3o em sua maior parte orientadas a objetos, e criou-se o mito de que a tecnologia mais nova sempre \u00e9 superior, o que v\u00eamos na realidade \u00e9 a <strong>ditadura do objeto<\/strong>. Se em uma entrevista de emprego voc\u00ea disser que n\u00e3o gosta de OO (justificando, \u00e9 claro), suas chances de ser aprovado aumentam ou diminuem?<\/p>\n<p>Me pego pensando \u00e0s vezes se boa parte do c\u00f3digo ruim que vejo por a\u00ed seria de fato culpa apenas do programador. Ser\u00e1 que n\u00e3o entra a\u00ed tamb\u00e9m o fato deste se ver obrigado a usar orienta\u00e7\u00e3o a objetos onde n\u00e3o devia?<\/p>\n<h3>Ent\u00e3o voc\u00ea quer dizer que OO \u00e9 horr\u00edvel Kico?<\/h3>\n<p>N\u00e3o. Apenas que atualmente estamos afogados nela de tal forma que simplesmente ignoramos por completo as demais alternativas e isto \u00e9 p\u00e9ssimo. Se a orienta\u00e7\u00e3o a objetos fosse t\u00e3o ruim assim ela simplesmente n\u00e3o vingaria, mas a partir do momento em que passamos a habitar um ambiente dominado por uma \u00fanica abordagem com certeza as solu\u00e7\u00f5es que implementamos s\u00e3o, devido \u00e0 nossa cegueira, bem mais complexas que o necess\u00e1rio.<\/p>\n<p>A quest\u00e3o n\u00e3o \u00e9 a qualidade intr\u00ednseca do paradigma, mas sim o uso errado que fazemos dele. E dado que o mito da<a href=\"http:\/\/www.cs.nott.ac.uk\/~cah\/G51ISS\/Documents\/NoSilverBullet.html\"> bala de prata<\/a> j\u00e1 \u00e9 fato conhecido a no m\u00ednimo 28 anos, me assusta ver a orienta\u00e7\u00e3o a objetos ser tida como tal, especialmente por aqueles que se dizem t\u00e3o espertos, antenados, bacanas e tal.<\/p>\n<h3>Quando eu n\u00e3o uso OO?<\/h3>\n<p>Se seu programa exerce uma \u00fanica fun\u00e7\u00e3o, como por exemplo compactar um arquivo, voc\u00ea o implementaria usando OO ou procedural? E se o foco for performance absoluta, ser\u00e1 que OO cai bem? E para o processamento massivo de dados? Um sistema matem\u00e1tico \u00e9 melhor impelentado em OO ou em uma linguagem funcional como Lisp? As situa\u00e7\u00f5es s\u00e3o infinitas, dei apenas alguns exemplos nos quais o paradigma n\u00e3o \u00e9 a melhor op\u00e7\u00e3o. N\u00e3o h\u00e1 como responder de forma geral a esta pergunta.<\/p>\n<p>No entanto, h\u00e1 uma pergunta que nos ajuda a chegar a uma solu\u00e7\u00e3o. Ao analisar um sistema desenvolvido em algo que n\u00e3o seja OO, pergunte-se: por que n\u00e3o OO? Por que um sistema especialista foi implementado em PROLOG ao inv\u00e9s de Java? Por que o MySQL foi feito em C ao inv\u00e9s de C++? Por que o Linux n\u00e3o tem C++? Por que o software de controle da minha locadora \u00e9 feito em Clipper e n\u00e3o C#?<\/p>\n<p>Um exemplo interessante do n\u00e3o uso de OO \u00e9 no ambiente corporativo aonde as linguagens de quarta gera\u00e7\u00e3o (4GL) como ABAP, Dataflex, Natural, PL\/SQL, Progress e muitas outras s\u00e3o usadas de forma imperativa. Novamente v\u00eamos a mesma situa\u00e7\u00e3o: equipes que podem at\u00e9 mesmo n\u00e3o estar usando o que est\u00e1 na crista da onda, mas que atendem <strong>perfeitamente<\/strong> e com <strong>qualidade<\/strong> os requisitos da empresa. Detalhe: s\u00e3o situa\u00e7\u00f5es complexas que normalmente s\u00e3o usadas como justificativa para a ado\u00e7\u00e3o da OO. Sim: este \u00e9 um grande tapa na cara do paradigma.<\/p>\n<p>Ali\u00e1s, deixo o questionamento ao leitor: por que as linguagens de neg\u00f3cio como as da quarta gera\u00e7\u00e3o n\u00e3o est\u00e3o mais &#8220;mainstream&#8221;?<\/p>\n<h3>Concluindo<\/h3>\n<p>A Orienta\u00e7\u00e3o a Objetos n\u00e3o \u00e9 o problema mas sim o seu excesso. Eu poderia ficar aqui p\u00e1ginas e mais p\u00e1ginas descrevendo limita\u00e7\u00f5es t\u00e9cnicas do paradigma o que seria uma tolice. Sou mais pragm\u00e1tico: apontei aqui apenas os problemas de ordem mais humana que percebo na minha intera\u00e7\u00e3o com outros programadores.<\/p>\n<p>\u00c9 chegado o momento de come\u00e7armos um movimento <strong>Not Only<\/strong> <strong>OO<\/strong>: valorizando as outras alternativas e, principalmente, os excelentes profissionais que estamos destruindo com nossa arrog\u00e2ncia. Bora?<\/p>\n<p>PS: meu pr\u00f3ximo post vai ser sobre meu trabalho envolvendo ass\u00e9dio moral em TI. Aguardem! :)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Rar\u00edssimas vezes me deparo com uma equipe questionando se deve ou n\u00e3o adotar orienta\u00e7\u00e3o a objetos em seus novos projetos. Dado que sabemos n\u00e3o existir bala de prata em software este \u00e9 o tipo de comportamento que levanta minhas antenas para a possibilidade de sermos v\u00edtimas de determinismo lingu\u00edstico. Ser\u00e1? No mundo dos bancos de [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1175,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""}},"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[35,36,29,34],"tags":[],"class_list":["post-1324","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-armadilhas","category-desenvolvimento-de-software","category-orientacao-a-objetos","category-paideia"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Corpo estranho: questionando a orienta\u00e7\u00e3o a objetos - \/dev\/Kico<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/devkico.itexto.com.br\/?p=1324\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Corpo estranho: questionando a orienta\u00e7\u00e3o a objetos - \/dev\/Kico\" \/>\n<meta property=\"og:description\" content=\"Rar\u00edssimas vezes me deparo com uma equipe questionando se deve ou n\u00e3o adotar orienta\u00e7\u00e3o a objetos em seus novos projetos. Dado que sabemos n\u00e3o existir bala de prata em software este \u00e9 o tipo de comportamento que levanta minhas antenas para a possibilidade de sermos v\u00edtimas de determinismo lingu\u00edstico. Ser\u00e1? No mundo dos bancos de [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/devkico.itexto.com.br\/?p=1324\" \/>\n<meta property=\"og:site_name\" content=\"\/dev\/Kico\" \/>\n<meta property=\"article:published_time\" content=\"2013-03-16T22:34:54+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2013-03-17T15:53:42+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2012\/11\/quickrete.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"400\" \/>\n\t<meta property=\"og:image:height\" content=\"400\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Kico (Henrique Lobo Weissmann)\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@loboweissmann\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kico (Henrique Lobo Weissmann)\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=1324\",\"url\":\"https:\/\/devkico.itexto.com.br\/?p=1324\",\"name\":\"Corpo estranho: questionando a orienta\u00e7\u00e3o a objetos - \/dev\/Kico\",\"isPartOf\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=1324#primaryimage\"},\"image\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=1324#primaryimage\"},\"thumbnailUrl\":\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2012\/11\/quickrete.jpg\",\"datePublished\":\"2013-03-16T22:34:54+00:00\",\"dateModified\":\"2013-03-17T15:53:42+00:00\",\"author\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/502ab8892631bb005d6da2269fe5a3a7\"},\"breadcrumb\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=1324#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/devkico.itexto.com.br\/?p=1324\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=1324#primaryimage\",\"url\":\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2012\/11\/quickrete.jpg\",\"contentUrl\":\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2012\/11\/quickrete.jpg\",\"width\":\"400\",\"height\":\"400\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=1324#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/devkico.itexto.com.br\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Corpo estranho: questionando a orienta\u00e7\u00e3o a objetos\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/devkico.itexto.com.br\/#website\",\"url\":\"https:\/\/devkico.itexto.com.br\/\",\"name\":\"\/dev\/Kico\",\"description\":\"Desenvolvendo software\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/devkico.itexto.com.br\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/502ab8892631bb005d6da2269fe5a3a7\",\"name\":\"Kico (Henrique Lobo Weissmann)\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/dd6973d86a689bc63122b2e603f25be3?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/dd6973d86a689bc63122b2e603f25be3?s=96&d=mm&r=g\",\"caption\":\"Kico (Henrique Lobo Weissmann)\"},\"sameAs\":[\"https:\/\/x.com\/loboweissmann\"],\"url\":\"https:\/\/devkico.itexto.com.br\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Corpo estranho: questionando a orienta\u00e7\u00e3o a objetos - \/dev\/Kico","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/devkico.itexto.com.br\/?p=1324","og_locale":"pt_BR","og_type":"article","og_title":"Corpo estranho: questionando a orienta\u00e7\u00e3o a objetos - \/dev\/Kico","og_description":"Rar\u00edssimas vezes me deparo com uma equipe questionando se deve ou n\u00e3o adotar orienta\u00e7\u00e3o a objetos em seus novos projetos. Dado que sabemos n\u00e3o existir bala de prata em software este \u00e9 o tipo de comportamento que levanta minhas antenas para a possibilidade de sermos v\u00edtimas de determinismo lingu\u00edstico. Ser\u00e1? No mundo dos bancos de [&hellip;]","og_url":"https:\/\/devkico.itexto.com.br\/?p=1324","og_site_name":"\/dev\/Kico","article_published_time":"2013-03-16T22:34:54+00:00","article_modified_time":"2013-03-17T15:53:42+00:00","og_image":[{"width":"400","height":"400","url":"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2012\/11\/quickrete.jpg","type":"image\/jpeg"}],"author":"Kico (Henrique Lobo Weissmann)","twitter_card":"summary_large_image","twitter_creator":"@loboweissmann","twitter_misc":{"Escrito por":"Kico (Henrique Lobo Weissmann)","Est. tempo de leitura":"11 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/devkico.itexto.com.br\/?p=1324","url":"https:\/\/devkico.itexto.com.br\/?p=1324","name":"Corpo estranho: questionando a orienta\u00e7\u00e3o a objetos - \/dev\/Kico","isPartOf":{"@id":"https:\/\/devkico.itexto.com.br\/#website"},"primaryImageOfPage":{"@id":"https:\/\/devkico.itexto.com.br\/?p=1324#primaryimage"},"image":{"@id":"https:\/\/devkico.itexto.com.br\/?p=1324#primaryimage"},"thumbnailUrl":"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2012\/11\/quickrete.jpg","datePublished":"2013-03-16T22:34:54+00:00","dateModified":"2013-03-17T15:53:42+00:00","author":{"@id":"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/502ab8892631bb005d6da2269fe5a3a7"},"breadcrumb":{"@id":"https:\/\/devkico.itexto.com.br\/?p=1324#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/devkico.itexto.com.br\/?p=1324"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/devkico.itexto.com.br\/?p=1324#primaryimage","url":"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2012\/11\/quickrete.jpg","contentUrl":"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2012\/11\/quickrete.jpg","width":"400","height":"400"},{"@type":"BreadcrumbList","@id":"https:\/\/devkico.itexto.com.br\/?p=1324#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/devkico.itexto.com.br\/"},{"@type":"ListItem","position":2,"name":"Corpo estranho: questionando a orienta\u00e7\u00e3o a objetos"}]},{"@type":"WebSite","@id":"https:\/\/devkico.itexto.com.br\/#website","url":"https:\/\/devkico.itexto.com.br\/","name":"\/dev\/Kico","description":"Desenvolvendo software","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/devkico.itexto.com.br\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"pt-BR"},{"@type":"Person","@id":"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/502ab8892631bb005d6da2269fe5a3a7","name":"Kico (Henrique Lobo Weissmann)","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/dd6973d86a689bc63122b2e603f25be3?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/dd6973d86a689bc63122b2e603f25be3?s=96&d=mm&r=g","caption":"Kico (Henrique Lobo Weissmann)"},"sameAs":["https:\/\/x.com\/loboweissmann"],"url":"https:\/\/devkico.itexto.com.br\/?author=1"}]}},"jetpack_featured_media_url":"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2012\/11\/quickrete.jpg","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/posts\/1324"}],"collection":[{"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1324"}],"version-history":[{"count":11,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/posts\/1324\/revisions"}],"predecessor-version":[{"id":1578,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/posts\/1324\/revisions\/1578"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/media\/1175"}],"wp:attachment":[{"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1324"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1324"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1324"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}