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

Más contenido relacionado

La actualidad más candente

Python - 1002 utilidades
Python - 1002 utilidadesPython - 1002 utilidades
Python - 1002 utilidadesRennan Cockles
 
Convenções de código para a linguagem de programação
Convenções de código para a linguagem de programaçãoConvenções de código para a linguagem de programação
Convenções de código para a linguagem de programaçãoalyssontmv
 
PHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta PerformancePHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta PerformanceFelipe Ribeiro
 
Curso de php básico - Aula 01
Curso de php básico - Aula 01Curso de php básico - Aula 01
Curso de php básico - Aula 01Felipe Campos
 

La actualidad más candente (8)

Python - 1002 utilidades
Python - 1002 utilidadesPython - 1002 utilidades
Python - 1002 utilidades
 
Convenções de código para a linguagem de programação
Convenções de código para a linguagem de programaçãoConvenções de código para a linguagem de programação
Convenções de código para a linguagem de programação
 
PHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta PerformancePHP Jedi - Boas Práticas e Alta Performance
PHP Jedi - Boas Práticas e Alta Performance
 
Software livre mitos e verdades
Software livre   mitos e verdadesSoftware livre   mitos e verdades
Software livre mitos e verdades
 
Aplicando SOLID com PHP7
Aplicando SOLID com PHP7Aplicando SOLID com PHP7
Aplicando SOLID com PHP7
 
Curso de php básico - Aula 01
Curso de php básico - Aula 01Curso de php básico - Aula 01
Curso de php básico - Aula 01
 
Shell script
Shell script Shell script
Shell script
 
Lapidando ruby
Lapidando rubyLapidando ruby
Lapidando ruby
 

Destacado

Quick Sort
Quick SortQuick Sort
Quick Sortjo0eel
 
Colegio nacional nicolás esguerra
Colegio nacional nicolás esguerraColegio nacional nicolás esguerra
Colegio nacional nicolás esguerrael bergon y diego
 
디지털 음악의 미래에 대한 궁금증
디지털 음악의 미래에 대한 궁금증디지털 음악의 미래에 대한 궁금증
디지털 음악의 미래에 대한 궁금증Sungkyu Lee
 
Entorno de la mercadotecnia2
Entorno de la mercadotecnia2  Entorno de la mercadotecnia2
Entorno de la mercadotecnia2 guillely
 
Violencia
ViolenciaViolencia
ViolenciaJNR
 
Ejercicio access+visualb
Ejercicio access+visualbEjercicio access+visualb
Ejercicio access+visualbvalen
 
A sociedade do espetáculo
A sociedade do espetáculoA sociedade do espetáculo
A sociedade do espetáculoTiago Lopes
 
Kasım 2012 - Trend Raporu
Kasım 2012 - Trend RaporuKasım 2012 - Trend Raporu
Kasım 2012 - Trend RaporuKrombera
 
Estudo carnaval nas redes sociais
Estudo   carnaval nas redes sociaisEstudo   carnaval nas redes sociais
Estudo carnaval nas redes sociaisElife Brasil
 
File presentasi bab 1 b.inggris
File presentasi bab 1 b.inggrisFile presentasi bab 1 b.inggris
File presentasi bab 1 b.inggrisarizaldui
 
Como editar un video en windows movie maker online
Como editar un video en windows movie maker onlineComo editar un video en windows movie maker online
Como editar un video en windows movie maker onlineCurso de Aleyda Leyva
 
Sucesso na gestão de TI e sistemas
Sucesso na gestão de TI e sistemasSucesso na gestão de TI e sistemas
Sucesso na gestão de TI e sistemasPMO Fast Track
 
Análisis Participativo de Riesgos
Análisis Participativo de RiesgosAnálisis Participativo de Riesgos
Análisis Participativo de RiesgosCristian Miranda
 
A rocha
A rochaA rocha
A rochaJNR
 
