Quanto maior o merge...

TL;DR como desculpa para escrever menos.

Decorators e Presenters 18/10/2013

Sou da área técnica, e com frequência me vejo numa situação que não me agrada muito: Ao descobrir(e gostar de) uma tecnologia/método/ferramenta nova, tento aplicar seja lá no que estiver fazendo. Por um lado isso é ótimo, mas por outro, essa vontade pode fazer com que eu utilize a ferramenta errada para solucionar o meu problema.

Achei legal, quero usar!

Um exemplo disso, é o Redis. O fato de trabalhar com uma estrutura de chave/valor, funcionar em memória, entre outros, sempre me deixou instigado. Li bastante, fiz alguns pet projects para testar, brinquei bastante, mas nunca cheguei a utilizar tudo que a ferramenta me proporciona. Por que? Porque até o momento, nenhum dos problemas que enfrentei precisou da sua utilização(embora utilize sidekiq, minha ideia era utilizar o redis para persistência principal de uma app).

A curiosidade instiga a vontade

Já trabalhei com desenvolvedores que sofriam desse mesmo problema, e vou confessar, estão entre os melhores desenvolvedores que conheço, pois curiosidade e interesse são qualidades muito importantes. A vontade de usar vem acompanhada com essas qualidades. Um caso que me chamou a atenção, foi quando um colega me pediu ajuda para utilizar um “padrão de projeto”, sem sequer conhecer o problema que precisava resolver.

Design Patterns

Os Design Patterns são soluções que podem ser aplicadas à problemas enfrentados diariamente no desenvolvimento de software. As primeiras convenções surgiram em 1994, com a publicação do famoso livro do “GOF”(Gang of four).

A confusão

Então chega um ponto em que conhecemos o problema que precisa ser resolvido: Uma tela/view/camada de apresentação muito complexa. Seja durante a criação ou manutenção, com possibilidade de uma bela refatoração, o código html se perde com a linguagem do back-end, e tudo fica confuso.

Como já temos uma ideia de quais são os patterns que existem, com o estalar de um dedo vem a ideia: “Vou usar um decorator!”.

Imagino que seja pelo nome, ou pela imaginação, onde “decorar” está ligado com visualização. Mas este engano pode causar uma certa confusão, pois o padrão Decorator serve para acrescentar funcionalidades e comportamento a entidades, enquanto o padrão Presenter, este sim, serve para interligar sua camada de modelo/negócio/etc com seus componentes de visualização.

Esse pequeno engano também é respondido no stackoverflow.

blog comments powered by Disqus

                        .s$$$Ss.

            .8,         $$$. _. .              ..sS$$$$$"  ...,.;

 o.   ,@..  88        =.$"$'  '          ..sS$$$$$$$$$$$$s. _;"'

  @@@.@@@. .88.   `  ` ""l. .sS$$.._.sS$$$$$$$$$$$$S'"'

   .@@@q@@.8888o.         .s$$$$$$$$$$$$$$$$$$$$$'

     .:`@@@@33333.       .>$$$$$$$$$$$$$$$$$$$$'

     .: `@@@@333'       ..>$$$$$$$$$$$$$$$$$$$'

      :  `@@333.     `.,   s$$$$$$$$$$$$$$$$$'

      :   `@33       $$ S.s$$$$$$$$$$$$$$$$$'

      .S   `Y      ..`  ,"$' `$$$$$$$$$$$$$$

      $s  .       ..S$s,    . .`$$$$$$$$$$$$.

      $s .,      ,s ,$$$$,,sS$s.$$$$$$$$$$$$$.

      / /$$SsS.s. ..s$$$$$$$$$$$$$$$$$$$$$$$$$.

     /`.`$$$$$dN.ssS$$'`$$$$$$$$$$$$$$$$$$$$$$$.

    ///   `$$$$$$$$$'    `$$$$$$$$$$$$$$$$$$$$$$.

   ///|     `S$$S$'       `$$$$$$$$$$$$$$$$$$$$$$.

  / /                      $$$$$$$$$$$$$$$$$$$$$.

                           `$$$$$$$$$$$$$$$$$$$$$s.

                            $$$"'        .?T$$$$$$$

                           .$'        ...      ?$$#\

                           !       -=S$$$$$s

                         .!       -=s$$'  `$=-_      :

                        ,        .$$$'     `$,       .|

                       ,       .$$$'          .        ,

                      ,     ..$$$'

                          .s$$$'                 `s     .

                   .   .s$$$$'                    $s. ..$s

                  .  .s$$$$'                      `$s=s$$$

                    .$$$$'                         ,    $$s

               `   " .$$'                               $$$

               ,   s$$'                              .  $$$s

            ` .s..s$'                                .s ,$$

             .s$$$'                                   "s$$$,

          -   $$$'                                     .$$$$.

        ."  .s$$s                                     .$',',$.

        $s.s$$$$S..............   ................    $$....s$s......

         `""'           `     ```"""""""""""""""         `""   ``

                                                           [banksy]dp