SlideShare une entreprise Scribd logo
1  sur  31
Télécharger pour lire hors ligne
Desenvolvimento em .NET




Boas práticas de desenvolvimento
Objectivos
●   Mantras
●   Convenções
●   Localização
●   Strings
●   Expressões Regulares
Mantras
●   Option Explicit On
    –   declarar TODAS as variáveis
●   Option Strict On
    –   indicar o tipo de dados de TODAS as variáveis
●   Código Modular
    –   usar e abusar de subs e funções
●   Zero variáveis globais
    –   usar e abusar de parâmetros nos procedimentos
Convenções
●   Abreviaturas
    –   “Do not use abbreviations or contractions as parts
        of identifier names. For example, use GetWindow
        instead of GetWin.“
    –   Nunca usar.
         ●   excepções admissíveis
              –   acrónimos. ex: html
              –   variáveis de armazenamento “temporário”. ex: For i=1 To ...
Convenções
●   Variáveis, Parâmetros
    –   nomes significativos. ex: numeroEmpregados
    –   camelCase
●   Variáveis Globais
    –   prefixo '_'. ex: _euNaoExisto
●   Constantes
    –   UpperCase. ex: VALOR_MAXIMO
Convenções
●   Variáveis
    –   não usar o underscore excepto como prefixo ou
        como separador de palavras nas constantes
Convenções
●   Procedimentos (Sub / Function)
    –   Nomes significativos. ex: CalcularSaldo()
         ●   deve indicar claramente o que é feito nesse
             procedimento.
              –   Dica: se dessa forma o nome ficasse muito grande – ex:
                  CalcularSaldoEfectuarTransferenciaEnviarConfirmacao então
                  provavelmente o procedimento deve ser dividido em outros
                  procedimentos mais curtos.
         ●   como indica uma acção, normalmente usam-se verbos
    –   PascalCase
Convenções - Exemplo
Localização
●   Como tornar o nosso código internacionalizável
    sem ter que programar muito.
    –   implica normalmente mudar formato numeros,
        datas, ...
Localização
●   Class CultureInfo
    –   permite o acesso a todas as definições especificas
        de uma determinada cultura
         ●   cultura = lingua + país - pt-PT; pt-BR; ...
    –   definições especificas
         ●   Datas: separador datas, nome dos dias da semana
             (normais e abreviados), nome dos meses, formato
             (dd/mm/aa, ...)
         ●   Números: separador de milhares, separador decimal,
             formato números negativos, ...
         ●   Calendário: Gregoriano, Juliano, Japonês, Hebreu, ...
Localização
–   CurrentCulture
     ●   Indica a cultura usada pela aplicação que está a ser
         executada
          –   nota: um mesmo computador pode estar a correr diferentes
              aplicações com diferentes culturas
Localização
●   Criar Projecto
    Visual Studio
    –   nome projecto
         ●   0301_current
             Culture
    –   testar
        currentCulture
Localização
–   NumberFormat
     ●   Procurar no Index do Visual Studio “NumberFormatInfo
         class”
–   DateTimeFormat
     ●   Procurar no Index do Visual Studio “NumberFormatInfo
         class”
–   Calendar
     ●   Procurar no Index do Visual Studio “Calendar class
         (System.Globalization)”
Dados vs Texto
Formatação de Dados
●   Uma variavel pode ter muitas representações
    textuais!