Glosario de investigacion 2
Glosario de investigacion 2Glosario de investigacion 2
Glosario de investigacion 2KARLA
 

Destacado (20)

Quick Sort
Quick SortQuick Sort
Quick Sort
 
Colegio nacional nicolás esguerra
Colegio nacional nicolás esguerraColegio nacional nicolás esguerra
Colegio nacional nicolás esguerra
 
디지털 음악의 미래에 대한 궁금증
디지털 음악의 미래에 대한 궁금증디지털 음악의 미래에 대한 궁금증
디지털 음악의 미래에 대한 궁금증
 
Entorno de la mercadotecnia2
Entorno de la mercadotecnia2  Entorno de la mercadotecnia2
Entorno de la mercadotecnia2
 
Solucion problemas
Solucion problemasSolucion problemas
Solucion problemas
 
Violencia
ViolenciaViolencia
Violencia
 
Ejercicio access+visualb
Ejercicio access+visualbEjercicio access+visualb
Ejercicio access+visualb
 
Magnific Style Residences
Magnific Style ResidencesMagnific Style Residences
Magnific Style Residences
 
Agama islam
Agama islamAgama islam
Agama islam
 
A sociedade do espetáculo
A sociedade do espetáculoA sociedade do espetáculo
A sociedade do espetáculo
 
Kasım 2012 - Trend Raporu
Kasım 2012 - Trend RaporuKasım 2012 - Trend Raporu
Kasım 2012 - Trend Raporu
 
Estudo carnaval nas redes sociais
Estudo   carnaval nas redes sociaisEstudo   carnaval nas redes sociais
Estudo carnaval nas redes sociais
 
Escenes locals 2013
Escenes locals 2013Escenes locals 2013
Escenes locals 2013
 
File presentasi bab 1 b.inggris
File presentasi bab 1 b.inggrisFile presentasi bab 1 b.inggris
File presentasi bab 1 b.inggris
 
Email
EmailEmail
Email
 
Como editar un video en windows movie maker online
Como editar un video en windows movie maker onlineComo editar un video en windows movie maker online
Como editar un video en windows movie maker online
 
Sucesso na gestão de TI e sistemas
Sucesso na gestão de TI e sistemasSucesso na gestão de TI e sistemas
Sucesso na gestão de TI e sistemas
 
Análisis Participativo de Riesgos
Análisis Participativo de RiesgosAnálisis Participativo de Riesgos
Análisis Participativo de Riesgos
 
A rocha
A rochaA rocha
A rocha
 
Glosario de investigacion 2
Glosario de investigacion 2Glosario de investigacion 2
Glosario de investigacion 2
 

Similar a Práticas de Programação em .NET

C# 6.0 - Novos Recursos (Agosto/2015)
C# 6.0 - Novos Recursos (Agosto/2015)C# 6.0 - Novos Recursos (Agosto/2015)
C# 6.0 - Novos Recursos (Agosto/2015)Renato Groff
 
C# 6.0 - Interopmix 2015
C# 6.0 - Interopmix 2015C# 6.0 - Interopmix 2015
C# 6.0 - Interopmix 2015Renato Groff
 
TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...
TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...
TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...JP Clementi
 
Php Conf08 Refactoring
Php Conf08 RefactoringPhp Conf08 Refactoring
Php Conf08 RefactoringWildtech
 
C# 6.0 - DotNetBaixada - Novembro/2015
C# 6.0 - DotNetBaixada - Novembro/2015C# 6.0 - DotNetBaixada - Novembro/2015
C# 6.0 - DotNetBaixada - Novembro/2015Renato Groff
 
Construir microservices em python nunca foi tão simples como com o Nameko!
Construir microservices em python nunca foi tão simples como com o Nameko!Construir microservices em python nunca foi tão simples como com o Nameko!
Construir microservices em python nunca foi tão simples como com o Nameko!Flávio Pimenta
 
