{"id":158,"date":"2011-07-29T21:26:52","date_gmt":"2011-07-29T21:26:52","guid":{"rendered":"http:\/\/leonardocotta.com.br\/blog\/?p=158"},"modified":"2011-07-29T21:26:52","modified_gmt":"2011-07-29T21:26:52","slug":"em-busca-do-nome-adequado-metodos-variaveis-e-classes","status":"publish","type":"post","link":"https:\/\/leonardocotta.com.br\/?p=158","title":{"rendered":"Em busca do nome adequado: m\u00e9todos, vari\u00e1veis e classes"},"content":{"rendered":"<p>\u00c9 muito comum ap\u00f3s alguns dias de trabalho em um projeto perceber que as escolhas de nomes de classes e m\u00e9todos n\u00e3o condizem com o que cada um representa. Isso acontece pois, com o passar do tempo, aumenta o nosso conhecimento sobre o dom\u00ednio do problema. Tamb\u00e9m \u00e9 natural surgir o desejo de mudan\u00e7a: a medida que nos especializamos nesse dom\u00ednio, o modelo do neg\u00f3cio em nossa mente passa a ser diferente da vis\u00e3o inicial. Um exemplo simples dessa mudan\u00e7a acontece quando em OO criamos um relacionamento bidirecional entre duas classes atrav\u00e9s de listas, como no exemplo a seguir:<\/p>\n<p><!--more--><\/p>\n<div>\n<div id=\"highlighter_7516\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td>\n<div>\n<div><code>\/\/ a representa\u00e7\u00e3o de um cliente, funcion\u00e1rio etc<\/code><\/div>\n<div><code>public<\/code> <code>class<\/code> <code>Pessoa {<\/code><\/div>\n<div><code> <\/code><code>List&lt;Conta&gt; contas;<\/code><\/div>\n<div><code>}<\/code><\/div>\n<div><code>\/\/ a representa\u00e7\u00e3o de uma conta banc\u00e1ria (poupan\u00e7a, corrente, investimento etc)<\/code><\/div>\n<div><code>public<\/code> <code>class<\/code> <code>Conta {<\/code><\/div>\n<div><code> <\/code><code>List&lt;Pessoa&gt; pessoas;<\/code><\/div>\n<div><code>}<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>A primeira vista esse \u00e9 o relacionamento entre as duas entidades mas em determinado momento notamos que na verdade a rela\u00e7\u00e3o entre pessoa e conta \u00e9 um Titular, que possue caracter\u00edsticas pr\u00f3prias, como o contrato que ele como titular da conta assinou:<\/p>\n<div>\n<div id=\"highlighter_751881\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td>\n<div>\n<div><code>public<\/code> <code>class<\/code> <code>Pessoa {<\/code><\/div>\n<div><code> <\/code><code>List&lt;Titular&gt; titularidades;<\/code><\/div>\n<div><code>}<\/code><\/div>\n<div><code>public<\/code> <code>class<\/code> <code>Conta {<\/code><\/div>\n<div><code> <\/code><code>List&lt;Titular&gt; titulares;<\/code><\/div>\n<div><code>}<\/code><\/div>\n<div><code>public<\/code> <code>class<\/code> <code>Titular {<\/code><\/div>\n<div><code> <\/code><code>Conta conta;<\/code><\/div>\n<div><code> <\/code><code>Pessoa pessoa;<\/code><\/div>\n<div><code> <\/code><code>\/\/ outras caracter\u00edsticas de uma titularidade<\/code><\/div>\n<div><code>}<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Nesse caso o processo de refatora\u00e7\u00e3o envolve extrair uma classe que representa tal rela\u00e7\u00e3o, um Titular: um exemplo simples que demonstra como em OO \u00e9 comum a exist\u00eancia de classes para representar informa\u00e7\u00f5es intang\u00edveis.<\/p>\n<p>Outras quest\u00f5es simples mas fundamentais para\u00a0<a href=\"http:\/\/www.tectura.com.br\/topics\/nomes_complexos_descritivos_no_modelo\">o bom design e legibilidade da aplica\u00e7\u00e3o est\u00e3o ligados aos nomes que escolhemos<\/a>, n\u00e3o s\u00f3 em rela\u00e7\u00e3o ao nome da classe e de seus m\u00e9todos. No exemplo acima, por uma escolha fraca no nome da vari\u00e1vel membro\u00a0<strong>conta<\/strong> e\u00a0<strong>pessoa<\/strong> acabamos com um c\u00f3digo que parece repetitivo e pouco descritivo:<\/p>\n<div>\n<div id=\"highlighter_138797\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td>\n<div>\n<div><code>Pessoa pessoa;<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Se em nosso sistema funcion\u00e1rios, gerentes, titulares e caixas s\u00e3o representados atrav\u00e9s de inst\u00e2ncias do tipo\u00a0<code>Pessoa<\/code>, o mais adequado seria nome\u00e1-los de acordo:<\/p>\n<div>\n<div id=\"highlighter_497506\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td>\n<div>\n<div><code>public<\/code> <code>class<\/code> <code>Titular {<\/code><\/div>\n<div><code> <\/code><code>Conta conta;<\/code><\/div>\n<div><code> <\/code><code>Pessoa cliente;<\/code><\/div>\n<div><code>}<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>A tend\u00eancia natural do desenvolvedor em linguagens que obrigam a declara\u00e7\u00e3o do tipo \u00e9 criar vari\u00e1veis com nome identicos ao tipo declarado, por ser um atalho das IDEs e mais simples de escrever. Mas tais alternativas, como visto, dizem pouco sobre a vari\u00e1vel que est\u00e1 sendo acessada. Por esses motivos, \u00e9 muito comum encontrar c\u00f3digo como:<\/p>\n<div>\n<div id=\"highlighter_65544\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td>\n<div>\n<div><code>Cliente cliente = clienteDao.busca(<\/code><code>13<\/code><code>);<\/code><\/div>\n<div><code>Pagamento pagamento = pagamentoDao.busca(<\/code><code>15<\/code><code>);<\/code><\/div>\n<div><code>ProcessadorDePagamento processador =<\/code><\/div>\n<div><code> <\/code><code>new<\/code> <code>ProcessadorDePagamento();<\/code><\/div>\n<div><code>processador.processa(cliente, pagamento);<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Cliente, pagamento, processador: \u00e9 somente desses tr\u00eas elementos que nosso dom\u00ednio \u00e9 composto? E nem mesmo Ruby foge disso, sendo comum encontrar:<\/p>\n<div>\n<div id=\"highlighter_99473\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td>\n<div>\n<div><code>cliente = Cliente.find_by_id <\/code><code>13<\/code><\/div>\n<div><code>pagamento = Pagamento.find_by_id <\/code><code>15<\/code><\/div>\n<div><code>processador = Processador.<\/code><code>new<\/code><\/div>\n<div><code>processador.processa cliente, pagamento<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Tr\u00eas apari\u00e7\u00f5es de cliente, tr\u00eas de pagamento, quatro de processador. Aqui existe uma vis\u00e3o distorcida de que vari\u00e1veis s\u00e3o somente aquilo que o tipo descreve: um cliente, um pagamento, um processador. Na verdade elas referenciam inst\u00e2ncias espec\u00edficas e especializadas de um tipo determinado. S\u00f3 faria sentido chamar o cliente 13 de\u00a0<strong>cliente<\/strong> se ele \u00e9 o \u00fanico cliente, um singleton. Especialize o nome de suas vari\u00e1veis e crie um c\u00f3digo mais leg\u00edvel:<\/p>\n<div>\n<div id=\"highlighter_419052\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td>\n<div>\n<div><code>Cliente devedor = clientes.busca(<\/code><code>13<\/code><code>);<\/code><\/div>\n<div><code>Pagamento fatura = pagamentos.busca(<\/code><code>15<\/code><code>);<\/code><\/div>\n<div><code>ProcessadorDePagamento mensalidade =<\/code><\/div>\n<div><code> <\/code><code>new<\/code> <code>ProcessadorDePagamento();<\/code><\/div>\n<div><code>mensalidade.cobra(devedor, fatura);<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>O mesmo pode ser refletido no exemplo de Ruby. E como trabalharemos nossos reposit\u00f3rios para permitir uma maior legibilidade do c\u00f3digo?<\/p>\n<div>\n<div id=\"highlighter_429991\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td>\n<div>\n<div><code>Pessoa pessoa = ...;<\/code><\/div>\n<div><code>List&lt;Conta&gt; contas = dao.contasDe(pessoa);<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Note como por causa da escolha do nome da vari\u00e1vel\u00a0<code>pessoa<\/code> fomos obrigados a colocar algo mais descritivo no m\u00e9todo. Caso a vari\u00e1vel possua um nome mais adequado, ter\u00edamos ent\u00e3o:<\/p>\n<div>\n<div id=\"highlighter_71513\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td>\n<div>\n<div><code>Pessoa cliente = ...;<\/code><\/div>\n<div><code>List&lt;Conta&gt; contas = dao.contasDe(cliente);<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Modificando nossa classe\u00a0<code>Conta<\/code> para adicionar o gerente e o subgerente temos novamente o sentido das vari\u00e1veis descrito n\u00e3o s\u00f3 pelo seu tipo, mas tamb\u00e9m pelo seu nome:<\/p>\n<div>\n<div id=\"highlighter_625347\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td>\n<div>\n<div><code>public<\/code> <code>class<\/code> <code>Conta {<\/code><\/div>\n<div><code> <\/code><code>List&lt;Titular&gt; titulares;<\/code><\/div>\n<div><code> <\/code><code>Pessoa gerente;<\/code><\/div>\n<div><code> <\/code><code>Pessoa subgerente;<\/code><\/div>\n<div><code>}<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Nesse instante a query ficaria mais complexa pois existem dois relacionamentos distintos com pessoa, requerendo\u00a0a cria\u00e7\u00e3o de uma DSL interna para query. No exemplo a seguir usamos um builder para facilitar a constru\u00e7\u00e3o da query:<\/p>\n<div>\n<div id=\"highlighter_75591\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td>\n<div>\n<div><code>Pessoa gerente = ...;<\/code><\/div>\n<div><code>Pessoa subgerente = ...;<\/code><\/div>\n<div><code>List&lt;Conta&gt; contas =<\/code><\/div>\n<div><code> <\/code><code>dao.comGerenteESubgerente<\/code><\/div>\n<div><code> <\/code><code>(gerente, subgerente):<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Essa \u00e9 a abordagem que o jbehave 3.2 e o selenium utilizam, onde acabamos por ter uma sintaxe muito longa e repetitiva.<\/p>\n<p>Retomando o problema do nome das vari\u00e1veis, que pode ser resolvido com outra refatora\u00e7\u00e3o de rename: o c\u00f3digo da terceira linha \u00e9 mais descritivo que o anterior:<\/p>\n<div>\n<div id=\"highlighter_350819\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td>\n<div>\n<div><code>Pessoa gerente = ...;<\/code><\/div>\n<div><code>Pessoa subgerente = ...;<\/code><\/div>\n<div><code>List&lt;Conta&gt; contas =<\/code><\/div>\n<div><code> <\/code><code>dao.comGerente(gerente)<\/code><\/div>\n<div><code> <\/code><code>.comSubgerente(subgerente):<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Em linguagens onde mapas podem ser representados atrav\u00e9s de literais, o ru\u00eddo sint\u00e1tico \u00e9 baixo e permite que seja escrito c\u00f3digo como a seguir em Ruby:<\/p>\n<div>\n<div id=\"highlighter_315699\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td>\n<div>\n<div><code>gerente = ...<\/code><\/div>\n<div><code>subgerente = ...<\/code><\/div>\n<div><code>contas = Conta.com<\/code><\/div>\n<div><code> <\/code><code>:gerente<\/code> <code>=&gt; gerente, <\/code><code>:subgerente<\/code> <code>=&gt; subgerente<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Novamente, a refatora\u00e7\u00e3o aqui \u00e9 fundamental:<\/p>\n<div>\n<div id=\"highlighter_907748\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td>\n<div>\n<div><code>principal = ...<\/code><\/div>\n<div><code>secundario = ...<\/code><\/div>\n<div><code>contas = Conta.com<\/code><\/div>\n<div><code> <\/code><code>:gerente<\/code> <code>=&gt; principal, <\/code><code>:subgerente<\/code> <code>=&gt; secundario<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>A escolha dos nomes de nossas classes influencia o design e legibilidade de nosso c\u00f3digo direta e indiretamente, primeiro pela declara\u00e7\u00e3o das vari\u00e1veis e a nossa vis\u00e3o do dom\u00ednio. Depois pelas consequ\u00eancias que o mesmo possui na escolha dos nomes das vari\u00e1veis e m\u00e9todos, que permitem um design mais ou menos leg\u00edvel.<\/p>\n<p>Essa escolha \u00e9 t\u00e3o importante quanto o resto de seu design para facilitar a compreens\u00e3o do que seu dom\u00ednio \u00e9 e qual o problema que est\u00e1 tentando atacar. Na pr\u00f3xima vez que for declarar uma vari\u00e1vel com o mesmo nome que o tipo, pense duas vezes.<\/p>\n<p>Retirado de :\u00a0<a href=\"http:\/\/blog.caelum.com.br\/em-busca-do-nome-adequado-metodos-variaveis-e-classes\/\">http:\/\/blog.caelum.com.br\/em-busca-do-nome-adequado-metodos-variaveis-e-classes\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00c9 muito comum ap\u00f3s alguns dias de trabalho em um projeto perceber que as escolhas de nomes de classes e m\u00e9todos n\u00e3o condizem com o que cada um representa. Isso acontece pois, com o passar do tempo, aumenta o nosso conhecimento sobre o dom\u00ednio do problema. Tamb\u00e9m \u00e9 natural surgir o desejo de mudan\u00e7a: a &hellip; <a href=\"https:\/\/leonardocotta.com.br\/?p=158\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Em busca do nome adequado: m\u00e9todos, vari\u00e1veis e classes<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"footnotes":""},"categories":[26],"tags":[86,101,104,109,113,151,225,234],"class_list":["post-158","post","type-post","status-publish","format-standard","hentry","category-sem-categoria","tag-clean-code","tag-ddd","tag-design","tag-domain-driven-design","tag-engenharia","tag-java","tag-rails","tag-ruby"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u00c9 muito comum ap\u00f3s alguns dias de trabalho em um projeto perceber que as escolhas de nomes de classes e m\u00e9todos n\u00e3o condizem com o que cada um representa. Isso acontece pois, com o passar do tempo, aumenta o nosso conhecimento sobre o dom\u00ednio do problema. Tamb\u00e9m \u00e9 natural surgir o desejo de mudan\u00e7a: a\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"leonardocotta.com.br\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/leonardocotta.com.br\/?p=158\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Leonardo Cotta - Rascunhos de ideias\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Em busca do nome adequado: m\u00e9todos, vari\u00e1veis e classes - Leonardo Cotta\" \/>\n\t\t<meta property=\"og:description\" content=\"\u00c9 muito comum ap\u00f3s alguns dias de trabalho em um projeto perceber que as escolhas de nomes de classes e m\u00e9todos n\u00e3o condizem com o que cada um representa. Isso acontece pois, com o passar do tempo, aumenta o nosso conhecimento sobre o dom\u00ednio do problema. Tamb\u00e9m \u00e9 natural surgir o desejo de mudan\u00e7a: a\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/leonardocotta.com.br\/?p=158\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2011-07-29T21:26:52+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2011-07-29T21:26:52+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Em busca do nome adequado: m\u00e9todos, vari\u00e1veis e classes - Leonardo Cotta\" \/>\n\t\t<meta name=\"twitter:description\" content=\"\u00c9 muito comum ap\u00f3s alguns dias de trabalho em um projeto perceber que as escolhas de nomes de classes e m\u00e9todos n\u00e3o condizem com o que cada um representa. Isso acontece pois, com o passar do tempo, aumenta o nosso conhecimento sobre o dom\u00ednio do problema. Tamb\u00e9m \u00e9 natural surgir o desejo de mudan\u00e7a: a\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/leonardocotta.com.br\\\/?p=158#blogposting\",\"name\":\"Em busca do nome adequado: m\\u00e9todos, vari\\u00e1veis e classes - Leonardo Cotta\",\"headline\":\"Em busca do nome adequado: m\\u00e9todos, vari\\u00e1veis e classes\",\"author\":{\"@id\":\"https:\\\/\\\/leonardocotta.com.br\\\/?author=1#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/leonardocotta.com.br\\\/#organization\"},\"datePublished\":\"2011-07-29T21:26:52-03:00\",\"dateModified\":\"2011-07-29T21:26:52-03:00\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/leonardocotta.com.br\\\/?p=158#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/leonardocotta.com.br\\\/?p=158#webpage\"},\"articleSection\":\"Sem categoria, clean code, ddd, design, domain driven design, engenharia, java, rails, ruby\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/leonardocotta.com.br\\\/?p=158#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/leonardocotta.com.br#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/leonardocotta.com.br\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/leonardocotta.com.br\\\/?cat=26#listItem\",\"name\":\"Sem categoria\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/leonardocotta.com.br\\\/?cat=26#listItem\",\"position\":2,\"name\":\"Sem categoria\",\"item\":\"https:\\\/\\\/leonardocotta.com.br\\\/?cat=26\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/leonardocotta.com.br\\\/?p=158#listItem\",\"name\":\"Em busca do nome adequado: m\\u00e9todos, vari\\u00e1veis e classes\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/leonardocotta.com.br#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/leonardocotta.com.br\\\/?p=158#listItem\",\"position\":3,\"name\":\"Em busca do nome adequado: m\\u00e9todos, vari\\u00e1veis e classes\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/leonardocotta.com.br\\\/?cat=26#listItem\",\"name\":\"Sem categoria\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/leonardocotta.com.br\\\/#organization\",\"name\":\"leonardocotta.com.br\",\"description\":\"Rascunhos de ideias\",\"url\":\"https:\\\/\\\/leonardocotta.com.br\\\/\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/leonardocotta.com.br\\\/?author=1#author\",\"url\":\"https:\\\/\\\/leonardocotta.com.br\\\/?author=1\",\"name\":\"leonardocotta.com.br\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/leonardocotta.com.br\\\/?p=158#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/6c637812a6637b1b6eecffbc19c1b67e1e670e4918b4c3a7719fb134cee10e39?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"leonardocotta.com.br\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/leonardocotta.com.br\\\/?p=158#webpage\",\"url\":\"https:\\\/\\\/leonardocotta.com.br\\\/?p=158\",\"name\":\"Em busca do nome adequado: m\\u00e9todos, vari\\u00e1veis e classes - Leonardo Cotta\",\"description\":\"\\u00c9 muito comum ap\\u00f3s alguns dias de trabalho em um projeto perceber que as escolhas de nomes de classes e m\\u00e9todos n\\u00e3o condizem com o que cada um representa. Isso acontece pois, com o passar do tempo, aumenta o nosso conhecimento sobre o dom\\u00ednio do problema. Tamb\\u00e9m \\u00e9 natural surgir o desejo de mudan\\u00e7a: a\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/leonardocotta.com.br\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/leonardocotta.com.br\\\/?p=158#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/leonardocotta.com.br\\\/?author=1#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/leonardocotta.com.br\\\/?author=1#author\"},\"datePublished\":\"2011-07-29T21:26:52-03:00\",\"dateModified\":\"2011-07-29T21:26:52-03:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/leonardocotta.com.br\\\/#website\",\"url\":\"https:\\\/\\\/leonardocotta.com.br\\\/\",\"name\":\"leonardocotta.com.br\",\"description\":\"Rascunhos de ideias\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/leonardocotta.com.br\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Em busca do nome adequado: m\u00e9todos, vari\u00e1veis e classes - Leonardo Cotta","description":"\u00c9 muito comum ap\u00f3s alguns dias de trabalho em um projeto perceber que as escolhas de nomes de classes e m\u00e9todos n\u00e3o condizem com o que cada um representa. Isso acontece pois, com o passar do tempo, aumenta o nosso conhecimento sobre o dom\u00ednio do problema. Tamb\u00e9m \u00e9 natural surgir o desejo de mudan\u00e7a: a","canonical_url":"https:\/\/leonardocotta.com.br\/?p=158","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/leonardocotta.com.br\/?p=158#blogposting","name":"Em busca do nome adequado: m\u00e9todos, vari\u00e1veis e classes - Leonardo Cotta","headline":"Em busca do nome adequado: m\u00e9todos, vari\u00e1veis e classes","author":{"@id":"https:\/\/leonardocotta.com.br\/?author=1#author"},"publisher":{"@id":"https:\/\/leonardocotta.com.br\/#organization"},"datePublished":"2011-07-29T21:26:52-03:00","dateModified":"2011-07-29T21:26:52-03:00","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/leonardocotta.com.br\/?p=158#webpage"},"isPartOf":{"@id":"https:\/\/leonardocotta.com.br\/?p=158#webpage"},"articleSection":"Sem categoria, clean code, ddd, design, domain driven design, engenharia, java, rails, ruby"},{"@type":"BreadcrumbList","@id":"https:\/\/leonardocotta.com.br\/?p=158#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/leonardocotta.com.br#listItem","position":1,"name":"Home","item":"https:\/\/leonardocotta.com.br","nextItem":{"@type":"ListItem","@id":"https:\/\/leonardocotta.com.br\/?cat=26#listItem","name":"Sem categoria"}},{"@type":"ListItem","@id":"https:\/\/leonardocotta.com.br\/?cat=26#listItem","position":2,"name":"Sem categoria","item":"https:\/\/leonardocotta.com.br\/?cat=26","nextItem":{"@type":"ListItem","@id":"https:\/\/leonardocotta.com.br\/?p=158#listItem","name":"Em busca do nome adequado: m\u00e9todos, vari\u00e1veis e classes"},"previousItem":{"@type":"ListItem","@id":"https:\/\/leonardocotta.com.br#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/leonardocotta.com.br\/?p=158#listItem","position":3,"name":"Em busca do nome adequado: m\u00e9todos, vari\u00e1veis e classes","previousItem":{"@type":"ListItem","@id":"https:\/\/leonardocotta.com.br\/?cat=26#listItem","name":"Sem categoria"}}]},{"@type":"Organization","@id":"https:\/\/leonardocotta.com.br\/#organization","name":"leonardocotta.com.br","description":"Rascunhos de ideias","url":"https:\/\/leonardocotta.com.br\/"},{"@type":"Person","@id":"https:\/\/leonardocotta.com.br\/?author=1#author","url":"https:\/\/leonardocotta.com.br\/?author=1","name":"leonardocotta.com.br","image":{"@type":"ImageObject","@id":"https:\/\/leonardocotta.com.br\/?p=158#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/6c637812a6637b1b6eecffbc19c1b67e1e670e4918b4c3a7719fb134cee10e39?s=96&d=mm&r=g","width":96,"height":96,"caption":"leonardocotta.com.br"}},{"@type":"WebPage","@id":"https:\/\/leonardocotta.com.br\/?p=158#webpage","url":"https:\/\/leonardocotta.com.br\/?p=158","name":"Em busca do nome adequado: m\u00e9todos, vari\u00e1veis e classes - Leonardo Cotta","description":"\u00c9 muito comum ap\u00f3s alguns dias de trabalho em um projeto perceber que as escolhas de nomes de classes e m\u00e9todos n\u00e3o condizem com o que cada um representa. Isso acontece pois, com o passar do tempo, aumenta o nosso conhecimento sobre o dom\u00ednio do problema. Tamb\u00e9m \u00e9 natural surgir o desejo de mudan\u00e7a: a","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/leonardocotta.com.br\/#website"},"breadcrumb":{"@id":"https:\/\/leonardocotta.com.br\/?p=158#breadcrumblist"},"author":{"@id":"https:\/\/leonardocotta.com.br\/?author=1#author"},"creator":{"@id":"https:\/\/leonardocotta.com.br\/?author=1#author"},"datePublished":"2011-07-29T21:26:52-03:00","dateModified":"2011-07-29T21:26:52-03:00"},{"@type":"WebSite","@id":"https:\/\/leonardocotta.com.br\/#website","url":"https:\/\/leonardocotta.com.br\/","name":"leonardocotta.com.br","description":"Rascunhos de ideias","inLanguage":"en-US","publisher":{"@id":"https:\/\/leonardocotta.com.br\/#organization"}}]},"og:locale":"en_US","og:site_name":"Leonardo Cotta - Rascunhos de ideias","og:type":"article","og:title":"Em busca do nome adequado: m\u00e9todos, vari\u00e1veis e classes - Leonardo Cotta","og:description":"\u00c9 muito comum ap\u00f3s alguns dias de trabalho em um projeto perceber que as escolhas de nomes de classes e m\u00e9todos n\u00e3o condizem com o que cada um representa. Isso acontece pois, com o passar do tempo, aumenta o nosso conhecimento sobre o dom\u00ednio do problema. Tamb\u00e9m \u00e9 natural surgir o desejo de mudan\u00e7a: a","og:url":"https:\/\/leonardocotta.com.br\/?p=158","article:published_time":"2011-07-29T21:26:52+00:00","article:modified_time":"2011-07-29T21:26:52+00:00","twitter:card":"summary_large_image","twitter:title":"Em busca do nome adequado: m\u00e9todos, vari\u00e1veis e classes - Leonardo Cotta","twitter:description":"\u00c9 muito comum ap\u00f3s alguns dias de trabalho em um projeto perceber que as escolhas de nomes de classes e m\u00e9todos n\u00e3o condizem com o que cada um representa. Isso acontece pois, com o passar do tempo, aumenta o nosso conhecimento sobre o dom\u00ednio do problema. Tamb\u00e9m \u00e9 natural surgir o desejo de mudan\u00e7a: a"},"aioseo_meta_data":{"post_id":"158","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2024-02-26 13:59:17","updated":"2025-06-04 11:40:03","seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/leonardocotta.com.br\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/leonardocotta.com.br\/?cat=26\" title=\"Sem categoria\">Sem categoria<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tEm busca do nome adequado: m\u00e9todos, vari\u00e1veis e classes\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/leonardocotta.com.br"},{"label":"Sem categoria","link":"https:\/\/leonardocotta.com.br\/?cat=26"},{"label":"Em busca do nome adequado: m\u00e9todos, vari\u00e1veis e classes","link":"https:\/\/leonardocotta.com.br\/?p=158"}],"_links":{"self":[{"href":"https:\/\/leonardocotta.com.br\/index.php?rest_route=\/wp\/v2\/posts\/158","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/leonardocotta.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/leonardocotta.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/leonardocotta.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/leonardocotta.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=158"}],"version-history":[{"count":0,"href":"https:\/\/leonardocotta.com.br\/index.php?rest_route=\/wp\/v2\/posts\/158\/revisions"}],"wp:attachment":[{"href":"https:\/\/leonardocotta.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=158"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/leonardocotta.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=158"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/leonardocotta.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=158"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}