<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>marcuscavalcanti.net &#187; getter/setter</title>
	<atom:link href="http://www.marcuscavalcanti.net/blog/tag/gettersetter/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.marcuscavalcanti.net/blog</link>
	<description>Software, tecnologia e etc.</description>
	<lastBuildDate>Wed, 21 Jul 2010 03:52:18 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Getters e Setters?</title>
		<link>http://www.marcuscavalcanti.net/blog/2009/01/14/getters-e-setters/</link>
		<comments>http://www.marcuscavalcanti.net/blog/2009/01/14/getters-e-setters/#comments</comments>
		<pubDate>Thu, 15 Jan 2009 02:52:06 +0000</pubDate>
		<dc:creator>Marcus Cavalcanti</dc:creator>
				<category><![CDATA[Arquitetura e Padrões]]></category>
		<category><![CDATA[getter/setter]]></category>
		<category><![CDATA[OO]]></category>

		<guid isPermaLink="false">http://www.marcuscavalcanti.net/blog/?p=89</guid>
		<description><![CDATA[Logo quando comecei a programar orientado a objetos, percebi que muitas aplicações faziam o uso dos famosos pares get/set, então a primeira coisa que eu fazia ao construir uma classe, era pedir para que a IDE gerasse esses pares dos meus atributos privados antes mesmo de fazer qualquer coisa. Mas o que eu não me [...]]]></description>
			<content:encoded><![CDATA[<p>Logo quando comecei a programar orientado a objetos, percebi que muitas aplicações faziam o uso dos famosos pares get/set, então a primeira coisa que eu fazia ao construir uma classe, era pedir para que a IDE gerasse esses pares dos meus atributos privados antes mesmo de fazer qualquer coisa. Mas o que eu não me questionava, era sobre o real motivo do uso dessa dupla.</p>
<p>Hoje em dia vejo muitas aplicações que cometem esse mesmo equívoco que eu cometia há alguns anos atrás, fazem o uso do recurso (que nesse caso passaria a não ser um recurso) sem saber a razão, isso me remete até ao <a href="http://www.marcuscavalcanti.net/blog/2009/01/09/frameworks-x-desenvolvedores/" style="text-decoration: underline" target="_blank">meu primeiro post</a>.</p>
<p>Essa questão sobre o uso de getters e setters tem muito a ver como as coisas são feitas hoje em dia em relação ao desenvolvimento de software, principalmente em desenvolvimento para web, eu diria. Perdeu-se o seu principal foco, razões e objetivos e com isso surgem casos como o uso desenfreado dos getters e setters.</p>
<p>Getters e setters devem ser originalmente usados para encapsular seus atributos, evitando assim que eles sejam acessados diretamente. Dessa forma podemos aplicar determinada regra de negócio antes de atribuir valor a um atributo. Não é necessário, por exemplo, usar getters e setters em alguns objetos que serão imutáveis, ou então, apenas em objetos que servem para receber valor, nesses casos os getters e setters tornariam-se desnecessários.</p>
<p>Hoje em dia só faço o uso dessa dupla, quando realmente sinto essa necessidade, quando sei que meu atributo poderá vir a ter uma regra de negócio específica ou por algum motivo muito peculiar (ver mais abaixo), caso contrário, não uso. Em muitos casos passar os valores para o objeto utilizando o método construtor já resolveria o problema de forma simplória.</p>
<p>Deve-se considerar também, a possibilidade do seu software ser uma API aberta, usada e modificada por outros desenvolvedores, onde talvez você não tenha necessidade de um getter/setter, mas provavelmente para fornecer uma maior flexibilidade do código &#8211; considerando a possibilidade dele ser extendido &#8211; talvez seja interessante disponibilizar os tais pares. Da mesma forma que para <em>debugar</em> um código, talvez seja interessante fazer o uso de getters e setters para saber o valor que está sendo atribuído a uma variável, ao invés de espalhar milhões de breakpoint pelo código.</p>
<p><strong>Links Interessantes</strong><br />
<a href="http://blog.fragmental.com.br/2006/03/04/fowler-e-getters/" style="text-decoration: underline" target="_blank">Fowler e Getters</a><br />
<a href="http://martinfowler.com/bliki/GetterEradicator.html" style="text-decoration: underline" target="_blank">Getter Erradictor</a><br />
<a href="http://www.javaworld.com/javaworld/jw-09-2003/jw-0905-toolbox.html" style="text-decoration: underline" target="_blank">Why getter and setter methods are evil</a><br />
<a href="http://blog.caelum.com.br/2006/09/14/nao-aprender-oo-getters-e-setters/"  style="text-decoration: underline" target="_blank">Como não aprender Java e orientação a objetos</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.marcuscavalcanti.net/blog/2009/01/14/getters-e-setters/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
