Client undertow

650 views

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
650
On SlideShare
0
From Embeds
0
Number of Embeds
14
Actions
Shares
0
Downloads
8
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Client undertow

  1. 1. Client Undertow Quando boas práticas não são recomendadas.
  2. 2. Sobre Mim • Desenvolvedor – Há 11 anos e contando… • Arquiteto – 5 anos e contando… • Empresário – 3 anos e contando…
  3. 3. Velho desenvolvimento. Novos paradigmas. Será que sabemos realmente o que estamos fazendo?
  4. 4. Vou contar um pouco do que funcionou para mim e que pode funcionar para você também!
  5. 5. Hum, vou fazer igual naquele CRUD é o mesmo pattern!
  6. 6. Dois idiomas, mesmo pensamento? C# Javascript Servidor Cliente Tipagem Forte Tipagem Fraca Estática Dinâmica OOP Prototypal Inheritage Higher-order Functions TRUE First-Class Functions
  7. 7. Que droga! Porque esse IF não funciona?
  8. 8. What The Fu… • '' == '0' // false • 0 == '' // true • 0 == '0' // true • false == 'false' // false • false == '0' // true • false == undefined // false • false == null // false • null == undefined // true • " trn " == 0 // true
  9. 9. Sintaxe não é gosto pessoal! return { ok: false }; • OK p/ C# • UNDEFINED! return { ok: true }; • OK p/ C# • OK p/ JavaScript
  10. 10. Var or not Var function teste(){ y = 1; } alert(y); // 1 function teste(){ var y = 1; } alert(y); // undefined
  11. 11. Funções são: objetos, arrays, … function teste(){} teste.id = 1; teste[“nome”]=“abc”; teste[0] = 12; var t = new teste(); /* Javascript OK */ /* Nem preciso escrever aquí porque sabemos que não funciona no C# */
  12. 12. “Prefer object composition to class inheritance” Gang of 4
  13. 13. Prototypal Inheritance function object(o) {    function F(){}    F.prototype = o;    return new F();  }  var parent = {a: 1};  var child = object(parent);  alert(child.a);  // 1  alert(child.hasOwnProperty(“a”));  // false
  14. 14. Mixins var Bolo={}; var ingrediente1 = {a: 1, b: 2, c: 3};  var ingrediente2 = {d: 4, e: 5, f: 6};  var ingrediente3 = {g: 7, h: 8, i: 9}; for(var item1 in ingrediente1)     Bolo[item1] = ingrediente1[item1]; for(var item2 in ingrediente2)     Bolo[item2] = ingrediente2[item2]; for(var item3 in ingrediente3)     Bolo[item3] = ingrediente3[item3]; alert(Bolo.g) // 7 /* Bolo contém  todas as  propriedades  dos  ingredientes  1, 2, 3 */
  15. 15. Closure function outer(){   var local = 1;   return function(){     return local;   }; } Bolo.prototype = ingrediente1;
  16. 16. Namespaces // Criando um exemplo de System.Web.UI var System = {};  System.Web = {};  System.Web.UI = {}; System.Web.UI.MeuPlugin={     Factory:{   add:function(obj){}       remove:function(obj){}   } }
  17. 17. One-Executing Anonymous Function (function (i){   alert(i); })(10); • Permite usar closure; • Só funciona uma unica vez;
  18. 18. Com tantos recursos novos e diferentes, precisamos aprender a reaprender!
  19. 19. Se você estivesse começando aprender a desenvolver hoje e optasse por Javascript, suas soluções seriam as mesmas?
  20. 20. Design Patterns • Mixins • Closure • Modules • Self-Overwriting • Augmentation • SuperMethods • Package • Modules • Namespaces Além dos tradicionais Observer, Factory, Iterator, Proxy, devido a capacidade desta linguagem podemos pensar em novos e possiveis, como:
  21. 21. “Desenvolvimento de software é a arte de criar maquinas escrevendo poesias!” - Sidney Lima FIlho
  22. 22. Obrigado!

×