Upgrade to Pro — share decks privately, control downloads, hide ads and more …

iOS Antipatterns - TDC 2014

iOS Antipatterns - TDC 2014

TDC 2014 - Sao Paulo

hannelita

August 08, 2014
Tweet

More Decks by hannelita

Other Decks in Technology

Transcript

  1. iOS Antipatterns
    Tudo que você deveria fazer no seu código, só que
    não.

    View Slide

  2. Oi!
    • Hanneli (‘H' mudo)
    • CodeMiner 42
    • Café, Pokémon, Lego e bichos <3
    HIRING

    View Slide

  3. O que é um código ‘ruim'?

    View Slide

  4. Por que escrevemos código ruim?

    View Slide

  5. O que vamos ver aqui
    • Paradigma de programação - sua importância
    • Princípios de OO que colaboram para um código
    ‘não ruim’
    • Antipatternizando patterns
    • OSS - exemplos de antipatterns
    • GIFs engraçados (ou não)

    View Slide

  6. O que *Não* vamos ver aqui
    • Aula chata de OO
    • Introdução a Objective C / iOS / etc
    • Design Patterns
    • Aula sobre SOLID

    View Slide

  7. Paradigma == modelo; padrão
    Toda vez que você
    padroniza algo, você
    facilita na identificação
    e na produção

    View Slide

  8. Orientação a Objetos == paradigma
    O que é OO?
    Herança
    Polimorfismo
    Encapsulamento

    View Slide

  9. O que é OO?
    “Passar Mensagem.”

    View Slide

  10. OO para Objective C?

    View Slide

  11. Colocando ordem na ‘troca de
    mensagens'
    SOLID

    View Slide

  12. “Mantenha suas classes pequenas"
    Xiita de código bonito, 2014
    https://github.com/robbiehanson/XMPPFramework/blob/
    master/Core/XMPPStream.m

    View Slide

  13. View Slide

  14. “1 classe, 1 responsabilidade”
    Xiita de código bonito, 2014
    S
    O
    L
    I
    D
    ingle Responsibility

    View Slide

  15. Como melhorar?
    S
    O
    L
    I
    D
    ingle Responsibility
    • Separar o controle dos bytes em outra classe
    • Separar o controle dos Events em outra classe
    • Separar a autenticação (!!11!!!)

    View Slide

  16. “Cuidado com a herança"
    Xiita de código bonito, 2014
    https://github.com/robbiehanson/XMPPFramework/blob/
    a833c29e5b26cc3cca3d1f37490eed8ff5dd65e2/Extensions/
    XEP-0009/XMPPIQ%2BJabberRPC.m

    View Slide

  17. View Slide

  18. View Slide

  19. View Slide

  20. S
    O
    L
    I
    D
    pen closed

    View Slide

  21. Como melhorar?
    • Interface comum - @protocol
    S
    O
    L
    I
    D
    pen closed

    View Slide

  22. Vamos falar sobre Design Patterns

    View Slide

  23. Por que todo mundo fala em Design
    Patterns?

    View Slide

  24. Singleton

    View Slide

  25. Singleton - prós
    •Objeto pesado criado uma única vez!
    •Guarda estado

    View Slide

  26. Singleton - cons

    View Slide

  27. Singleton - cons
    •Objetos pesados!

    View Slide

  28. Singleton - Vilão ou mocinho?
    Use com moderação!

    View Slide

  29. Decorator

    View Slide

  30. Decorator
    https://github.com/robbiehanson/XMPPFramework/blob/
    a833c29e5b26cc3cca3d1f37490eed8ff5dd65e2/Utilities/
    DDList.m

    View Slide

  31. View Slide

  32. Decorator

    View Slide

  33. View Slide

  34. Decorator
    • Separar esses nodes
    • Associar os nodes

    View Slide

  35. Conclusões
    • Dê uma melhorada no código!
    • Não precisa usar design patterns o tempo todo,
    mas eventualmente ajuda
    • Dê uma revisada nos princípios de OO e SOLID!
    Quem for manter seu código agradece!

    View Slide

  36. Obrigada!
    @hannelita
    [email protected]

    View Slide