Construção de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em JavaConstrução de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em JavaFernando Camargo
 
Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Natanael Fonseca
 
Desenvolvimento web com python e django
Desenvolvimento web com python e djangoDesenvolvimento web com python e django
Desenvolvimento web com python e djangoIgor Sobreira
 
Entendendo Frameworks web com Python
Entendendo Frameworks web com PythonEntendendo Frameworks web com Python
Entendendo Frameworks web com PythonLuiz Aldabalde
 
Entendendo Framework Web com Python
Entendendo Framework Web com PythonEntendendo Framework Web com Python
Entendendo Framework Web com PythonPythOnRio
 
Clean Code: Por um mundo com códigos melhores - SETI 2017
Clean Code: Por um mundo com códigos melhores - SETI 2017Clean Code: Por um mundo com códigos melhores - SETI 2017
Clean Code: Por um mundo com códigos melhores - SETI 2017Thiago Barradas
 
Apresentacao tdc 2012
Apresentacao tdc 2012Apresentacao tdc 2012
Apresentacao tdc 2012Jorge Oleques
 
Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Valmon Gaudencio
 

Similar a Práticas de Programação em .NET (20)

C# 6.0 - Novos Recursos (Agosto/2015)
C# 6.0 - Novos Recursos (Agosto/2015)C# 6.0 - Novos Recursos (Agosto/2015)
C# 6.0 - Novos Recursos (Agosto/2015)
 
C# 6.0 - Interopmix 2015
C# 6.0 - Interopmix 2015C# 6.0 - Interopmix 2015
C# 6.0 - Interopmix 2015
 
TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...
TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...
TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...
 
Php Conf08 Refactoring
Php Conf08 RefactoringPhp Conf08 Refactoring
Php Conf08 Refactoring
 
C# 6.0 - DotNetBaixada - Novembro/2015
C# 6.0 - DotNetBaixada - Novembro/2015C# 6.0 - DotNetBaixada - Novembro/2015
C# 6.0 - DotNetBaixada - Novembro/2015
 
Programando php com excelência
Programando php com excelênciaProgramando php com excelência
Programando php com excelência
 
Aop Aspect J 1.5.4
Aop Aspect J 1.5.4Aop Aspect J 1.5.4
Aop Aspect J 1.5.4
 
Construir microservices em python nunca foi tão simples como com o Nameko!
Construir microservices em python nunca foi tão simples como com o Nameko!Construir microservices em python nunca foi tão simples como com o Nameko!
Construir microservices em python nunca foi tão simples como com o Nameko!
 
Construção de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em JavaConstrução de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em Java
 
Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Curso Java Básico - Aula 01
Curso Java Básico - Aula 01
 
Programação Defensiva
Programação DefensivaProgramação Defensiva
Programação Defensiva
 
Desenvolvimento web com python e django
Desenvolvimento web com python e djangoDesenvolvimento web com python e django
Desenvolvimento web com python e django
 
Entendendo Frameworks web com Python
Entendendo Frameworks web com PythonEntendendo Frameworks web com Python
Entendendo Frameworks web com Python
 
Entendendo Framework Web com Python
Entendendo Framework Web com PythonEntendendo Framework Web com Python
Entendendo Framework Web com Python
 
Clean Code: Por um mundo com códigos melhores - SETI 2017
Clean Code: Por um mundo com códigos melhores - SETI 2017Clean Code: Por um mundo com códigos melhores - SETI 2017
Clean Code: Por um mundo com códigos melhores - SETI 2017
 
Curso Gratuito de Shell Script
Curso Gratuito de Shell ScriptCurso Gratuito de Shell Script
Curso Gratuito de Shell Script
 
Introducao ao .Net
Introducao ao .NetIntroducao ao .Net
Introducao ao .Net
 
Apresentacao tdc 2012
Apresentacao tdc 2012Apresentacao tdc 2012
Apresentacao tdc 2012
 
Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.
 
Aula1
Aula1Aula1
Aula1
 

