Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
http://netponto.org<br />15ª Reunião Presencial - 23/10/2010<br />Práticas de programação em .NETRicardo Alves<br />
Ricardo Alves<br />Licenciado do Instituto Superior de Engenharia de Lisboa (ISEL)<br />4 anos de experiência profissional...
Agenda<br />NamingConventions<br />CodingPractices<br />UnitTestsPractices<br />
NamingConventions<br />Código tem de reflectir a sua intenção<br />Código claro e objectivo<br />Meio caminho andado para ...
Naming Conventions<br />NamingConventions da .Net Framework<br />http://msdn.microsoft.com/en-us/library/ms229045.aspx<br ...
Naming Conventions<br />NamingConventions da .Net Framework<br />http://msdn.microsoft.com/en-us/library/ms229045.aspx<br ...
Naming Conventions<br />NamingConventions da .Net Framework<br />http://msdn.microsoft.com/en-us/library/ms229045.aspx<br ...
Naming Conventions<br />Namespaces<br />Pascal Case, não usar underscores<br />Acrónimos de 3 ou mais letras devem usar Pa...
Naming Conventions<br />Classes e estruturas<br />Pascal Case, não usar underscores<br />Não usar nomes começados por “I” ...
Naming Conventions<br />Interfaces<br />Usar as mesmas convenções que para as classes, mas o nome deve começar com um “I” ...
Demo #1: Validar NamingConventions através do FxCop<br />demonstração <br />
CodingPractices<br />Princípios S.O.L.I.D.<br />
CodingPractices<br />SOLID<br />Single ResponsibilityPrinciple<br />Open/ClosedPrinciple<br />LiskovSubstitutionPrinciple<...
CodingPractices<br />Single ResponsibilityPrinciple<br />
CodingPractices<br />Single ResponsibilityPrinciple<br />Uma classe não deve ter mais que uma razão para ser alterada<br />
Demo #2: Single ResponsabilityPrinciple<br />demonstração <br />
CodingPractices<br />Open/ClosedPrinciple<br />
CodingPractices<br />Open/ClosedPrinciple<br />Deve ser possível alterar o comportamento duma classe sem a modificar<br />
Demo #3: Open/ClosedPrinciple<br />demonstração <br />
CodingPractices<br />LiskovSubstitutionPrinciple<br />
CodingPractices<br />LiskovSubstitutionPrinciple<br />Classes derivadas devem ser substituíveis pelas suas classes base<br />
Demo #4: LiskovSubstitutionPrinciple<br />demonstração <br />
CodingPractices<br />Interface SegregationPrinciple<br />
CodingPractices<br />Interface SegregationPrinciple<br />Classes não devem ser forçadas a implementar interfaces que não u...
Demo #5: Interface SegregationPrinciple<br />demonstração <br />
CodingPractices<br />DependencyInversionPrinciple<br />
CodingPractices<br />DependencyInversionPrinciple<br />Módulos não devem depender de outros Módulos, devem depender de abs...
Demo #6: DependencyInversionPrinciple<br />demonstração <br />
CodingPractices<br />YAGNI<br />Youain’tgonnaneedit<br />DRY<br />Don’trepeatyourself<br />KISS<br />Keepitsimple, stupid!...
Unit Tests Practices<br />Ser o mais simples possível<br />Ser independentes entre si<br />Devem testar uma unidade de cód...
Unit Tests Practices<br />Devem ter nomes claros e concisos<br />Testar comportamentos e não métodos<br />Testar apenas cl...
Demo #6: UnitTestsPractices<br />demonstração <br />
Dúvidas?<br />
Referências<br />ThePrinciplesof OOD<br />http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod<br />Design Guidelines ...
Patrocinadores desta reunião<br />
Obrigado!<br />Ricardo Alves<br />ricardoloboalves@gmail.com<br />http://pt.linkedin.com/in/rmalves/<br />http://twitter.c...
Práticas de Programação em .NET
Nächste SlideShare
Wird geladen in …5
×