Formatação de Dados
●   Exemplos
    –   mudar data para formato especifico
         ●   d.toString(“dd:MM:yy”)
    –   por número com 4 casas decimais
         ●   i.toString(“#.0000”)
Exercicio 2
●   Criar novo
    módulo
    –   Formatação
        de dados
Trabalhar com Strings
String vs Stringbuilder
●   Problema
    –   concatenar strings é um processo demorado
         ●   texto = texto + novotexto
              –   o resultado da concatenação é um novo objecto
String vs Stringbuilder
●   Criar Projecto
    Visual Studio
    –   nome projecto
         ●   0302_stringbui
             lder
    –   testar
        stringbuilder
Expressões Regulares
●   Linguagem de Padrões para strings
    –   Verificar se a string X é do tipo Y
         ●   padrão Código Postal
              –   4 algarismo ou 4 algarismo + separador '-' + 3 algarismos
                    ● padrão (d{4}){1}(-d{3})?
Expressões Regulares
●   padrão email
     –   um ou mais caracteres antes do @
     –   um quot;[quot; opcional, porque utilizador@[255.255.255.0] é um email
         válido
     –   uma sequencia de letras, numeros e pontos finais, que são
         todos dominios válidos ou entao caracteres para um endereço ip
     –   um ponto final separado por um sufixo
     –   um ultimo quot;]quot; opcional
           ● ^.+@([?)[a-zA-Z0-9-.]+.([a-zA-Z]{2,3}|[0-9]{1,3})(]?)$
Expressões Regulares
–   Substituir padrão X por Y
     ●   eliminar caracteres inválidos excepto '.', '@', '-'
          –   padrão: [^w.@-]
Expressões Regulares
●   Criar Projecto Visual Studio
    –   nome projecto
         ●   0303_regularExpression
    –   testar regular expressions
Exercicio
Avaliação de Conhecimentos!
Mantras
Mantras
●   Option Explicit On
    –   declarar TODAS as variáveis
●   Option Strict On
    –   indicar o tipo de dados de TODAS as variáveis
●   Código Modular
    –   usar e abusar de subs e funções
●   Zero variáveis globais
    –   usar e abusar de parâmetros nos procedimentos
Convenções
Conveções
●   Sempre nomes significativos
●   Zero Abreviaturas
●   Variáveis => camelCase
●   Procedimentos => PascalCase
Objectivos
●   Mantras
●   Convenções
●   Localização
●   Strings
●   Expressões Regulares

Contenu connexe

Tendances

Estrutura de Dados - Aula 07
Estrutura de Dados - Aula 07Estrutura de Dados - Aula 07
Estrutura de Dados - Aula 07thomasdacosta
 
Estrutura de Dados - Aula 04
Estrutura de Dados - Aula 04Estrutura de Dados - Aula 04
Estrutura de Dados - Aula 04thomasdacosta
 
Estrutura de Dados - Aula 03
Estrutura de Dados - Aula 03Estrutura de Dados - Aula 03
Estrutura de Dados - Aula 03thomasdacosta
 
Criando Jogos 2D com Lua + Corona SDK
Criando Jogos 2D com Lua + Corona SDKCriando Jogos 2D com Lua + Corona SDK
Criando Jogos 2D com Lua + Corona SDKLeonardo Dalmina
 
Grails - Destaques (para quem já sabe Java)
Grails - Destaques (para quem já sabe Java)Grails - Destaques (para quem já sabe Java)
Grails - Destaques (para quem já sabe Java)Douglas Mendes
 
Estrutura de Dados - Aula 04
Estrutura de Dados - Aula 04Estrutura de Dados - Aula 04
Estrutura de Dados - Aula 04thomasdacosta
 
Conceitos inicias de banco de dados Mysql
Conceitos inicias de banco de dados MysqlConceitos inicias de banco de dados Mysql
Conceitos inicias de banco de dados Mysqlbinhoetec
 
Estrutura de Dados - Aula 06
Estrutura de Dados - Aula 06Estrutura de Dados - Aula 06
Estrutura de Dados - Aula 06thomasdacosta
 
Aplicativos II - MySQL_part1
Aplicativos II - MySQL_part1Aplicativos II - MySQL_part1
Aplicativos II - MySQL_part1fabriciodenis
 
Ruby - Criando código para máquinas e humanos
Ruby - Criando código para máquinas e humanosRuby - Criando código para máquinas e humanos
Ruby - Criando código para máquinas e humanosGregorio Kusowski
 
(A06) LabMM3 - JavaScript
(A06) LabMM3 - JavaScript(A06) LabMM3 - JavaScript
(A06) LabMM3 - JavaScriptCarlos Santos
 
Programação Estruturada 2 - Aula 05
Programação Estruturada 2 - Aula 05Programação Estruturada 2 - Aula 05
Programação Estruturada 2 - Aula 05thomasdacosta
 
Estrutura de Dados - Aula 08
Estrutura de Dados - Aula 08Estrutura de Dados - Aula 08
Estrutura de Dados - Aula 08thomasdacosta
 
JavaScript - Expressões Regulares
JavaScript - Expressões RegularesJavaScript - Expressões Regulares
JavaScript - Expressões RegularesRodrigo Branas
 
Padrões de refatoração
Padrões de refatoraçãoPadrões de refatoração
Padrões de refatoraçãoThiago Pereira
 
Banco de Dados - Tipos de Dados
Banco de Dados - Tipos de DadosBanco de Dados - Tipos de Dados
Banco de Dados - Tipos de DadosNatanael Simões
 
Curso de PostgreSQL: Um pouco Além dos Comandos
Curso de PostgreSQL: Um pouco Além dos ComandosCurso de PostgreSQL: Um pouco Além dos Comandos
Curso de PostgreSQL: Um pouco Além dos ComandosMarcos Thomaz
 

Tendances (20)

Estrutura de Dados - Aula 07
Estrutura de Dados - Aula 07Estrutura de Dados - Aula 07
Estrutura de Dados - Aula 07
 
Estrutura de Dados - Aula 04
Estrutura de Dados - Aula 04Estrutura de Dados - Aula 04
Estrutura de Dados - Aula 04
 
Estrutura de Dados - Aula 03
Estrutura de Dados - Aula 03Estrutura de Dados - Aula 03
Estrutura de Dados - Aula 03
 
Criando Jogos 2D com Lua + Corona SDK
Criando Jogos 2D com Lua + Corona SDKCriando Jogos 2D com Lua + Corona SDK
Criando Jogos 2D com Lua + Corona SDK
 
Grails - Destaques (para quem já sabe Java)
Grails - Destaques (para quem já sabe Java)Grails - Destaques (para quem já sabe Java)
Grails - Destaques (para quem já sabe Java)
 
Estrutura de Dados - Aula 04
Estrutura de Dados - Aula 04Estrutura de Dados - Aula 04
Estrutura de Dados - Aula 04
 
Conceitos inicias de banco de dados Mysql
Conceitos inicias de banco de dados MysqlConceitos inicias de banco de dados Mysql
Conceitos inicias de banco de dados Mysql
 
Estrutura de Dados - Aula 06
Estrutura de Dados - Aula 06Estrutura de Dados - Aula 06
Estrutura de Dados - Aula 06
 
Aplicativos II - MySQL_part1
Aplicativos II - MySQL_part1Aplicativos II - MySQL_part1
Aplicativos II - MySQL_part1
 
Ruby - Criando código para máquinas e humanos
Ruby - Criando código para máquinas e humanosRuby - Criando código para máquinas e humanos
Ruby - Criando código para máquinas e humanos
 
(A06) LabMM3 - JavaScript
(A06) LabMM3 - JavaScript(A06) LabMM3 - JavaScript
(A06) LabMM3 - JavaScript
 
Programação Estruturada 2 - Aula 05
Programação Estruturada 2 - Aula 05Programação Estruturada 2 - Aula 05
Programação Estruturada 2 - Aula 05
 
Introdução ao JavaScript
Introdução ao JavaScriptIntrodução ao JavaScript
Introdução ao JavaScript
 
Estrutura de Dados - Aula 08
Estrutura de Dados - Aula 08Estrutura de Dados - Aula 08
Estrutura de Dados - Aula 08
 
JavaScript - Expressões Regulares
JavaScript - Expressões RegularesJavaScript - Expressões Regulares
JavaScript - Expressões Regulares
 
Padrões de refatoração
Padrões de refatoraçãoPadrões de refatoração
Padrões de refatoração
 
Psi m14
Psi m14Psi m14
Psi m14
 
Banco de Dados - Tipos de Dados
Banco de Dados - Tipos de DadosBanco de Dados - Tipos de Dados
Banco de Dados - Tipos de Dados
 
Modulo 15 PSI
Modulo 15 PSIModulo 15 PSI
Modulo 15 PSI
 
Curso de PostgreSQL: Um pouco Além dos Comandos
Curso de PostgreSQL: Um pouco Além dos ComandosCurso de PostgreSQL: Um pouco Além dos Comandos
Curso de PostgreSQL: Um pouco Além dos Comandos
 

En vedette

Desenvolvimento em .Net - Estruturas Basicas
Desenvolvimento em .Net - Estruturas BasicasDesenvolvimento em .Net - Estruturas Basicas
Desenvolvimento em .Net - Estruturas BasicasVitor Silva
 
Teachers Of Government
Teachers Of GovernmentTeachers Of Government
Teachers Of GovernmentGary Purinton
 
Kuliah dengan Kuliax (AMIKOM)
Kuliah dengan Kuliax (AMIKOM)Kuliah dengan Kuliax (AMIKOM)
Kuliah dengan Kuliax (AMIKOM)Iwan stwn
 
Desenvolvimento em .Net - Introducao A Framework
Desenvolvimento em .Net - Introducao A FrameworkDesenvolvimento em .Net - Introducao A Framework
Desenvolvimento em .Net - Introducao A FrameworkVitor Silva
 
Rosa de Venus by Rubido9
Rosa de Venus by Rubido9Rosa de Venus by Rubido9
Rosa de Venus by Rubido9MoonShadow13
 
Simplemente Venus by Rubido9
Simplemente Venus by Rubido9Simplemente Venus by Rubido9
Simplemente Venus by Rubido9MoonShadow13
 
Abofetadadoano Comsom
Abofetadadoano ComsomAbofetadadoano Comsom
Abofetadadoano Comsomalex reges
 
Casamentosestranhos
CasamentosestranhosCasamentosestranhos
Casamentosestranhosalex reges
 
O canteiro dos livros
O canteiro dos livrosO canteiro dos livros
O canteiro dos livrosnaliniram
 
Clase del lunes 12 de mayo de 2014
Clase del lunes 12 de mayo de 2014Clase del lunes 12 de mayo de 2014
Clase del lunes 12 de mayo de 2014Gonzalo Jiménez
 
Presentación
PresentaciónPresentación
Presentaciónmigama88
 
Job analysis and Writing Effective Job Description
Job analysis and Writing Effective Job DescriptionJob analysis and Writing Effective Job Description
Job analysis and Writing Effective Job DescriptionVugar Guliyev
 
Influencia Del Aprendisaje En El Marketing
Influencia Del Aprendisaje En El  MarketingInfluencia Del Aprendisaje En El  Marketing
Influencia Del Aprendisaje En El MarketingJorge lainfiesta
 
Riego%20 Artesanal%20por%20 Goteo2
Riego%20 Artesanal%20por%20 Goteo2Riego%20 Artesanal%20por%20 Goteo2
Riego%20 Artesanal%20por%20 Goteo2bisaelgil582
 

En vedette (20)

Desenvolvimento em .Net - Estruturas Basicas
Desenvolvimento em .Net - Estruturas BasicasDesenvolvimento em .Net - Estruturas Basicas
Desenvolvimento em .Net - Estruturas Basicas
 
Wow
WowWow
Wow
 
Teachers Of Government
Teachers Of GovernmentTeachers Of Government
Teachers Of Government
 
HauptstäDte
HauptstäDteHauptstäDte
HauptstäDte
 
Kuliah dengan Kuliax (AMIKOM)
Kuliah dengan Kuliax (AMIKOM)Kuliah dengan Kuliax (AMIKOM)
Kuliah dengan Kuliax (AMIKOM)
 
Desenvolvimento em .Net - Introducao A Framework
Desenvolvimento em .Net - Introducao A FrameworkDesenvolvimento em .Net - Introducao A Framework
Desenvolvimento em .Net - Introducao A Framework
 
Rosa de Venus by Rubido9
Rosa de Venus by Rubido9Rosa de Venus by Rubido9
Rosa de Venus by Rubido9
 
30826
3082630826
30826
 
Simplemente Venus by Rubido9
Simplemente Venus by Rubido9Simplemente Venus by Rubido9
Simplemente Venus by Rubido9
 
Abofetadadoano Comsom
Abofetadadoano ComsomAbofetadadoano Comsom
Abofetadadoano Comsom
 
Casamentosestranhos
CasamentosestranhosCasamentosestranhos
Casamentosestranhos
 
O canteiro dos livros
O canteiro dos livrosO canteiro dos livros
O canteiro dos livros
 
Clase del lunes 12 de mayo de 2014
Clase del lunes 12 de mayo de 2014Clase del lunes 12 de mayo de 2014
Clase del lunes 12 de mayo de 2014
 
Computadora
ComputadoraComputadora
Computadora
 
As Misses
As MissesAs Misses
As Misses
 
Presentación
PresentaciónPresentación
Presentación
 
Job analysis and Writing Effective Job Description
Job analysis and Writing Effective Job DescriptionJob analysis and Writing Effective Job Description
Job analysis and Writing Effective Job Description
 
11759
1175911759
11759
 
Influencia Del Aprendisaje En El Marketing
Influencia Del Aprendisaje En El  MarketingInfluencia Del Aprendisaje En El  Marketing
Influencia Del Aprendisaje En El Marketing
 
Riego%20 Artesanal%20por%20 Goteo2
Riego%20 Artesanal%20por%20 Goteo2Riego%20 Artesanal%20por%20 Goteo2
Riego%20 Artesanal%20por%20 Goteo2
 

Similaire à Desenvolvimento em .Net - Boas Praticas De Desenvolvimento

MongoDB outras alternativas de persistência
MongoDB outras alternativas de persistênciaMongoDB outras alternativas de persistência
MongoDB outras alternativas de persistênciaEder Magalhães
 
Ruby on rails gds 2011
Ruby on rails   gds 2011Ruby on rails   gds 2011
Ruby on rails gds 2011JogosUnisinos
 
Curso de introdução ao ruby
Curso de introdução ao rubyCurso de introdução ao ruby
Curso de introdução ao rubyFrancis Wagner
 
Minicurso Ruby on Rails Dextra
Minicurso Ruby on Rails DextraMinicurso Ruby on Rails Dextra
Minicurso Ruby on Rails DextraDextra
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScriptBruno Catão
 
Curso Completo de Linguagem de Programação C
Curso Completo de Linguagem de Programação CCurso Completo de Linguagem de Programação C
Curso Completo de Linguagem de Programação CJoberthSilva
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem Capolllorj
 
Workshop Ruby on Rails dia 1 ruby-pt
Workshop Ruby on Rails dia 1 ruby-ptWorkshop Ruby on Rails dia 1 ruby-pt
Workshop Ruby on Rails dia 1 ruby-ptPedro Sousa
 
Boas práticas de programação em C# .NET
Boas práticas de programação em C# .NETBoas práticas de programação em C# .NET
Boas práticas de programação em C# .NETFabiano Roman Beraldi
 
A Linguagem Lua e suas Aplicações em Jogos
A Linguagem Lua e suas Aplicações em JogosA Linguagem Lua e suas Aplicações em Jogos
A Linguagem Lua e suas Aplicações em Jogoselliando dias
 
Scala - Uma Breve (breve mesmo) Introdução
Scala - Uma Breve (breve mesmo) IntroduçãoScala - Uma Breve (breve mesmo) Introdução
Scala - Uma Breve (breve mesmo) Introduçãopaulosuzart
 
Intro padroesprojetoadaptertemplateobserver
Intro padroesprojetoadaptertemplateobserverIntro padroesprojetoadaptertemplateobserver
Intro padroesprojetoadaptertemplateobserverEduardo Jorge
 
Ruby, Rails e Diversão (Campus Party Brasil 2009)
Ruby, Rails e Diversão (Campus Party Brasil 2009)Ruby, Rails e Diversão (Campus Party Brasil 2009)
Ruby, Rails e Diversão (Campus Party Brasil 2009)Julio Monteiro
 

Similaire à Desenvolvimento em .Net - Boas Praticas De Desenvolvimento (20)

MongoDB outras alternativas de persistência
MongoDB outras alternativas de persistênciaMongoDB outras alternativas de persistência
MongoDB outras alternativas de persistência
 
Apostila aed
Apostila aedApostila aed
Apostila aed
 
Ruby on rails gds 2011
Ruby on rails   gds 2011Ruby on rails   gds 2011
Ruby on rails gds 2011
 
Curso de introdução ao ruby
Curso de introdução ao rubyCurso de introdução ao ruby
Curso de introdução ao ruby
 
Minicurso Ruby on Rails Dextra
Minicurso Ruby on Rails DextraMinicurso Ruby on Rails Dextra
Minicurso Ruby on Rails Dextra
 
Minicurso Ruby on Rails
Minicurso Ruby on RailsMinicurso Ruby on Rails
Minicurso Ruby on Rails
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScript
 
Palestra cbq
Palestra cbqPalestra cbq
Palestra cbq
 
Curso Completo de Linguagem de Programação C
Curso Completo de Linguagem de Programação CCurso Completo de Linguagem de Programação C
Curso Completo de Linguagem de Programação C
 
JavaScript - A Linguagem
JavaScript - A LinguagemJavaScript - A Linguagem
JavaScript - A Linguagem
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem C
 
Palestra Ruby
Palestra RubyPalestra Ruby
Palestra Ruby
 
Workshop Ruby on Rails dia 1 ruby-pt
Workshop Ruby on Rails dia 1 ruby-ptWorkshop Ruby on Rails dia 1 ruby-pt
Workshop Ruby on Rails dia 1 ruby-pt
 
Boas práticas de programação em C# .NET
Boas práticas de programação em C# .NETBoas práticas de programação em C# .NET
Boas práticas de programação em C# .NET
 
A Linguagem Lua e suas Aplicações em Jogos
A Linguagem Lua e suas Aplicações em JogosA Linguagem Lua e suas Aplicações em Jogos
A Linguagem Lua e suas Aplicações em Jogos
 
Scala - Uma Breve (breve mesmo) Introdução
Scala - Uma Breve (breve mesmo) IntroduçãoScala - Uma Breve (breve mesmo) Introdução
Scala - Uma Breve (breve mesmo) Introdução
 
Intro padroesprojetoadaptertemplateobserver
Intro padroesprojetoadaptertemplateobserverIntro padroesprojetoadaptertemplateobserver
Intro padroesprojetoadaptertemplateobserver
 
Aula 7 pc - estrutura
Aula 7   pc - estruturaAula 7   pc - estrutura
Aula 7 pc - estrutura
 
Ruby, Rails e Diversão (Campus Party Brasil 2009)
Ruby, Rails e Diversão (Campus Party Brasil 2009)Ruby, Rails e Diversão (Campus Party Brasil 2009)
Ruby, Rails e Diversão (Campus Party Brasil 2009)
 
DDD > Experiências
DDD > ExperiênciasDDD > Experiências
DDD > Experiências
 

Plus de Vitor Silva

Forum Onde Vais Cidade - Habitação No Porto
Forum Onde Vais Cidade - Habitação No PortoForum Onde Vais Cidade - Habitação No Porto
Forum Onde Vais Cidade - Habitação No PortoVitor Silva
 
Desenvolvimento em .Net - Acesso a Dados
Desenvolvimento em .Net - Acesso a DadosDesenvolvimento em .Net - Acesso a Dados
Desenvolvimento em .Net - Acesso a DadosVitor Silva
 
Desenvolvimento em .Net - Deployment
Desenvolvimento em .Net - DeploymentDesenvolvimento em .Net - Deployment
Desenvolvimento em .Net - DeploymentVitor Silva
 
Desenvolvimento em .Net - Testes Unitários
Desenvolvimento em .Net - Testes UnitáriosDesenvolvimento em .Net - Testes Unitários
Desenvolvimento em .Net - Testes UnitáriosVitor Silva
 
Desenvolvimento em .Net - nHibernate
Desenvolvimento em .Net - nHibernateDesenvolvimento em .Net - nHibernate
Desenvolvimento em .Net - nHibernateVitor Silva
 
Desenvolvimento em .Net - Dados vs Objectos
Desenvolvimento em .Net - Dados vs ObjectosDesenvolvimento em .Net - Dados vs Objectos
Desenvolvimento em .Net - Dados vs ObjectosVitor Silva
 
Desenvolvimento em .Net - Reflection
Desenvolvimento em .Net - ReflectionDesenvolvimento em .Net - Reflection
Desenvolvimento em .Net - ReflectionVitor Silva
 
Desenvolvimento em .Net - Databinding
Desenvolvimento em .Net - DatabindingDesenvolvimento em .Net - Databinding
Desenvolvimento em .Net - DatabindingVitor Silva
 
Desenvolvimento em .Net - Eventos
Desenvolvimento em .Net - EventosDesenvolvimento em .Net - Eventos
Desenvolvimento em .Net - EventosVitor Silva
 
Desenvolvimento em .Net - Excepções
Desenvolvimento em .Net - ExcepçõesDesenvolvimento em .Net - Excepções
Desenvolvimento em .Net - ExcepçõesVitor Silva
 
Desenvolvimento em .Net - User Interface
Desenvolvimento em .Net - User InterfaceDesenvolvimento em .Net - User Interface
Desenvolvimento em .Net - User InterfaceVitor Silva
 
Desenvolvimento em .Net - Programaçao Orientada a Objectos
Desenvolvimento em .Net - Programaçao Orientada a ObjectosDesenvolvimento em .Net - Programaçao Orientada a Objectos
Desenvolvimento em .Net - Programaçao Orientada a ObjectosVitor Silva
 
Desenvolvimento em .Net - Herança e Interfaces
Desenvolvimento em .Net - Herança e InterfacesDesenvolvimento em .Net - Herança e Interfaces
Desenvolvimento em .Net - Herança e InterfacesVitor Silva
 
Desenvolvimento em .Net - A Framework e o Visual Studio
Desenvolvimento em .Net - A Framework e o Visual StudioDesenvolvimento em .Net - A Framework e o Visual Studio
Desenvolvimento em .Net - A Framework e o Visual StudioVitor Silva
 

Plus de Vitor Silva (15)

Cidadania20
Cidadania20Cidadania20
Cidadania20
 
Forum Onde Vais Cidade - Habitação No Porto
Forum Onde Vais Cidade - Habitação No PortoForum Onde Vais Cidade - Habitação No Porto
Forum Onde Vais Cidade - Habitação No Porto
 
Desenvolvimento em .Net - Acesso a Dados
Desenvolvimento em .Net - Acesso a DadosDesenvolvimento em .Net - Acesso a Dados
Desenvolvimento em .Net - Acesso a Dados
 
Desenvolvimento em .Net - Deployment
Desenvolvimento em .Net - DeploymentDesenvolvimento em .Net - Deployment
Desenvolvimento em .Net - Deployment
 
Desenvolvimento em .Net - Testes Unitários
Desenvolvimento em .Net - Testes UnitáriosDesenvolvimento em .Net - Testes Unitários
Desenvolvimento em .Net - Testes Unitários
 
Desenvolvimento em .Net - nHibernate
Desenvolvimento em .Net - nHibernateDesenvolvimento em .Net - nHibernate
Desenvolvimento em .Net - nHibernate
 
Desenvolvimento em .Net - Dados vs Objectos
Desenvolvimento em .Net - Dados vs ObjectosDesenvolvimento em .Net - Dados vs Objectos
Desenvolvimento em .Net - Dados vs Objectos
 
Desenvolvimento em .Net - Reflection
Desenvolvimento em .Net - ReflectionDesenvolvimento em .Net - Reflection
Desenvolvimento em .Net - Reflection
 
Desenvolvimento em .Net - Databinding
Desenvolvimento em .Net - DatabindingDesenvolvimento em .Net - Databinding
Desenvolvimento em .Net - Databinding
 
Desenvolvimento em .Net - Eventos
Desenvolvimento em .Net - EventosDesenvolvimento em .Net - Eventos
Desenvolvimento em .Net - Eventos
 
Desenvolvimento em .Net - Excepções
Desenvolvimento em .Net - ExcepçõesDesenvolvimento em .Net - Excepções
Desenvolvimento em .Net - Excepções
 
Desenvolvimento em .Net - User Interface
Desenvolvimento em .Net - User InterfaceDesenvolvimento em .Net - User Interface
Desenvolvimento em .Net - User Interface
 
Desenvolvimento em .Net - Programaçao Orientada a Objectos
Desenvolvimento em .Net - Programaçao Orientada a ObjectosDesenvolvimento em .Net - Programaçao Orientada a Objectos
Desenvolvimento em .Net - Programaçao Orientada a Objectos
 
Desenvolvimento em .Net - Herança e Interfaces
Desenvolvimento em .Net - Herança e InterfacesDesenvolvimento em .Net - Herança e Interfaces
Desenvolvimento em .Net - Herança e Interfaces
 
Desenvolvimento em .Net - A Framework e o Visual Studio
Desenvolvimento em .Net - A Framework e o Visual StudioDesenvolvimento em .Net - A Framework e o Visual Studio
Desenvolvimento em .Net - A Framework e o Visual Studio
 

Desenvolvimento em .Net - Boas Praticas De Desenvolvimento

  • 1. Desenvolvimento em .NET Boas práticas de desenvolvimento
  • 2. Objectivos ● Mantras ● Convenções ● Localização ● Strings ● Expressões Regulares
  • 3. Mantras ● Option Explicit On – declarar TODAS as variáveis ● Option Strict On – indicar o tipo de dados de TODAS as variáveis ● Código Modular – usar e abusar de subs e funções ● Zero variáveis globais – usar e abusar de parâmetros nos procedimentos
  • 4. Convenções ● Abreviaturas – “Do not use abbreviations or contractions as parts of identifier names. For example, use GetWindow instead of GetWin.“ – Nunca usar. ● excepções admissíveis – acrónimos. ex: html – variáveis de armazenamento “temporário”. ex: For i=1 To ...
  • 5. Convenções ● Variáveis, Parâmetros – nomes significativos. ex: numeroEmpregados – camelCase ● Variáveis Globais – prefixo '_'. ex: _euNaoExisto ● Constantes – UpperCase. ex: VALOR_MAXIMO
  • 6. Convenções ● Variáveis – não usar o underscore excepto como prefixo ou como separador de palavras nas constantes
  • 7. Convenções ● Procedimentos (Sub / Function) – Nomes significativos. ex: CalcularSaldo() ● deve indicar claramente o que é feito nesse procedimento. – Dica: se dessa forma o nome ficasse muito grande – ex: CalcularSaldoEfectuarTransferenciaEnviarConfirmacao então provavelmente o procedimento deve ser dividido em outros procedimentos mais curtos. ● como indica uma acção, normalmente usam-se verbos – PascalCase
  • 9. Localização ● Como tornar o nosso código internacionalizável sem ter que programar muito. – implica normalmente mudar formato numeros, datas, ...
  • 10. Localização ● Class CultureInfo – permite o acesso a todas as definições especificas de uma determinada cultura ● cultura = lingua + país - pt-PT; pt-BR; ... – definições especificas ● Datas: separador datas, nome dos dias da semana (normais e abreviados), nome dos meses, formato (dd/mm/aa, ...) ● Números: separador de milhares, separador decimal, formato números negativos, ... ● Calendário: Gregoriano, Juliano, Japonês, Hebreu, ...
  • 11. Localização – CurrentCulture ● Indica a cultura usada pela aplicação que está a ser executada – nota: um mesmo computador pode estar a correr diferentes aplicações com diferentes culturas
  • 12. Localização ● Criar Projecto Visual Studio – nome projecto ● 0301_current Culture – testar currentCulture
  • 13. Localização – NumberFormat ● Procurar no Index do Visual Studio “NumberFormatInfo class” – DateTimeFormat ● Procurar no Index do Visual Studio “NumberFormatInfo class” – Calendar ● Procurar no Index do Visual Studio “Calendar class (System.Globalization)”
  • 15. Formatação de Dados ● Uma variavel pode ter muitas representações textuais!
  • 16. Formatação de Dados ● Exemplos – mudar data para formato especifico ● d.toString(“dd:MM:yy”) – por número com 4 casas decimais ● i.toString(“#.0000”)
  • 17. Exercicio 2 ● Criar novo módulo – Formatação de dados
  • 19. String vs Stringbuilder ● Problema – concatenar strings é um processo demorado ● texto = texto + novotexto – o resultado da concatenação é um novo objecto
  • 20. String vs Stringbuilder ● Criar Projecto Visual Studio – nome projecto ● 0302_stringbui lder – testar stringbuilder
  • 21. Expressões Regulares ● Linguagem de Padrões para strings – Verificar se a string X é do tipo Y ● padrão Código Postal – 4 algarismo ou 4 algarismo + separador '-' + 3 algarismos ● padrão (d{4}){1}(-d{3})?
  • 22. Expressões Regulares ● padrão email – um ou mais caracteres antes do @ – um quot;[quot; opcional, porque utilizador@[255.255.255.0] é um email válido – uma sequencia de letras, numeros e pontos finais, que são todos dominios válidos ou entao caracteres para um endereço ip – um ponto final separado por um sufixo – um ultimo quot;]quot; opcional ● ^.+@([?)[a-zA-Z0-9-.]+.([a-zA-Z]{2,3}|[0-9]{1,3})(]?)$
  • 23. Expressões Regulares – Substituir padrão X por Y ● eliminar caracteres inválidos excepto '.', '@', '-' – padrão: [^w.@-]
  • 24. Expressões Regulares ● Criar Projecto Visual Studio – nome projecto ● 0303_regularExpression – testar regular expressions
  • 28. Mantras ● Option Explicit On – declarar TODAS as variáveis ● Option Strict On – indicar o tipo de dados de TODAS as variáveis ● Código Modular – usar e abusar de subs e funções ● Zero variáveis globais – usar e abusar de parâmetros nos procedimentos
  • 30. Conveções ● Sempre nomes significativos ● Zero Abreviaturas ● Variáveis => camelCase ● Procedimentos => PascalCase
  • 31. Objectivos ● Mantras ● Convenções ● Localização ● Strings ● Expressões Regulares