Más de Comunidade NetPonto

Continuous Delivery for Desktop Applications: a case study - Miguel Alho & Jo...
Continuous Delivery for Desktop Applications: a case study - Miguel Alho & Jo...Continuous Delivery for Desktop Applications: a case study - Miguel Alho & Jo...
Continuous Delivery for Desktop Applications: a case study - Miguel Alho & Jo...Comunidade NetPonto
 
Criando aplicações para windows phone 8.1 e windows 8.1 com o app studio da...
Criando aplicações para windows phone 8.1 e windows 8.1 com o app studio da...Criando aplicações para windows phone 8.1 e windows 8.1 com o app studio da...
Criando aplicações para windows phone 8.1 e windows 8.1 com o app studio da...Comunidade NetPonto
 
MVVM Light e Cimbalino Toolkits - Sara Silva
MVVM Light e Cimbalino Toolkits - Sara SilvaMVVM Light e Cimbalino Toolkits - Sara Silva
MVVM Light e Cimbalino Toolkits - Sara SilvaComunidade NetPonto
 
Deep dive into Windows Azure Mobile Services - Ricardo Costa
Deep dive into Windows Azure Mobile Services - Ricardo CostaDeep dive into Windows Azure Mobile Services - Ricardo Costa
Deep dive into Windows Azure Mobile Services - Ricardo CostaComunidade NetPonto
 
The power of templating.... with NVelocity - Nuno Cancelo
The power of templating.... with NVelocity - Nuno CanceloThe power of templating.... with NVelocity - Nuno Cancelo
The power of templating.... with NVelocity - Nuno CanceloComunidade NetPonto
 
ASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis PaulinoASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis PaulinoComunidade NetPonto
 
NoSQL em Windows Azure Table Storage - Vitor Tomaz
NoSQL em Windows Azure Table Storage - Vitor TomazNoSQL em Windows Azure Table Storage - Vitor Tomaz
NoSQL em Windows Azure Table Storage - Vitor TomazComunidade NetPonto
 
De Zero a Produção - João Jesus
De Zero a Produção - João JesusDe Zero a Produção - João Jesus
De Zero a Produção - João JesusComunidade NetPonto
 
Como deixar de fazer "copy and paste" entre Windows Store e Windows Phone Apps
Como deixar de fazer "copy and paste" entre Windows Store e Windows Phone AppsComo deixar de fazer "copy and paste" entre Windows Store e Windows Phone Apps
Como deixar de fazer "copy and paste" entre Windows Store e Windows Phone AppsComunidade NetPonto
 
Case studies about Layout & View States & Scale in Windows 8 Store Apps
Case studies about Layout & View States & Scale in Windows 8 Store AppsCase studies about Layout & View States & Scale in Windows 8 Store Apps
Case studies about Layout & View States & Scale in Windows 8 Store AppsComunidade NetPonto
 
Aspect-oriented Programming (AOP) com PostSharp
Aspect-oriented Programming (AOP) com PostSharpAspect-oriented Programming (AOP) com PostSharp
Aspect-oriented Programming (AOP) com PostSharpComunidade NetPonto
 
Utilização de Mock Objects em Testes Unitários
Utilização de Mock Objects em Testes UnitáriosUtilização de Mock Objects em Testes Unitários
Utilização de Mock Objects em Testes UnitáriosComunidade NetPonto
 
Dinâmica e Motivacao de Equipas de Projecto
Dinâmica e Motivacao de Equipas de ProjectoDinâmica e Motivacao de Equipas de Projecto
Dinâmica e Motivacao de Equipas de ProjectoComunidade NetPonto
 
KnockoutJS com ASP.NET MVC3: Utilização na vida real
KnockoutJS com ASP.NET MVC3: Utilização na vida realKnockoutJS com ASP.NET MVC3: Utilização na vida real
KnockoutJS com ASP.NET MVC3: Utilização na vida realComunidade NetPonto
 