Práticas de Programação em .NET

2.026 Aufrufe

Veröffentlicht am

Nesta sessão o Ricardo vai nos mostrar algumas das principais práticas utilizadas no desenvolvimento profissional de software na plataforma Microsoft .NET. Serão abordados temas como convenções e padrões de codificação em equipa e validação do código, diferentes formas estruturar uma solução, uma solução vs múltiplas soluções e quando faz sentido, princípios diversos como DRY, SOLID, KISS, YAGNI com demonstrações práticas, testes unitários, e mais...

Veröffentlicht in: Technologie
  • Gehören Sie zu den Ersten, denen das gefällt!

Práticas de Programação em .NET

  1. 1. http://netponto.org<br />15ª Reunião Presencial - 23/10/2010<br />Práticas de programação em .NETRicardo Alves<br />
  2. 2. Ricardo Alves<br />Licenciado do Instituto Superior de Engenharia de Lisboa (ISEL)<br />4 anos de experiência profissional<br />C#, WCF, ASP.NET, SQL, VS LightSwitch, Agilemethodologies<br />
  3. 3. Agenda<br />NamingConventions<br />CodingPractices<br />UnitTestsPractices<br />
  4. 4. NamingConventions<br />Código tem de reflectir a sua intenção<br />Código claro e objectivo<br />Meio caminho andado para documentação <br />
  5. 5. Naming Conventions<br />NamingConventions da .Net Framework<br />http://msdn.microsoft.com/en-us/library/ms229045.aspx<br />Escolher nomes facilmente legíveis e claros<br />Dar preferência a legibilidade sobre brevidade<br />Não usar underscore, hífenes, ou qualquer caracter não alfanumérico<br />Não usar abreviações como identificadores<br />
  6. 6. Naming Conventions<br />NamingConventions da .Net Framework<br />http://msdn.microsoft.com/en-us/library/ms229045.aspx<br />Só usar acrónimos que sejam bem conhecidos<br />Regra do Bing<br />Fazer uma pesquisa no Bing pelo acrónimo, se o acrónimo aparecer nos primeiros resultados então podemos usar<br />Regra não se aplica a acrónimos do negócio<br />Usar nomes comuns, como value ou item, em casos onde o identificador e o seu tipo não têm qualquer valor semântico<br />Usado em parâmetros ou variáveis de iteração<br />Não usar “Hungariannotation”<br />
  7. 7. Naming Conventions<br />NamingConventions da .Net Framework<br />http://msdn.microsoft.com/en-us/library/ms229045.aspx<br />Pascal Case<br />A primeira letra é maiúscula e as restantes primeiras letras de cada palavra são maiúsculas<br />ObjectContext, BackColor<br />Camel Case<br />A primeira letra é minúscula e as restantes primeiras letras de cada palavra são maiúsculas<br />numberOfDays, isValid<br />Uppercase<br />Todas as letras são maiúsculas<br />PI, ID<br />
  8. 8. Naming Conventions<br />Namespaces<br />Pascal Case, não usar underscores<br />Acrónimos de 3 ou mais letras devem usar Pascal Case<br />Seguir padrão:<br /><Nome da Empresa/Developer>.<Tecnologia><br />AppliedIS.TimeCard.BusinessRules<br />IrritatedVowel.Controllers<br />PeteBrown.DotNetTraining.InheritanceDemo<br />PeteBrown.DotNetTraining.Xml<br />
  9. 9. Naming Conventions<br />Classes e estruturas<br />Pascal Case, não usar underscores<br />Não usar nomes começados por “I” a não ser que a próxima letra seja minúscula, para não confundir com interfaces<br />Acrónimos de 3 ou mais letras devem usar Pascal Case<br />Não devem usar o mesmo nome que o Namespace a que pertencem<br />Widget<br />InstanceManager<br />XmlDocument<br />MainForm<br />DocumentForm<br />HeaderControl<br />
  10. 10. Naming Conventions<br />Interfaces<br />Usar as mesmas convenções que para as classes, mas o nome deve começar com um “I” e a próxima letra deve ser maiúscula<br />IWidget<br />IComponent<br />
  11. 11. Demo #1: Validar NamingConventions através do FxCop<br />demonstração <br />
  12. 12. CodingPractices<br />Princípios S.O.L.I.D.<br />
  13. 13. CodingPractices<br />SOLID<br />Single ResponsibilityPrinciple<br />Open/ClosedPrinciple<br />LiskovSubstitutionPrinciple<br />Interface SegregationPrinciple<br />DependencyInversionPrinciple<br />
  14. 14. CodingPractices<br />Single ResponsibilityPrinciple<br />
  15. 15. CodingPractices<br />Single ResponsibilityPrinciple<br />Uma classe não deve ter mais que uma razão para ser alterada<br />
  16. 16. Demo #2: Single ResponsabilityPrinciple<br />demonstração <br />
  17. 17. CodingPractices<br />Open/ClosedPrinciple<br />
  18. 18. CodingPractices<br />Open/ClosedPrinciple<br />Deve ser possível alterar o comportamento duma classe sem a modificar<br />
  19. 19. Demo #3: Open/ClosedPrinciple<br />demonstração <br />
  20. 20. CodingPractices<br />LiskovSubstitutionPrinciple<br />
  21. 21. CodingPractices<br />LiskovSubstitutionPrinciple<br />Classes derivadas devem ser substituíveis pelas suas classes base<br />
  22. 22. Demo #4: LiskovSubstitutionPrinciple<br />demonstração <br />
  23. 23. CodingPractices<br />Interface SegregationPrinciple<br />
  24. 24. CodingPractices<br />Interface SegregationPrinciple<br />Classes não devem ser forçadas a implementar interfaces que não usam<br />
  25. 25. Demo #5: Interface SegregationPrinciple<br />demonstração <br />
  26. 26. CodingPractices<br />DependencyInversionPrinciple<br />
  27. 27. CodingPractices<br />DependencyInversionPrinciple<br />Módulos não devem depender de outros Módulos, devem depender de abstracções<br />Abstracções não devem depender dos detalhes, os detalhes é que devem depender das abstracções<br />
  28. 28. Demo #6: DependencyInversionPrinciple<br />demonstração <br />
  29. 29. CodingPractices<br />YAGNI<br />Youain’tgonnaneedit<br />DRY<br />Don’trepeatyourself<br />KISS<br />Keepitsimple, stupid!<br />
  30. 30. Unit Tests Practices<br />Ser o mais simples possível<br />Ser independentes entre si<br />Devem testar uma unidade de código de cada vez<br />Usar Mocks para simular componentes externos<br />Não testar configurações<br />Não devem fazer asserções desnecessárias<br />
  31. 31. Unit Tests Practices<br />Devem ter nomes claros e concisos<br />Testar comportamentos e não métodos<br />Testar apenas classes e métodos com visibilidade publica<br />Criar testes para reproduzir bugs encontrados<br />Assegurar que as excepções que são lançadas têm testes associados<br />
  32. 32. Demo #6: UnitTestsPractices<br />demonstração <br />
  33. 33. Dúvidas?<br />
  34. 34. Referências<br />ThePrinciplesof OOD<br />http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod<br />Design Guidelines for Developing Class Libraries<br />http://msdn.microsoft.com/en-us/library/ms229042.aspx<br />Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries <br />http://www.amazon.com/Framework-Design-Guidelines-Conventions-Libraries/dp/0321545613<br />
  35. 35. Patrocinadores desta reunião<br />
  36. 36. Obrigado!<br />Ricardo Alves<br />ricardoloboalves@gmail.com<br />http://pt.linkedin.com/in/rmalves/<br />http://twitter.com/rmalves<br />

×