<?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>Saga do programador &#187; Java</title>
	<atom:link href="http://www.sagadoprogramador.com.br/tag/java/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.sagadoprogramador.com.br</link>
	<description></description>
	<lastBuildDate>Wed, 18 Aug 2010 13:34:02 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Analisando o codigo escrito anteriormente.</title>
		<link>http://www.sagadoprogramador.com.br/2009/12/analisando-o-codigo-escrito-anteriormente/</link>
		<comments>http://www.sagadoprogramador.com.br/2009/12/analisando-o-codigo-escrito-anteriormente/#comments</comments>
		<pubDate>Sat, 12 Dec 2009 16:42:57 +0000</pubDate>
		<dc:creator>Sergio Azevedo Junior</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[OO]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[principios]]></category>
		<category><![CDATA[principiosOO]]></category>

		<guid isPermaLink="false">http://www.sagadoprogramador.com.br/?p=381</guid>
		<description><![CDATA[Terminei meu post anterior com a pergunta: "Este código está bom? Porque?"
Para analizar um código, assim como qualquer outra coisa, nós precisamos de parâmetros. Precisamos nos basear em algo que saibamos que seja bom, para assim podermos determinar se outra coisa é tão boa quanto, melhor, ou até pior.
Com código não é diferente. Então antes [...]]]></description>
			<content:encoded><![CDATA[<p>Terminei meu post <a href="http://www.sagadoprogramador.com.br/2009/10/esse-codigo-que-acabei-de-escrever-esta-bom/">anterior</a> com a pergunta: "Este código está bom? Porque?"</p>
<p>Para analizar um código, assim como qualquer outra coisa, nós precisamos de parâmetros. Precisamos nos basear em algo que saibamos que seja bom, para assim podermos determinar se outra coisa é tão boa quanto, melhor, ou até pior.</p>
<p>Com código não é diferente. Então antes de respondermos a pergunta feita no inicio deste texto, precisamos definir o que é um código bom, ou melhor, que caracteristicas deve ter um codigo para ser considerado bom. Vamos agora recorrer a alguns principios OO para nos municiar de paramêtros para assim julgarmos o codigo em questão</p>
<p><a href="http://www.objectmentor.com/omTeam/martin_r.html">Robert Martin</a>, o uncle Bob, escreveu a muito tempo sobre os principios OO num documento chamado: <a href="http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod">PrinciplesOfOod</a>. Dos principios OO descritos neste artigo, pelo menos 5 ficaram bastante famosos, e são conhecidos pela sigla <strong>SOLID</strong>, são eles:<br />
<span id="more-381"></span><br />
<strong><a href="http://www.codingefficiency.com/2009/07/18/solid-s-single-responsibility-principle/">S</a></strong><a href="http://www.codingefficiency.com/2009/07/18/solid-s-single-responsibility-principle/">ingle Responsibility Principle (SRP)</a> - <em>A classe deve ter uma única responsabilidade, uma única razão de existir.</em></p>
<p><em><span style="font-style: normal;"><strong><a href="http://www.codingefficiency.com/2009/07/20/solid-o-open-closed-principle/">O</a></strong><a href="http://www.codingefficiency.com/2009/07/20/solid-o-open-closed-principle/">pen Closed Principle (OCP)</a> - <em>A classe deve ser aberta para extensão (sublcasses e sobrescrita de metodos) e fechada para modifiação *</em></span></em></p>
<p><strong><a href="http://www.codingefficiency.com/2009/07/21/solid-l-liskov-substitution-principle/">L</a></strong><a href="http://www.codingefficiency.com/2009/07/21/solid-l-liskov-substitution-principle/">iskov Substitution Principle (LSP)</a> - <em>Resumidamente ele serve para nos aletar para heranças sem sentido.</em></p>
<p><strong><a href="http://www.codingefficiency.com/2009/07/23/solid-i-interface-segregation-principle/">I</a></strong><a href="http://www.codingefficiency.com/2009/07/23/solid-i-interface-segregation-principle/">nterface Segregation Principle (ISP)</a> - <em>Defende que uma classe deve depender apenas dos métodos que usa de uma outra classe. Interfaces são um mecanismo para isso.</em></p>
<p><strong><a href="http://www.codingefficiency.com/2009/07/27/solid-d-dependency-inversion-principle/">D</a></strong><span><a href="http://www.codingefficiency.com/2009/07/27/solid-d-dependency-inversion-principle/">ependency Inversion Principle</a></span><a href="http://www.codingefficiency.com/2009/07/27/solid-d-dependency-inversion-principle/"> (ISP)</a> - <em>Defende que componentes maiores devem depender não de componentes menores, mas sim de uma abstração deles.</em></p>
<p><em>*Pode ser discutido, principalmente se você estiver trabalhando em um modelo de dominio incremental, ou seja, você vai descobrindo as necessidades de suas classes durante o desenvolvimento de software. Neste cenário o principio OCP pode ser radical demais. Lembre-se é preciso ter bom senso.</em></p>
<p>Dos principios descritos por Robert Martin, ficaremos apenas com o SRP. Sabendo agora que <em>uma classe deve possuir apenas uma úncia responsabilidade.</em> Quantas responsabilidades podemos identificar na classe Principal do post <a href="http://www.sagadoprogramador.com.br/2009/10/esse-codigo-que-acabei-de-escrever-esta-bom/">anterior</a>?</p>
<p>Podemos identificar facilmente 3 responsabilidades. São elas:</p>
<p>1 - Controla a execução da aplicação.</p>
<p>2 - Cadastra um novo DVD</p>
<p>3 - Lista todos os DVD's cadastrados</p>
<p>Agora ficou facil ver que a classe Principal está <em>ferindo </em>o SRP. A resposabilidade desta classe deveria ser apenas: <em>Controlar a execução da aplicação. </em>Precisamos retirar da classe Principal as demais responsabilidades. Como faremos isso?</p>
<p>A melhor solução é remover todo o código "extra" da classe Principal. Mas o grande problema, é que sem esse codigo nossa aplicação vai parar de funcionar! Este código não pode simplesmente desaparecer. O que nós precisamos fazer e leva-lo para outro lugar. E como estamos programando segundo o paradigma de Orientação a Objetos, vamos precisar de novas classes para cada uma das responsabilidades descritas acima.</p>
<p>Teriamos as seguintes classes com as seguintes responsabilidades:</p>
<p><em><span style="color: #333399;">Classe</span><span style="color: #0000ff;">:</span></em><em> Principal </em></p>
<p><em><span style="color: #333399;">Responsabilidade</span></em><em>: Controlar a execucao da aplicação</em></p>
<p><em><span style="color: #333399;">Classe</span><span style="color: #0000ff;">:</span> CadastrarDvd </em></p>
<p><em><em><span style="color: #333399;">Responsabilidade</span></em><em>:</em> Cuidar da lógica de inclusao de um dvd</em></p>
<p><em><span style="color: #333399;">Classe</span><span style="color: #0000ff;">:</span> ListarTodosDvds</em></p>
<p><em><em><span style="color: #333399;">Responsabilidade</span></em><em>:</em> Cuidar da lógica de exibicao dos dvd's</em></p>
<p>Após estas alterações vamos perceber que a classe Principal ficou bem melhor.</p>
<p>Mas será que isso foi suficiente? Apenas esta alteração terá salvado a vida de nossa pequena aplicação?</p>
<p>Tente aplicar você mesmo o SRP em nossas novas classes e comente a respeito. No proximo post continuamos nossa <em>saga</em>.</p>
<p>Abraços.</p>
<p>Sergio Azevedo Junior</p>
<p>Confira abaixo como ficaram nossas classes:</p>
<p>Principal</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> <span style="color: #003399;">Principal</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">void</span> main<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> args<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">throws</span> <span style="color: #003399;">IOException</span> <span style="color: #009900;">&#123;</span>
    Scanner scan <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Scanner<span style="color: #009900;">&#40;</span><span style="color: #003399;">System</span>.<span style="color: #006633;">in</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">int</span> opcao <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">do</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;--------------- Controle de Dvds e Cds ---------------&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;   1 - Cadastrar Novo Dvd &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;   2 - Listar Dvd's &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;   3 - Terminar &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;------------------------------------------------------&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot; Escolha uma opção:--&amp;gt; &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
      opcao <span style="color: #339933;">=</span> scan.<span style="color: #006633;">nextInt</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #000000; font-weight: bold;">switch</span> <span style="color: #009900;">&#40;</span>opcao<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #000000; font-weight: bold;">case</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">new</span> CadastraDvd<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">executa</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span>
      <span style="color: #000000; font-weight: bold;">case</span> <span style="color: #cc66cc;">2</span><span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">new</span> ListaTodosDvds<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">executa</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span>
      <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">while</span> <span style="color: #009900;">&#40;</span>opcao <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span> <span style="color: #cc66cc;">3</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>CadastraDvds</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> CadastraDvd <span style="color: #009900;">&#123;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> executa<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">throws</span> <span style="color: #003399;">IOException</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #003399;">PrintStream</span> ps <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #339933;">;</span>
    <span style="color: #003399;">File</span> file <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">File</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Dvds.txt&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #003399;">BufferedReader</span> br <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">BufferedReader</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">InputStreamReader</span><span style="color: #009900;">&#40;</span><span style="color: #003399;">System</span>.<span style="color: #006633;">in</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span>
      ps <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">PrintStream</span><span style="color: #009900;">&#40;</span>file<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
      Dvd dvd <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Dvd<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Titulo.: &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      dvd.<span style="color: #006633;">setTitulo</span><span style="color: #009900;">&#40;</span>br.<span style="color: #006633;">readLine</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Sinopse: &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      dvd.<span style="color: #006633;">setSinopse</span><span style="color: #009900;">&#40;</span>br.<span style="color: #006633;">readLine</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Genero.: &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      dvd.<span style="color: #006633;">setGenero</span><span style="color: #009900;">&#40;</span>br.<span style="color: #006633;">readLine</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Ano....: &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      dvd.<span style="color: #006633;">setAno</span><span style="color: #009900;">&#40;</span>br.<span style="color: #006633;">readLine</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Duracao: &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      dvd.<span style="color: #006633;">setDuracao</span><span style="color: #009900;">&#40;</span>br.<span style="color: #006633;">readLine</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
      ps.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>dvd.<span style="color: #006633;">getTitulo</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      ps.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>dvd.<span style="color: #006633;">getSinopse</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      ps.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>dvd.<span style="color: #006633;">getGenero</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      ps.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>dvd.<span style="color: #006633;">getAno</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      ps.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>dvd.<span style="color: #006633;">getDuracao</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">finally</span> <span style="color: #009900;">&#123;</span>
      br.<span style="color: #006633;">close</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>ps <span style="color: #339933;">!=</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span>
        ps.<span style="color: #006633;">close</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>ListaTodosDvds</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> ListaTodosDvds <span style="color: #009900;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> executa<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">throws</span> <span style="color: #003399;">FileNotFoundException</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;------------- Lista de Dvd's -------------&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    Scanner reader <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Scanner<span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">File</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Dvds.txt&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">while</span> <span style="color: #009900;">&#40;</span>reader.<span style="color: #006633;">hasNext</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>reader.<span style="color: #006633;">nextLine</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    reader.<span style="color: #006633;">close</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.sagadoprogramador.com.br/2009/12/analisando-o-codigo-escrito-anteriormente/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Esse código que acabei de escrever está bom?</title>
		<link>http://www.sagadoprogramador.com.br/2009/10/esse-codigo-que-acabei-de-escrever-esta-bom/</link>
		<comments>http://www.sagadoprogramador.com.br/2009/10/esse-codigo-que-acabei-de-escrever-esta-bom/#comments</comments>
		<pubDate>Thu, 15 Oct 2009 05:39:28 +0000</pubDate>
		<dc:creator>Sergio Azevedo Junior</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[OO]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[boas práticas]]></category>

		<guid isPermaLink="false">http://www.sagadoprogramador.com.br/?p=336</guid>
		<description><![CDATA[Depois de aprender Java, o grande desafio é como escrever boas aplicações. Saber se nosso codigo está bom ou se ele "fede" é sempre um desafio. Com objetivo de auxiliar os estudantes de Java, e os desenvolvedores iniciantes estou dando inicio a uma série de posts que tem por objetivo formar um senso critico no desenvolvedor.
Espero que vocês gostem.
Abraços.]]></description>
			<content:encoded><![CDATA[<p>No inicio do aprendizado da linguagem Java, tudo é dificil. Não conseguimos nem mesmo converter um string em um numero ou vice e versa. Pra superar estas dificuldades recorremos a livros, apostilas, fóruns, blogs ou cursos.</p>
<p>Depois de ler livros, ou fazer cursos, essas "dificuldades operacionais" desaparecem, afinal aprendemos a usar melhor a linguagem e passamos a conhecer melhor suas apis. Nesse ponto já somos capazes de por exemplo converter um String em um numero, criar e organizar listas de elementos, usar arquivos para realizar operações de leitura e escrita.<span id="more-336"></span></p>
<p>Uma vez que já sabemos criar aplicações em Java, precisamos nos perguntar outras coisas:</p>
<p style="text-align: left;"><em></em></p>
<p><em></em></p>
<ul>
<li>"As aplicações que criamos foram constuidas da melhor maneira possível?"</li>
<li>"Meu código está orientado a objetos, ou é apenas procedural Java?"</li>
<li>"Como eu identifico o que deve e o que nao deve ser uma classe no meu sistema?"</li>
</ul>
<p>A boa noticia é que estas perguntas possuem respostas. A má noticia é que eu não vou dar todas as respostas de bandeja a vocês. Ao invés disso vamos aprender a ter "senso critico" sobre o código que escrevemos.  Para isso vamos começar simplesmente criando uma pequena e simples aplicação Java para cadastro e consulta de  Dvd's.</p>
<p>Em geral, nos preocupamos primeiramente em escrever uma aplicação que funcione, e talvez esta atitude nos leve a não ter uma aplicação bem construida. Existem várias "desculpas" que podemos utilizar para justificar esse tipo de construção, mas dentre elas destacam-se as classicas:<strong> "nao tenho tempo"</strong> e<strong> "o cronograma está apertado"</strong>. =)</p>
<p>Nesta primeira etapa estamos interessados em escrever uma aplicação que funcione. ( Talvez porque estejamos sem tempo =p )</p>
<p>Bem, para isso nos vamos precisar da classe Dvd, entao:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Dvd <span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #003399;">String</span> titulo<span style="color: #339933;">;</span>
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #003399;">String</span> sinopse<span style="color: #339933;">;</span>
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #003399;">String</span> genero<span style="color: #339933;">;</span>
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #003399;">String</span> ano<span style="color: #339933;">;</span>
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #003399;">String</span> duracao<span style="color: #339933;">;</span>
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000066; font-weight: bold;">boolean</span> emprestado<span style="color: #339933;">;</span>
        <span style="color: #666666; font-style: italic;">//Gets e Sets</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Agora vamos a nossa classe "principal":</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> <span style="color: #003399;">Principal</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000066; font-weight: bold;">void</span> main<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> args<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">throws</span> <span style="color: #003399;">FileNotFoundException</span> <span style="color: #009900;">&#123;</span>
		Scanner scan <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Scanner<span style="color: #009900;">&#40;</span><span style="color: #003399;">System</span>.<span style="color: #006633;">in</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000066; font-weight: bold;">int</span> opcao <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
		<span style="color: #000000; font-weight: bold;">do</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>
					.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;--------------- Controle de Dvds e Cds ---------------&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;   1 - Cadastrar Novo Dvd &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;   2 - Listar Dvd's &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;   3 - Terminar &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>
					.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;------------------------------------------------------&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot; Escolha uma opção:--&amp;gt; &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
			opcao <span style="color: #339933;">=</span> scan.<span style="color: #006633;">nextInt</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
			<span style="color: #000000; font-weight: bold;">switch</span> <span style="color: #009900;">&#40;</span>opcao<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #000000; font-weight: bold;">case</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span>
				<span style="color: #003399;">BufferedReader</span> br <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">BufferedReader</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">InputStreamReader</span><span style="color: #009900;">&#40;</span>
						<span style="color: #003399;">System</span>.<span style="color: #006633;">in</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #003399;">PrintStream</span> ps <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">PrintStream</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">File</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Dvds.txt&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #000000; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span>
					Dvd dvd <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Dvd<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
					<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Titulo.: &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
					dvd.<span style="color: #006633;">setTitulo</span><span style="color: #009900;">&#40;</span>br.<span style="color: #006633;">readLine</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
					<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Sinopse: &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
					dvd.<span style="color: #006633;">setSinopse</span><span style="color: #009900;">&#40;</span>br.<span style="color: #006633;">readLine</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
					<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Genero.: &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
					dvd.<span style="color: #006633;">setGenero</span><span style="color: #009900;">&#40;</span>br.<span style="color: #006633;">readLine</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
					<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Ano....: &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
					dvd.<span style="color: #006633;">setAno</span><span style="color: #009900;">&#40;</span>br.<span style="color: #006633;">readLine</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
					<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Duracao: &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
					dvd.<span style="color: #006633;">setDuracao</span><span style="color: #009900;">&#40;</span>br.<span style="color: #006633;">readLine</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
					ps.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>dvd.<span style="color: #006633;">getTitulo</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
					ps.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>dvd.<span style="color: #006633;">getSinopse</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
					ps.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>dvd.<span style="color: #006633;">getGenero</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
					ps.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>dvd.<span style="color: #006633;">getAno</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
					ps.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>dvd.<span style="color: #006633;">getDuracao</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
					ps.<span style="color: #006633;">close</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
					br.<span style="color: #006633;">close</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span><span style="color: #003399;">IOException</span> e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
					e.<span style="color: #006633;">printStackTrace</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>
				<span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
			<span style="color: #000000; font-weight: bold;">case</span> <span style="color: #cc66cc;">2</span><span style="color: #339933;">:</span> <span style="color: #009900;">&#123;</span>
				<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>
						.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;------------- Lista de Dvd's -------------&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				Scanner reader <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Scanner<span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">File</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Dvds.txt&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #000000; font-weight: bold;">while</span> <span style="color: #009900;">&#40;</span>reader.<span style="color: #006633;">hasNext</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
					<span style="color: #003399;">System</span>.<span style="color: #006633;">out</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span>reader.<span style="color: #006633;">nextLine</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #009900;">&#125;</span>
				reader.<span style="color: #006633;">close</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
			<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">while</span> <span style="color: #009900;">&#40;</span>opcao <span style="color: #339933;">&amp;</span>lt<span style="color: #339933;">;</span> <span style="color: #cc66cc;">3</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>É isso ai gente! Nossa aplicação está pronta e funcionando. Porém eu faço a vocês duas perguntas:<br />
Este codigo está bom? Porque?</p>
<p>No proximo post, vamos analisar este codigo responder a estas perguntas. Porém você que leu este post nao precisa esperar, pode escrever seu comentario aqui respondendo esta pergunta.</p>
<p>Abraços,<br />
Sergio Junior</p>
<p>Confira a sequencia deste post <a href="http://www.sagadoprogramador.com.br/2009/12/analisando-o-codigo-escrito-anteriormente/">aqui.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sagadoprogramador.com.br/2009/10/esse-codigo-que-acabei-de-escrever-esta-bom/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Equipes novas, Manias antigas&#8230;</title>
		<link>http://www.sagadoprogramador.com.br/2009/02/equipes-novas-manias-antigas/</link>
		<comments>http://www.sagadoprogramador.com.br/2009/02/equipes-novas-manias-antigas/#comments</comments>
		<pubDate>Fri, 13 Feb 2009 03:35:24 +0000</pubDate>
		<dc:creator>Sergio Azevedo Junior</dc:creator>
				<category><![CDATA[OO]]></category>
		<category><![CDATA[trabalho]]></category>
		<category><![CDATA[boas práticas]]></category>
		<category><![CDATA[codigo expressivo]]></category>
		<category><![CDATA[delphi]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[modelo anemico]]></category>
		<category><![CDATA[modelo rico]]></category>

		<guid isPermaLink="false">http://www.sagadoprogramador.com.br/?p=161</guid>
		<description><![CDATA[Impressionante a reação que as expressões  "código expressivo" e "modelo de domínio rico" provocam na maioria das pessoas. Caretas e narizes torcidos são as reações mais comuns, além é claro daqueles olhares atravessados disparados contra você, nestas horas você se sente um ET.
Durante muito tempo trabalhei com Delphi, e nesta comunidade de desenvolvedores quando [...]]]></description>
			<content:encoded><![CDATA[<p>Impressionante a reação que as expressões <a href="http://blog.fragmental.com.br/2007/12/28/expressividade-no-codigo"> "código expressivo"</a> e <a href="http://martinfowler.com/eaaCatalog/domainModel.html">"modelo de domínio rico"</a> provocam na maioria das pessoas. Caretas e narizes torcidos são as reações mais comuns, além é claro daqueles olhares atravessados disparados contra você, nestas horas você se sente um ET.<span id="more-161"></span></p>
<p>Durante muito tempo trabalhei com <a href="http://pt.wikipedia.org/wiki/Delphi_(linguagem_de_programa%C3%A7%C3%A3o)">Delphi</a>, e nesta comunidade de desenvolvedores quando se fala em "código expressivo" e "modelo de domínio" esse tipo de reação pode até ser considerado comum. Uma vez que a grande maioria destes desenvolvedores está infectada pela filosofia <a href="http://pt.wikipedia.org/wiki/Rapid_Application_Development">RAD</a>. Eu pensava que quando começasse a trabalhar com Java esse tipo de reação fosse diminuir. Mas não é o que estou notando. Pelo menos no ambiente em que estou inserido, as caretas e narizes torcidos estão presentes. Nesta semana mesmo, sugeri a um colega uma alteração em um nome de método para algo mais expressivo, e ouvi o seguinte:</p>
<p style="text-align: center;"><em>"Ih cara ta bom assim mesmo. Deixa que, qualquer coisa depois a gente mexe.</em>"</p>
<p>Já há alguns meses atrás, entrei numa discussão sobre <a href="http://www.martinfowler.com/bliki/AnemicDomainModel.html">modelos anêmicos</a> X modelos ricos, onde outro colega tentou de todo jeito, me dizer que modelo rico é muito bonito no meio acadêmico, mas que na prática isso fica inviável. Ainda tive que ouvir que:</p>
<p style="text-align: center;"><em>"É desse jeito que o pessoal de Java costuma desenvolver. Todo mundo faz assim". </em></p>
<p>Fiquei pensando, porque todos nós não passamos a comer carne de cachorro? Afinal a China é o país <a href="http://www.benderblog.com/lista-de-paises-mais-populosos-do-mundo/">mais populoso do mundo</a>, e se lá comer carne de cachorro é normal, porque pra gente não é?</p>
<p>A discussão ficou mais quente quando eu disse que aquilo não passava de "procedural Java", e que ele tirava o direito do objeto fazer o básico, que é controlar seu próprio estado. Só depois disso ele considerou pensar sobre modelos ricos, mas depois desse dia ele nunca mais tocou nesse assunto.</p>
<p>Uma coisa que eu tenho visto muito são as pessoas dizerem assim:</p>
<p style="text-align: center;"><em>"Estou num projeto sinistro agora, a gente ta usando de tudo JPA, EJB3, JMS, Lucene, Drools ..."</em></p>
<p>Mas não vejo estas pessoas preocupadas em construir um código bem escrito e expressivo, em pensar num modelo de domínio, em fazer um refactoring constante e em aplicarem as boas práticas de OO. Às vezes me sinto como se aquelas pessoas que trabalhavam com Delphi ao meu redor, todas estivessem trabalhando com Java agora. Às vezes cansa ser o diferente, eu sempre penso em deixar pra lá, ficar quieto e evitar discussões, mas eu não consigo. Não consigo porque eu acredito nisso tudo, e sinto a necessidade de transmitir essa mensagem.</p>
<p>Por isso eu peço a vocês dêem uma chance as boas práticas. Não peço por mim, mas acredito que <a href="http://martinfowler.com/aboutMe.html">Martin Fowler</a>, <a href="http://www.domainlanguage.com/about/ericevans.html">Eric Evans</a> e muitos outros "famosos" merecem crédito.<br />
<br/><br />
Serginho.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sagadoprogramador.com.br/2009/02/equipes-novas-manias-antigas/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Retrospectiva 2008 – Planos para 2009 / Iuri</title>
		<link>http://www.sagadoprogramador.com.br/2009/01/retrospectiva-2008-%e2%80%93-planos-para-2009-iuri/</link>
		<comments>http://www.sagadoprogramador.com.br/2009/01/retrospectiva-2008-%e2%80%93-planos-para-2009-iuri/#comments</comments>
		<pubDate>Sun, 04 Jan 2009 14:09:21 +0000</pubDate>
		<dc:creator>Iuri Menescal</dc:creator>
				<category><![CDATA[retrospectiva]]></category>
		<category><![CDATA[trabalho]]></category>
		<category><![CDATA[Arquitetura]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://www.sagadoprogramador.com.br/?p=146</guid>
		<description><![CDATA[
Cedendo ao convite do Luiz, vou escrever a minha retrospectiva também. Trabalhamos na mesma equipe e isso pode tornar o que vou escrever uma cópia do post dele, já que isso pode acontecer, vou colar alguns trechos aqui na cara de pau mesmo hehehehe!

Post do Luiz
O ano de 2008 foi um ano muito bom profissionalmente, [...]]]></description>
			<content:encoded><![CDATA[<p><!--StartFragment--></p>
<p class="MsoNormal">Cedendo ao convite do Luiz, vou escrever a minha retrospectiva também. Trabalhamos na mesma equipe e isso pode tornar o que vou escrever uma cópia do post dele, já que isso pode acontecer, vou colar alguns trechos aqui na cara de pau mesmo hehehehe!</p>
<p class="MsoNormal"><!--StartFragment--></p>
<p class="MsoNormal"><strong><em><span style="text-decoration: underline;">Post do Luiz</span></em></strong></p>
<p class="MsoNormal"><strong><em><span style="text-decoration: underline;"><em>O ano de 2008 foi um ano muito bom profissionalmente, neste ano consegui mudar de tecnologia no meu trabalho, consegui aplicar algumas das principais técnicas que estudo há alguns anos.</em></span></em></strong></p>
<p><span id="more-146"></span></p>
<div>
<p class="MsoNormal"><strong><span><span style="color: #ff0000;">(Eu também a única diferença ai é esse “há alguns anos” ele já deve estudar o dobro de tempo do que eu :p)</span></span></strong></p>
<p class="MsoNormal"><!--more--><!--StartFragment--></p>
<p class="MsoNormal"><span>Acho que o meu primeiro feito importante em 2008 aqui no trabalho, foi a implantação do Scrum dentro da minha gerencia. Perturbei muita gente nesse período dentro e fora da empresa, vou até aproveitar para agradecer ao <a href="http://blog.improveit.com.br/" target="_blank">Vinicius Telles</a> e o <a href="http://gc.blog.br/" target="_blank">Guilherme Chapiewski</a> pela paciência, perturbei muito esses caras nesse período hehehe! (Pretendo publicar um post mais detalhado sobre essa empreitada).</span></p>
<p class="MsoNormal"><span><span> </span>Uma coisa bem legal que a mudança de tecnologia me proporcionou foi reescrever uma parte do sistema que sou responsável em Java utilizando uma arquitetura bem bacana. Com uma grande ajuda de Luiz e de um outro colega de trabalho o Marcus Eliziário. Substituímos um serviço feito em Delphi5 para Java onde eu tive a oportunidade de aprender bastante coisa como JMS, Spring, Interceptor, Testes automatizados e outras coisas.</span></p>
<p><!--EndFragment--> </p>
<p class="MsoNormal"><!--StartFragment--></p>
<p class="MsoNormal"><strong><em><span style="text-decoration: underline;">Post do Luiz</span></em></strong><em></em></p>
<p class="MsoNormal"><em><span><span style="text-decoration: underline;">Em 2008 eu decidi que quero desenvolver aplicações para Web. Para isso comecei a estudar Ruby On Rails. Tenho feito alguns protótipos de aplicações, e tenho evoluído bem. Atualmente estou no meu primeiro projeto pessoal utilizando Rails.</span></span></em></p>
<div>
<p class="MsoNormal"><strong><span><span style="color: #ff0000;">(Eu também a única diferença ai é que estou no meu segundo projeto em Rails. O que me empolgou bastante nem foi tanto o Rails, mas o Ruby, uma linguagem muito agradável que da prazer de programar)</span></span></strong></p>
<p class="MsoNormal"><!--more--></p>
<p class="MsoNormal"><span>Alem de ficar super empolgado com a linguagem, o que me empolgou bastante também foi a comunidade, sempre disposta a ajudar e com a filosofia open source na veia. Esse ano participei da Rails Summit Latin América, foi um puta evento! Já sai de lá com a certeza de que vou no próximo, não vou entrar em detalhes sobre o evento, pois o que não falta na web é material sobre isso. O grande barato foi que o fato de estudar Rails me proporcionou a oportunidade de me aprofundar mais em outras linguagens como javascript e conhecer outros FrameWorks como o Jquery.<em> </em></span></p>
<p class="MsoNormal"><span>E para terminar os acontecimentos de 2008 não poderia deixar de mencionar a aquisição do meu MacBook, coisa que ainda ta na lista para 2009 do Luiz e do Serginho hahahaha!!!! Eu já tenho o meu!!! :p</span></p>
<p> </p></div>
<p><!--StartFragment--></p>
<p class="MsoNormal"><span>Planos para 2009:</span></p>
<p class="MsoNormal"> </p>
<ul>
<li>Continuar estudando Ruby</li>
<li>Fazer um curso de mestre cervejeiro hehehe!</li>
<li>Implantar um servidor de integração e evangelizar mais as técnicas de testes automatizados aqui na empresa</li>
<li>Estudar musica <img src='http://www.sagadoprogramador.com.br/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </li>
<li>Fazer um curso de culinária :p</li>
<li>Casar</li>
<li>Comprar uma <a href="http://www.yamaha-motor.com.br/cmi/pagina.aspx?716" target="_blank">Fazer 600</a>!!</li>
</ul>
<p class="MsoNormal"><span> </span></p>
<p class="MsoNormal"><span>Bom, vou aproveitar e reforçar o convite para o Serginho escrever a sua retrospectiva, acho que esse é o que mais teve mudanças em 2008.</span></p>
<p><!--EndFragment--><!--EndFragment--> </div>
<p><!--EndFragment--> </p>
<p><!--EndFragment--></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sagadoprogramador.com.br/2009/01/retrospectiva-2008-%e2%80%93-planos-para-2009-iuri/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