Como ser programador durante o dia e mesmo assim dormir bem à noite
Como ser programador durante o dia e mesmo assim dormir bem à noiteComo ser programador durante o dia e mesmo assim dormir bem à noite
Como ser programador durante o dia e mesmo assim dormir bem à noiteComunidade NetPonto
 
Windows 8: Desenvolvimento de Metro Style Apps - C. Augusto Proiete
Windows 8: Desenvolvimento de Metro Style Apps - C. Augusto ProieteWindows 8: Desenvolvimento de Metro Style Apps - C. Augusto Proiete
Windows 8: Desenvolvimento de Metro Style Apps - C. Augusto ProieteComunidade NetPonto
 
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web APIUma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web APIComunidade NetPonto
 

Más de Comunidade NetPonto (20)

Continuous Delivery for Desktop Applications: a case study - Miguel Alho & Jo...
Continuous Delivery for Desktop Applications: a case study - Miguel Alho & Jo...Continuous Delivery for Desktop Applications: a case study - Miguel Alho & Jo...
Continuous Delivery for Desktop Applications: a case study - Miguel Alho & Jo...
 
Criando aplicações para windows phone 8.1 e windows 8.1 com o app studio da...
Criando aplicações para windows phone 8.1 e windows 8.1 com o app studio da...Criando aplicações para windows phone 8.1 e windows 8.1 com o app studio da...
Criando aplicações para windows phone 8.1 e windows 8.1 com o app studio da...
 
MVVM Light e Cimbalino Toolkits - Sara Silva
MVVM Light e Cimbalino Toolkits - Sara SilvaMVVM Light e Cimbalino Toolkits - Sara Silva
MVVM Light e Cimbalino Toolkits - Sara Silva
 
Deep dive into Windows Azure Mobile Services - Ricardo Costa
Deep dive into Windows Azure Mobile Services - Ricardo CostaDeep dive into Windows Azure Mobile Services - Ricardo Costa
Deep dive into Windows Azure Mobile Services - Ricardo Costa
 
The power of templating.... with NVelocity - Nuno Cancelo
The power of templating.... with NVelocity - Nuno CanceloThe power of templating.... with NVelocity - Nuno Cancelo
The power of templating.... with NVelocity - Nuno Cancelo
 
ASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis PaulinoASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis Paulino
 
ASP.NET Signal R - Glauco Godoi
ASP.NET Signal R - Glauco GodoiASP.NET Signal R - Glauco Godoi
ASP.NET Signal R - Glauco Godoi
 
NoSQL em Windows Azure Table Storage - Vitor Tomaz
NoSQL em Windows Azure Table Storage - Vitor TomazNoSQL em Windows Azure Table Storage - Vitor Tomaz
NoSQL em Windows Azure Table Storage - Vitor Tomaz
 
HTML5 - Pedro Rosa
HTML5 - Pedro RosaHTML5 - Pedro Rosa
HTML5 - Pedro Rosa
 
De Zero a Produção - João Jesus
De Zero a Produção - João JesusDe Zero a Produção - João Jesus
De Zero a Produção - João Jesus
 
OData – Super Cola W3
OData – Super Cola W3OData – Super Cola W3
OData – Super Cola W3
 
Como deixar de fazer "copy and paste" entre Windows Store e Windows Phone Apps
Como deixar de fazer "copy and paste" entre Windows Store e Windows Phone AppsComo deixar de fazer "copy and paste" entre Windows Store e Windows Phone Apps
Como deixar de fazer "copy and paste" entre Windows Store e Windows Phone Apps
 
Case studies about Layout & View States & Scale in Windows 8 Store Apps
Case studies about Layout & View States & Scale in Windows 8 Store AppsCase studies about Layout & View States & Scale in Windows 8 Store Apps
Case studies about Layout & View States & Scale in Windows 8 Store Apps
 
