Skip to content
Browse files

post-template

  • Loading branch information...
1 parent 94053c1 commit cce2b46293778ebbfdeeea8babd1e3e4cc0c243a @HugoLnx committed Apr 15, 2012
Showing with 49 additions and 3 deletions.
  1. +3 −3 Gemfile.lock
  2. +46 −0 app/views/posts/ideas/addItem-X-add.txt
View
6 Gemfile.lock
@@ -69,7 +69,7 @@ GEM
faraday (0.7.4)
addressable (~> 2.2.6)
multipart-post (~> 1.1.0)
- rack (< 2, >= 1.1.0)
+ rack (>= 1.1.0, < 2)
ffi (1.0.9)
gherkin (2.5.1)
json (>= 1.4.6)
@@ -130,7 +130,7 @@ GEM
ruby-openid-apps-discovery (~> 1.2.0)
oauth (0.4.5)
oauth2 (0.5.0)
- faraday (< 0.8, >= 0.6.1)
+ faraday (>= 0.6.1, < 0.8)
multi_json (~> 1.0.0)
omniauth (0.3.0)
oa-basic (= 0.3.0)
@@ -194,7 +194,7 @@ GEM
shoulda (2.11.3)
sinatra (1.2.6)
rack (~> 1.1)
- tilt (< 2.0, >= 1.2.2)
+ tilt (>= 1.2.2, < 2.0)
systemu (2.2.0)
term-ansicolor (1.0.6)
thor (0.14.6)
View
46 app/views/posts/ideas/addItem-X-add.txt
@@ -0,0 +1,46 @@
+Post baseado nessa conversa:
+===> Titulo <===
+Renomeando método do Builder
+
+===> Pergunta <===
+Será que o método comItem(Item itemNovo) precisa ter esse nome?
+O que acha de chamá-lo apenas de com(ItemNovo)?
+Faça essa alteração e discuta quais as vantagens desse novo nome.
+
+===> Resposta do aluno <===
+Pode ser uma implementação um pouuco perigoso tendo em vista que vai contra a proposta do pattern que é de facilitar a criação de objetos.
+
+===> Minha resposta: <===
+Por que você diz que vai contra a proposta do pattern?
+Essa forma torna a chamada do código bem mais limpa. Por exemplo:
+[java]
+ Item item = new Item();
+
+ // é mais limpo dessa forma...
+ builder.comItem(item);
+
+ // ...ou dessa forma?
+ builder.com(item);
+[/java]
+Com exemplo fica fácil ver a redundância na chamada do método.
+Mas tome cuidado, esse tipo de nomenclatura pode ser perigosa (como você disse), em linguagens implicitamente tipadas, pois dificulta o crescimento do código. Se por exemplo quiséssemos que o builder pudesse receber um item e um produto, em java teríamos algo como:
+[java]
+ public void com(Item item){
+ // faz o que tem que fazer
+ }
+ public void com(Produto produto) {
+ // faz o que tem que fazer
+ }
+[/java]
+
+já em linguagens implicitamente tipadas, como ruby, teríamos que fazer algo como:
+[ruby]
+ def com(item_ou_produto)
+ if item_ou_produto.is_a? Item
+ # faz o que tem que fazer se for Item
+ elsif item_ou_produto.is_a? Produto
+ # faz o que tem que fazer se for Produto
+ end
+ end
+[/ruby]
+ou seja, teríamos um código mais sujo, existem algumas maneiras de tratar esse tipo de problema em linguagens implicitamente tipadas, se você tiver interesse em saber mais, é só perguntar.

0 comments on commit cce2b46

Please sign in to comment.
Something went wrong with that request. Please try again.