<?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>Refatorando Padrões &#187; Ruby</title>
	<atom:link href="http://www.refatorandopadroes.com.br/category/ruby/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.refatorandopadroes.com.br</link>
	<description>Programação orientada às melhores práticas</description>
	<lastBuildDate>Mon, 03 Sep 2007 12:40:10 +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>Getting Real, o princípio K.I.S.S. aplicado em metodologia</title>
		<link>http://www.refatorandopadroes.com.br/2007/04/25/getting-real-o-principio-kiss-aplicado-em-metodologia/</link>
		<comments>http://www.refatorandopadroes.com.br/2007/04/25/getting-real-o-principio-kiss-aplicado-em-metodologia/#comments</comments>
		<pubDate>Wed, 25 Apr 2007 15:23:17 +0000</pubDate>
		<dc:creator>Carlos</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Metodologias]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.refatorandopadroes.com.br/?p=16</guid>
		<description><![CDATA[Faz pouco mais de 4 meses que comecei a utilizar Rails em alguns projetos, mas Java ainda é minha linguagem do coração, e algo que me surpreendeu muito foi a filosofia por trás do Rails, ele não é um framework matador de horda de dragões, e não é pra ser mesmo, seu próprio criador David [...]]]></description>
			<content:encoded><![CDATA[<p>Faz pouco mais de 4 meses que comecei a utilizar Rails em alguns projetos, mas Java ainda é minha linguagem do coração, e algo que me surpreendeu muito foi a filosofia por trás do Rails, ele não é um framework matador de horda de dragões, e não é pra ser mesmo, seu próprio criador <a href="http://www.loudthinking.com/">David Heinemeier Hansson</a> não tem a intenção de adicionar um milhão de funcionalidades, e tem motivo pra isso, trabalha na <a href="http://www.37signals.com/">37signals</a>, prercursora da metodologia <a href="http://gettingreal.37signals.com/GR_por.php">Getting Real</a>, uma verdadeira aula de como evitar a burocracia e extrair muita produtividade, considero o livro radical em alguns pontos, mas isso é questão de opinião, e é claro adequação à realidade do seu projeto.</p>
<p>E aqui cabe a pergunta, você não está fazendo coisas demais no seu projeto ?</p>
<p>Os frameworks hoje em dia parecem querer abraçar o mundo, querem estar em todos os tipos de projetos, seus criadores prometem funcionalidades novas e/ou extravagantes a cada dia, e nessa vontade de fazê-lo crescer, vai tornando-o apenas cada vez mais &#8220;gordo&#8221;, de difícil manutenção, e com isso nenhum projeto é ajudado. Sem contar a ausência de testes em muitos deles. Não quero dizer que Rails é o melhor de todos, estou citando apenas a filosofia por trás dele, há outros frameworks ótimos no mercado, tudo depende de pensar no que essencialmente o projeto precisa e com isso encontrar o framework correto.</p>
<p>Uma resposta para a enorme &#8220;gordura&#8221; de alguns frameworks é sempre: &#8220;Seu projeto tende a crescer, você vai precisar dos demais recursos oferecidos&#8221;. Sinceramente não gostaria de precisar usar tudo, não quero complexidade demais no projeto só para ganhar mais manutenção. Gosto da filosofia <a href="http://en.wikipedia.org/wiki/KISS_principle">K.I.S.S. (Keep It Simple Stupid)</a>. O que o meu cliente vai ganhar com esta funcionalidade X ? Ela é realmente é necessária ? Quanto mais simples, menos manutenção, mais tempo você tem para funcionalidades novas e simples.</p>
<p>Vocês podem pensar que isso é preguiça mas não é, recentemente houve um caso interessante, eu precisava adicionar um editor de texto na aplicação, escolhi o excelente <a href="http://www.fckeditor.net/">FckEditor</a>, ele possui ótimas funcionalidades para um editor de texto em browser, a primeira coisa que fiz foi reduzir a quantidade de botões. Apresentei ao cliente, ele usou um pouco e disse &#8220;acho que o pessoal vai estranhar um pouco a princípio, tem como melhorar o layout ?&#8221;, mas o problema não era layout, observando como ele usou a ferramenta reduzi novamente a quantidade de botões para ter apenas o que ele realmente precisava e apresentei novamente. O resultado: &#8220;Puxa o layout melhorou mesmo, mais intuitivo&#8221;, ele nem reparou que a quantidade de botões foi diminuída, eu apenas apresentei o que ele precisava, e nem uma linha a mais. Se o seu cliente precisa de uma funcionalidade supérflua, que ele pediu por impulso, convença-o do contrário, ou ambos sofrerão com uma funcionalidade que talvez nem seja usada, está lá apenas para formentar a entropia.</p>
<p>É como o novato que lê um livro sobre padrões de projeto e acha que deve usar todos de uma vez, é necessário pensar no básico. Keep It Simple!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.refatorandopadroes.com.br/2007/04/25/getting-real-o-principio-kiss-aplicado-em-metodologia/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Como a filosofia de convenção ao invés de configuração do Rails enganou um novato</title>
		<link>http://www.refatorandopadroes.com.br/2007/03/28/como-a-filosofia-de-convencao-ao-inves-de-configuracao-do-rails-enganou-um-novato/</link>
		<comments>http://www.refatorandopadroes.com.br/2007/03/28/como-a-filosofia-de-convencao-ao-inves-de-configuracao-do-rails-enganou-um-novato/#comments</comments>
		<pubDate>Wed, 28 Mar 2007 14:21:06 +0000</pubDate>
		<dc:creator>Carlos</dc:creator>
				<category><![CDATA[Padrões]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.refatorandopadroes.com.br/?p=13</guid>
		<description><![CDATA[Há cerca de 3 meses resolvi me aventurar no mundo da linguagem Ruby, embora estivesse curioso há um bom tempo, foi mais por necessidade do que curiosidade, e como não poderia deixar de ser, utilizando o framework Rails. Só tenho a dizer o quanto a dupla Ruby+Rails me surpreende a cada dia, mas não é [...]]]></description>
			<content:encoded><![CDATA[<p>Há cerca de 3 meses resolvi me aventurar no mundo da linguagem Ruby, embora estivesse curioso há um bom tempo, foi mais por necessidade do que curiosidade, e como não poderia deixar de ser, utilizando o framework Rails. Só tenho a dizer o quanto a dupla Ruby+Rails me surpreende a cada dia, mas não é por isso que deixarei de utilizar Java, prefiro trabalhar com ambas as linguagens, escolhendo a que melhor convier ao projeto, prazo, custo e hospedagem, mas esta história fica pra outro post.</p>
<p>Como todo novato, apanhei feio no início, e é claro ainda estou tropeçando, mas o que mais me fez rir foi não ficar atento a filosofia do Rails de &#8220;convenção ao invés de configuração&#8221;, ou seja, seguir padrões de nomes de métodos, classes, estrutura de diretórios, etc. Há um &#8220;jeito&#8221; certo de se estruturar o código seguindo esta filosofia, e quando você sai dela é que sua dor de cabeça começa, é normal encontrar pessoas zangadas com erros estranhos que só acontecem por não ter seguido as regras. As pessoas ficam bravas pois estão acostumados a seguir um modo rotineiro de estruturação. Bem estas pessoas que se adaptem às coisas novas. Pessoalmente se um framework segue &#8220;convenção ao invés de configuração&#8221; já consegue me atrair logo de cara pois eu entendo isso como &#8220;me faça ter menos trabalho pra utilizar você&#8221;.</p>
<p>O meu erro foi ter &#8220;apenas&#8221; criado no modelo uma coluna com nome &#8220;type&#8221;. O que eu não sabia, é que para o Rails, uma coluna &#8220;type&#8221;, é reservada automaticamente para salvar o class-name do objeto na tabela, para caso você necessitar de um <a href="http://www.martinfowler.com/eaaCatalog/singleTableInheritance.html" title="Modelo de herança simples" target="_blank">modelo de herança simples</a>. Vamos supor um objeto Cachorro e outro Gato, ambas descendem do objeto Animal, mas há uma única tabela (Animal) para salvar Cachorro e Gato, a coluna &#8220;type&#8221; seria automaticamente preenchida com o class-name correspondente do objeto, para que ao consultar o registro, o Rails saiba que objeto deve criar. Óbvio que esta não era minha intenção, após ver sucessivas vezes o erro &#8220;:in `instance_eval&#8217;: compile error&#8221; e consultar a documentação, descobri o motivo.</p>
<p>Não posso culpar o Rails, é um padrão dele, assim como outros nomes também são reservados como created_at e id, são os chamados <a href="http://wiki.rubyonrails.org/rails/pages/MagicFieldNames" title="Magic Fields" target="_blank">MagicFieldNames</a>. Resumindo: ao trabalhar com &#8220;convenção ao invés de configuração&#8221; lembrem-se sempre de olhar quais convenções são estas, vai te prevenir muitos erros e com certeza vai aumentar em muito sua produtividade, afinal o padrão está lá pra ser seguido.</p>
<p>Ah sim, caso você realmente precise de uma coluna chamada type para outros fins, basta sobrescrever o seguinte método no modelo:</p>
<p>def self.inheritance_column<br />
&#8220;&lt;nome da coluna a ser utilizada ao invés de type&gt;&#8221;<br />
end</p>
<p>Pronto, agora o Rails utilizará esta coluna para salvar o class-name e a type fica livre para fazer o que melhor convier, embora eu não recomende fazer isso.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.refatorandopadroes.com.br/2007/03/28/como-a-filosofia-de-convencao-ao-inves-de-configuracao-do-rails-enganou-um-novato/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