Aspect-oriented Programming (AOP) com PostSharp
Aspect-oriented Programming (AOP) com PostSharpAspect-oriented Programming (AOP) com PostSharp
Aspect-oriented Programming (AOP) com PostSharp
 
Utilização de Mock Objects em Testes Unitários
Utilização de Mock Objects em Testes UnitáriosUtilização de Mock Objects em Testes Unitários
Utilização de Mock Objects em Testes Unitários
 
Dinâmica e Motivacao de Equipas de Projecto
Dinâmica e Motivacao de Equipas de ProjectoDinâmica e Motivacao de Equipas de Projecto
Dinâmica e Motivacao de Equipas de Projecto
 
KnockoutJS com ASP.NET MVC3: Utilização na vida real
KnockoutJS com ASP.NET MVC3: Utilização na vida realKnockoutJS com ASP.NET MVC3: Utilização na vida real
KnockoutJS com ASP.NET MVC3: Utilização na vida real
 
Como ser programador durante o dia e mesmo assim dormir bem à noite
Como ser programador durante o dia e mesmo assim dormir bem à noiteComo ser programador durante o dia e mesmo assim dormir bem à noite
Como ser programador durante o dia e mesmo assim dormir bem à noite
 
Windows 8: Desenvolvimento de Metro Style Apps - C. Augusto Proiete
Windows 8: Desenvolvimento de Metro Style Apps - C. Augusto ProieteWindows 8: Desenvolvimento de Metro Style Apps - C. Augusto Proiete
Windows 8: Desenvolvimento de Metro Style Apps - C. Augusto Proiete
 
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web APIUma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
 

Práticas de Programação em .NET

Notas del editor

  1. Namingconventions é um dos elementos mais importantes de previsibilidade e de descoberta em uma aplicaçãoO uso difundido e a compreensão destas convenções deve eliminar muitas das perguntas mais básicas e comuns dos utilizadores
  2. HorizontalAlignment tem umalegibilidade superior a AlignmentHorizontalCanScrollHorizontally é muitomaislegivel e claroqueScrollableX (referencia “obscura” aoeixo X)
  3. UsarOnButtonClick em vez de OnBtnClickGetLength é melhorqueGetInt
  4. Validar as convençõesusadasporomissão no stylecop, ver se nãobatem com os slidesanterioresVer se ainda se consegueconfigurar novas regras de validação no StyleCop
  5. Five valuation principles of object-oriented developmentManage dependencies between classes and reduce unnecessary complexityFacilitates testingPrinciples, not lawsRequire students
  6. Umaclassedevefazerapenasumacoisa, e deve faze-la bem
  7. É aplicavel a pacotes, assemblies, etcÉ a base paratodososoutrosprincipios
  8. Devemosusarpolimorfismo e herançaparapoder extender a classe e modificar o comportamentonaderivada, nuncaalterando o codigoda original
  9. O principio maisimportante de todosOs requisitosestãosempreemconstantemudança, masprecisamos de desenvolvercodigoestavel a mesmaCom OO,conseguimoscriarabstrações com desenhosolido, mascomportamentoflexivelA grandequestão e quandodevemosaplicareste principio
  10. Nãodevehaverpreocupação entre usar a classe base ou a derivada
  11. Violaçãodeste principio indicaquedevemosprecisar de fazeralgumrefactornanossahierarquia de classesIsto é um principio, nãouma lei
  12. Criar interfaces pequenas e consistentesSe temosumaclasseabstractaou interface,entãoosimplementadoresnãodevem ser forçados a implementarpartesquenãolhesinteressam
  13. Classes nãodevemdevpender de outras classes, elesdevemdepender de abstrações (interfaces)Prevent: Rigid (change affects too many parts of the system) Fragile (every change breaks something unexpected) Immobile (impossible to reuse)
  14. Validar as convençõesusadasporomissão no stylecop, ver se nãobatem com os slidesanterioresVer se ainda se consegueconfigurar novas regras de validação no StyleCop