| Últimas 20 atualizações de Ricardo da Silva Coelho |
|
|
De acordo com o Aurélio teste significa, dentre outras coisas, “Prova, verificação da eficiência ou bom funcionamento (de máquinas, materiais etc.)”.
Em toda indústria a questão dos testes é de suma importância para a qualidade final dos produtos desenvolvidos. Usemos a indústria automobilística como exemplo.
• O veículo passa por um “crash test” para avaliar o acionamento do air bag.
• O veículo passa por um teste de velocidade para avaliar o funcionamento dos componentes internos do motor.
• O veículo passa por um teste no túnel de vento para avaliar a desempenho aerodinâmico do mesmo.
Pois bem, a indústria de software, assim como as demais, possui diversas técnicas e metodologias empregadas para garantir a qualidade e o bom funcionamento do mesmo. Por exemplo, testes funcionais, testes de carga etc.
Enfim, existe uma infinidade de tipos e técnicas de testes de software, cada uma com o seu propósito. Alguns destes testes devem ser executados por “testes”, outros por usuários comuns e outros pelo próprio desenvolvedor, como é o caso do teste unitário, que veremos neste artigo.
Testes Unitários
O teste unitário é o teste de menor nível no desenvolvimento de software, ou seja, com ele testamos as menores estruturas que temos em nossos softwares, que são os métodos.
Sendo assim, quando estamos falando de testar unitariamente o software, estamos falando em criar métodos para testar os comportamentos de nosso sistema. Por exemplo, se temos um método somar, teríamos o método de testes “somarTest”.
Quando escrevemos um teste unitário para um método, desejamos garantir que o comportamento do mesmo seja exatamente como o esperado nas mais variadas possibilidades. A ideia é pegar os bugs logo que eles nasçam. Além disso, o teste unitário se torna um ativo do projeto, ou seja, pode ser reutilizado e executado diversas vezes sem onerar o seu tempo.
Testes unitários e TDD são coisas diferentes
Um equívoco muito comum que vejo as pessoas cometerem no início de seus estudos sobre testes unitários é a confusão com TDD. No início muita gente acha que escrevendo testes unitários está desenvolvendo orientado a testes.
TDD é mais do que uma técnica, é um processo de desenvolvimento onde todo código novo da aplicação é escrito a partir de um teste falho, ou seja, você primeiro escreve um teste sem que exista o recurso, este teste obviamente falhará, somente então você escreve a implementação do recurso.
Este processo possui três passos simples, conhecidos como Red, Green, Refactor, onde:
• Red: você escreve o teste sem existir o código. Logo ele falhará.
• Green: implementa a solução, escrevendo o código necessário para que o teste passe.
• Refactor: refatora a solução dada no item dois, de acordo com as boas práticas de programação.
Nota do Devman
Refatoração é uma boa prática de desenvolvimento que consiste em uma série de técnicas para melhorar a qualidade e legibilidade do código sem afetar o comportamento conhecido do sistema.
Pois bem, é preciso entender que testes unitários e TDD estão intimamente relacionados, porém são coisas bem diferentes. O fato de você usar testes unitários não significa que você use TDD.
Uma das diferenças chaves, é a ótica do tempo em que são realizados os testes. Se você implementa seu código e depois cria seus testes, você simplesmente usa testes unitários. Agora, a partir do momento em que você começa a escrever seus testes antes mesmos de implementar a solução que eles testarão, aí você está mais próximo do TDD.
Porém, o ponto fundamental é a motivação das duas técnicas. Enquanto testes unitários têm como objetivo principal garantir que cada parte do sistema tenha exatamente o comportamento esperado, o TDD tem como motivação principal o design do código. Um dos grandes benefícios do uso do TDD é o design da solução. Quando se pensa na ótica do consumidor do código antes mesmo do código existir, você se obriga a pensar e avaliar as melhores e mais simples formas de implementação da solução, o que traz um grande benefício para o design da solução.
Nota do Dev
...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
|
|
|
|
Função para retornar Célula do Excel – C#
Olá pessoal, trabalhando na exportação de uma planilha para o excel me
deparei com a necessidade de gerar o relatório com fórmulas, sendo que estas
fórmulas iriam variar de acordo com os dados do relatório. Me vi então diante
da necessidade de converter uma determinada linha/coluna em uma célula do
excel, visto que o número de colunas era dinâmico, chegando facilmente na casa
de dezenas. Por exemplo, coluna 30 equivale a coluna AD do excel.
Diante disso
criei uma classe com duas funções para atender a esta necessidade, classe esta
que venho compartilhar com vocês:
public class ExcelUtil
{
//Array com
as letras das colunas
public static String[]
letras = { "A", "B", "C",
"D", "E",
"F", "G",
"H", "I",
"J", "K",
"L", "M",
"N", "O",
"P", "Q",
"R", "S",
"T", "U",
"V", "W",
"X", "Y",
"Z"};
//Função que
retornar a letra da coluna pelo índice
public static String
GetColumnLetterByIndex(Int32 col){
String celula = ""; //Aqui
verificamos se a coluna passada é maior do que 26
//pois 26
equivale a ultima letra do excel, "Z"
//a
partir daí começamos a ter duas letras... AA, AB, AC, AD...
if (col > 26)
{
//Aqui
pegamos o valor absoluto do resultado da divisão do numero da coluna por 26
//Este
é o indice da primeira letra de nossa coluna
//Ex.:
Col = 50 -> 50
...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
|
|
|
|
Exportação para o Excel em .Net –Formatando
células
Olá pessoal, no último artigo nós vimos como fazer uma exportação
simples, inserindo valores nas células.
Hoje iremos entrar um pouco mais no detalhe, onde mostraremos como
recuperar um conjunto de células e manipular a formatação das mesmas.
Podemos utilizar nosso mesmo projeto para este exemplo. A diferença é
que desta vez iremos formatar os títulos das colunas, simulando o cabeçalho de
um relatório.
Vou remover do código abaixo os comentários que já foram citados no
artigo anterior, deixando apenas comentário nas linhas novas, para evitar que o
exemplo fique com a visualização poluída.
No evento onclick de nosso botão, teremos:
private void
simpleButton1_Click(object sender, EventArgs e)
{
Microsoft.Office.Interop.Excel.Application
excelApp = new Microsoft.Office.Interop.Excel.Application();
//Objeto que representa um conjunto de células
Microsoft.Office.Interop.Excel.Range celulas;
excelApp.Workbooks.Add(Type.Missing); excelApp.Visible
= true; //Exportação
de colunas
excelApp.Cells[1,1] = "Codigo";
excelApp.Cells[1,2] = "Nome";
excelApp.Cells[1,3] = "Data de Cadastro";
excelApp.Cells[1,4] = "Percentual de Desconto";
//Vamos
agora centralizar os títulos
celulas = excelApp.get_Range("A1", "D1");
celulas.HorizontalAlignment =
Microsoft.Office.Interop.Excel.Constants.xlCenter;
//Recuperamos
o conjunto de células de A1 até D1
celulas = excelApp.get_Range("A1",
"D1");
//Após recuperarmos, podemos manipular o conjunto
//Neste
caso, mudaremos a cor para cinza
celulas.Interior.Color = ColorTranslator.ToWin32(Color.LightGray);
...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
|
|
|
|
Exportação para o Excel em .Net – Realizando
uma exportação simples
Olá pessoal, no último artigo nós vimos as principais classes
utilizadas e aquilo que é necessário para que possamos trabalhar com planilhas
do excel em nossa aplicação.
Hoje iremos entrar na codificação, explicando e montando um exemplo de
uma exportação simples, já com a formatação básica dos campos.
Para o nosso exemplo, crie um novo projeto WindowsForms e conforme foi
falado no último artigo, adicione a referência à biblioteca “Microsoft.Office.Interop.Excel”
ao projeto.
Neste exemplo, exportaremos uma série de dados “soltos” na planilha,
apenas para demonstrar o básico da exportação.
Insira um botão no formulário e coloque o seguinte código no click do
mesmo:
//Não esqueça do Using no namespace
using Microsoft.Office.Interop.Excel;
private void
simpleButton1_Click(object sender, EventArgs e)
{
//Aqui
criamos um objeto que representa a aplicação, no qual iremos interagir
//Inicialmente
apenas este objeto é suficiente para nossa exportação básica
Microsoft.Office.Interop.Excel.Application
excelApp = new Microsoft.Office.Interop.Excel.Application();
//Adicionamos um novo WorkBook em
nosso documento
//Type.Missing
representa a ausencia de um informação.
//Usamos
para não nenhum template para nosso documento
...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
|
|
|
|
Exportação para o Excel em .Net –
Introdução
Olá pessoal, esses dias tive a necessidade de gerar algumas planilhas no excel e tive uma certa dificuldade de encontrar um material consistente que deve uma geral neste assunto. Encontrei muitos pedaços de exemplo, outras coisas tiveram que ver na marra mesmo, na base da tentativa e erro. Resolvi então fazer um apanhado geral e mostrar para vocês como funciona a integração de aplicações. Net com excel, demonstrando as principais funcionalidades da biblioteca que temos disponível. Faremos nosso exemplo utilizando WindowsForms e C#.
No .Net nós temos as seguintes classes e
NameSpaces para manipular arquivos do excel:
Microsoft.Office.Interop.Excel.Application
Microsoft.Office.Interop.Excel.Range
Microsoft.Office.Interop.Excel.Workbook
Microsoft.Office.Interop.Excel.Worksheet
...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
|
|
|
|
Carregando dinamicamente um user control no ASP.NET
Olá pessoal,
um dia desses tive a necessidade de inserir um controle UserControl e
dinamicamente em uma página aspx. Após algumas tentativas cheguei a uma solução
no qual apresentarei para vocês.
Para o nosso exemplo, crie uma
nova aplicação WEB no visual studio. Clique com o botão direito no projeto, Add
=> New Item. Selecione a opção Web User Control para criamos um novo user
control.
Insira alguns controles no
UserControl, lembrando que carregaremos o mesmo no nosso aspx dinamicamente.
Feito isso, vamos agora carregar
o conteúdo de webFormTeste dentro do nosso user control que está na nossa
página principal. Para isso, digite o seguinte código no Page_Load da página
principal.
public partial
...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
|
|
|
|
Orientação a Objetos (Delphi/C#) - Introdução
Olá pessoal, hoje começarei a falar sobre orientação a
objetos. Vou procurar abordar os principais conceitos de orientação a objetos,
demonstrando exemplos de implementação em Delphi e C#. Falaremos sobre
conceito, classes, objetos, encapsulamento, polimorfismo, interfaces dentre
outros.
O mais importante em orientação a objetos não é saber criar
e destruir um objeto ou saber fazer um override e um overload. Isso são apenas
detalhes, o importante é dominar o conceito, e principalmente compreender o
quão útil e produtivo a orientação a objetos pode ser no nosso dia a dia.
Antigamente, no modelo procedural e estruturado, tínhamos
rotinas e subrotinas sendo executadas de forma seqüencial a fim de obtermos o
processamento de determinada rotina. Basicamente tínhamos variáveis locais e
globais, sem definição de escopo para as mesmas.
...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
|
|
|
|
Ciclo de vida de uma página ASPX - Parte 1 Olá pessoal, nos artigos anteriores falei sobre o ciclo de vida de uma aplicação ASP.NET, explicando como é realizada a interpretação da requisição pelo servidor web(IIS) e como o ASP.NET procede durante esta requisição. Hoje, começarei a falar sobre o ciclo de vida da página ASP.NET. Assim como a aplicação ASP.NET tem um ciclo de vida, a página de uma aplicação ASP.NET também tem seu ciclo de vida. Este ciclo inclui inicialização, instanciação de controles, manutenção de estado, execução de eventos e renderização. As fases deste ciclo de vida são as seguintes: Onde em cada uma das fases, temos as seguintes características: Page request - Ocorre antes do ciclo de vida da página começar. Quando a página é requisitada por um usuário, o ASP.NET determina quando a página precisa ser analisada e compilada(antes do inicio da vida da página), ou uma versão em cachê da página pode ser enviada em resposta sem rodar o ciclo de vida da página. Start
...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
|
|
|
|
Ciclo
de vida de uma aplicação ASP.NET – Parte 2
Olá
pessoal, no primeiro artigo desta série, expliquei como é o tratamento do
servidor WEB e como o ASP.NET se comporta quando recebe uma requisição no
servidor. Hoje daremos seqüência ao ciclo devida de uma aplicação ASP.NET
demonstrando a seqüência de operações que ocorrem no objeto HttpApplication
quando o mesmo é instanciado.
Enquanto a requisição é processada, uma série de
eventos são disparados. O conhecimento destes eventos é fundamental quando
desejamos implementar nossa própria HttpApplication. Estes eventos são:
1. ValidateRequest()
– Responsável por validar a requisição, verificando se a mesma possui algum
código malicioso.
2.
Realiza o mapeamento das URL caso as mesmas
tenham sido configuradas na seção UrlMappingsSection do web.config.
3.
Dispara o evento BeginRequest()
4. Dispara
o evento AuthenticateRequest()
5. Dispara
o evento PostAuthenticateRequest()
6. Dispara
o evento AuthorizeRequest()
7. Dispara
o evento PostAuthorizeRequest()
8. Dispara
o evento ResolveRequestCache()
9. Dispara
o evento
...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
|
|
|
|
Ciclo de vida de uma página ASPX - Parte 1 Olá pessoal, quando comecei a desenvolver aplicações em ASP.NET, um dos primeiros pontos que precisei compreender foi o ciclo de vida de uma aplicação ASP.NET. Isso é fundamental para desenvolvermos aplicações WEB com ASP.NET. Neste artigo, explicarei sucintamente qual o ciclo de vida de uma aplicação ASP.NET, demonstrando a seqüência de eventos que são disparados pela mesma quando realizamos uma requisição ao servidor. Tudo começa quando realizamos uma requisição do browser para o servidor web. O servidor então recebe esta requisição, verifica a extensão do arquivo e com isso determina como será processada essa requisição, redirecionando a mesma para a extensão ISAPI correpondente, no nosso caso ASP.NET. Quando o ASP.NET recebe a primeira requisição da aplicação, uma classe chamada ApplicationManager cria uma instância de application domain. Application domain representa o domínio da aplicação, o que permite que cada aplicação seja descarregada separadamente. Depois que o application domain é criado, ele instancia um objeto chamado HostingEnvironment e então o ASP.NET cria
...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
|
|
|
|
Trabalhando com arquivos e diretórios no DotNet – Parte 1
Olá pessoal, hoje começaremos a falar sobre como interagir e
trabalhar com arquivos e diretórios, criando, abrindo, excluindo e obtendo
informações a respeito dos mesmos.
O namespace System.IO é o namespace que usamos para trabalhar com
arquivos. Neste namespace nós temos tudo o que precisamos para interagir com
arquivos e diretórios. Neste namespace nós temos a classe FileInfo. Com esta
classe conseguimos extrair informações do arquivo, como por exemplo data de
criação, tamanho, nome, último acesso dentre outras.
Vamos começar apresentando algumas propriedades da classe
FileInfo.
CreationTime –
Esta propriedade retorna a data e hora de criação do arquivo.
Directory –
Retorna o diretório no qual o arquivo está inserido
DirectoryInfo –
Retorna o path completo do diretório no qual está inserido
Exists – Retorna
true quando o arquivo existe ou false quando o mesmo não existe.
...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
|
|
|
|
Trabalhando com arquivos e diretórios no DotNet – Parte 2
Olá pessoal, hoje seguiremos falando sobre como interagir e
trabalhar com arquivos e diretórios. No último artigo demonstramos as
propriedades e métodos da classe FileInfo. Hoje falaremos sobre diretórios.
Para lidar com diretórios, nós temos a classe DirectoryInfo.
Ela encapsula todo o comportamento e estado necessários para lidar com
diretórios.
Vamos começar apresentando algumas propriedades da classe
FileInfo.
CreationTime –
Esta propriedade retorna a data e hora de criação do arquivo.
Exists – Retorna
true quando o arquivo existe ou false quando o mesmo não existe.
FullName –
Retorna o nome completo do arquivo, incluindo o diretório.
IsReadOnly –
Indica se o arquivo é somente leitura ou não
Name – Retorna o
nome do arquivo
LastAccessTime –
Retorna a data e
...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
|
|
|
|
Criptografia com MD5 no DotNet - Parte 2
Olá pessoal, hoje mostraremos como implementar a verificação
de um valor criptografado com algoritmo MD5 em uma aplicação C# com
windowsForms.
Olá pessoal, vimos no último artigo, que a framework .Net
possui classes que facilitam nossa vida quando o assunto é criptografia. Vimos
como implementar como criptografar um
valor usando o algoritmo MD5. Como todos já devem saber, não existe algoritmo
para descriptografar o MD5, ou seja, não tem como revertermos uma criptografia
realizada.
Se não é possível descriptografar um hash MD5, como podemos
então verificar se uma senha é válida por exemplo. Simples. Nós temos que
criptografar o valor a ser verificado e comparar com o MD5 armazenado.
Para este nosso exemplo, vamos usar a aplicação do último
artigo. Apenas adicione mais um TextBox e renomeie o mesmo para
TxtVerificaValor. Adicione também um novo botão. A idéia neste exemplo é
digitar um valor em TxtValor, clicar no botão para criptografar, assim o valor
de TxtValorCriptografado será preenchido. Depois vamos digitar um valor
qualquer em txtVerificaValor e clicaremos no botão verificar, que irá comparar
o hash gerado com o hash do valor a ser verificado.
Crie o método abaixo que será responsável por verificar o
valor passado se coincide com o Hash me questão.
// Verifica se o valor é compativel com o hash passado
public bool verifyMd5Hash(string valor, string
valorCriptografado)
{
// Criptografamos
o valor passado como parâmetro
// utilizando o
mesmo método citado no artigo anterior
string
NovoValorCriptografado = GerarMD5(valor);
...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
|
|
|
|
Criptografia com MD5 no DotNet – Parte 1
Olá pessoal, hoje mostraremos como implementar o algoritmo
de criptografia MD5 no .Net em uma aplicação C# com windowsForms.
Olá pessoal, a framework .Net possui classes que facilitam
nossa vida quando o assunto é criptografia. Hoje nós veremos como implementar
uma rotina de criptografia utilizando o algoritmo MD5. Estas classes ficam no
namespace System.Security.Cryptography.
Para este nosso exemplo, crie uma nova aplicação
WindowsForms e adicione dois edits e um botão no formulário principal. Renomei
um dos edits para TxtValor e o outro para txtValorCriptografado.
A idéia é digitarmos o valor a ser criptografado no TxtValor
e exibir o mesmo já criptografado no txtValorCriptografado.
Crie o método abaixo
que será responsável por efetuar a criptografia.
// Nosso método recebe como parâmetro o valor a ser criptografado e
retorna o mesmo
public string GerarMD5(string valor)
{
// Cria uma nova
intância do objeto que implementa o algoritmo para
// criptografia MD5
MD5 md5Hasher = MD5.Create();
// Criptografa o valor passado
...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
|
|
|
|
Alterando a senha do
SYSDBA no Firebird Olá pessoal, hoje
mostraremos como alterar a senha do usuário SYSDBA em um banco de
dados Firebird. Todos
que trabalham com firebird sabem que diferentemente de outros SGDBs,
durante sua instalação não temos a opção de informar a senha
“mestre” do banco de dados. No firebird, esta senha, que é a
senha mestre do usuário SYSDBA que é o usuário mais forte do SGDB,
só pode ser alterada depois, através de um utilitário de linha de
comando disponibilizado pelo FBServer. Manter
a senha padrão é um tanto quanto complicado, pois todos sabem que a
senha de SYSDBA é masterkey, sendo assim, sua base fica extremamente
exposta. Para minimizar os riscos de exposição de sua base de
dados, podemos alterar a senha do usuário SYSDBA. Para
isso, abra o prompt de comando do windows e navegue até o diretório
bin da pasta de instalação do seu firebird server. No meu caso, o
mesmo está instalado em “C:\Arquivos de
programas\Firebird\Firebird_1_5”, neste caso utilizarei o seguinte
comando no prompt de comando para navegar até a pasta:
cd “C:\Arquivos de
programas\Firebird\Firebird_1_5\bin” Nesta
pasta, temos alguns utilitários do Firebird para administração do
servidor. Dentre eles temos o gsec que é quem utilizaremos
para alterar a senha do usuário SYSDBA. Para
isso, ainda no prompt de comando, vamos logar no gsec, através
da seguinte linha de comando:
gsec -user sysdba
-password masterkeyCom este comando, vamos
logar no gsec. Após logar,
basta executarmos mais uma linha para alterar a senha do SYSDBA. Para
isso digite o comando abaixo:modify sysdba -pw
newpasswd
Onde newpasswd
é a nova senha definida para o usuário SYSDBA.
Vamos ficando por aqui,
espero que tenham gostado e que as informações passadas sejam úteis
no seu dia-a-dia. Fiquem a vontade para deixar comentários, enviar
emails, com dúvidas, críticas e sugestões de temas. Um grande abraço. Ricardo Coelho.
-->">
|
|
|
|
Olá pessoal, hoje mostraremos como implementar um captcha
básico em uma aplicação WebForm com ASP.NET.
Para nosso exemplo, vamos criar uma nova ASP.NET
WebApplication.
Após criada, crie uma nova página e chame-a de Captcha.aspx.
No evento OnLoad desta página, insira o seguinte código:
Bitmap objBMP = new System.Drawing.Bitmap(60, 20);
Graphics objGraphics = System.Drawing.Graphics.FromImage(objBMP);
objGraphics.Clear(Color.SkyBlue);
objGraphics.TextRenderingHint = TextRenderingHint.AntiAlias;
// Fonte configurada para ser usada no texto do captcha
Font objFont = new Font("Times New
Roman", 10, FontStyle.Strikeout);
string captchaValue = "";
int[] valuesArray = new int[8];
int x;
//Cria o valor randomicamente e adiciona ao array
Random autoRand = new Random();
for (x = 0; x < 8; x++)
{
valuesArray[x] = System.
...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
|
|
|
|
Olá pessoal, hoje mostraremos como implementar o recurso de
AutoComplete em um TextBox em uma aplicação WindowsForms.
O TextBox nos fornece propriedades para que possamos
implementar facilmente este recurso de autocomplete.
Vamos fazer um exemplo para demonstrar o uso destas
propriedades. Crie uma nova aplicação WindowsForms e adicione um novo textBox
ao formulário.
As propriedades AutoCompleteSource e AutoCompleteMode, nos
permite configurar o recurso de autocomplete. Estas propridades possuem os
seguintes valores:
AutoCompleteSource
AllSystemResources – Equivalente ao FileSystem e AllUr.
AllUrl – Equivalente ao HistoryList e RecentlyUsedList.
CustomSource – Exibe uma lista personalizada, definida em
AutoCompleteCustomSource.
FileSystem – Exibe items do sistema de arquivos como fonte.
FileSystemDirectories – Determina que apenas nomes de
diretórios serão exibidos. Ignorando nomes de arquivos.
HistoryList – Exibe o histórico de todas as URLs como fonte.
None – Determina que o recurso de AutoComplete não será
habilitado.
RecentlyUsedList – Exibe lista de URL’s mais usadas
recentemente.
...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
|
|
|
|
Toda linguagem que se preze, nos fornece meio de tratar uma exceção. O tratamento de exceções é algo fundamental para a qualidade de nossos sistemas, porém, muitas das vezes acabamos por não fazer o nosso dever de casa e isso nos traz sérios problemas na manutenção de nossos sistemas. Hoje mostraremos como é o tratamento de exceções no C#.
No C#, o tratamento de exceções é feito através do seguinte bloco de código:
try
{
//Rotinas a serem executadas por sua aplicação
}
catch (Exception E)
{
//Bloco executado caso ocorra alguma exceção
}
finally {
//Bloco sempre executado ao final, independentemente de
//ter ocorrido erro ou não
}
O bloco de código acima, demonstra a estrutura do tratamento de exceções no C#. Dentro do bloco try, temos o que chamamos de “código protegido“. Abaixo, no catch, nós temos o código a ser executado caso ocorra alguma exceção no nosso código protegido. Por fim, temos o bloco finally, que sempre será executado.
Crie uma aplicação WindowsForms, inclua um botão no formulário e no
...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
|
|
|
|
Pecado capital no tratamento de exceções - ”síndrome-do-falou-tudo-e-não-disse-nada”
Olá pessoal, hoje falaremos sobre um pecado capital cometido
por muitos desenvolvedores no tratamento de exceções.
Um tratamento de exceções eficiente é aquele que impede que
o sistema pare por completo e que nos ajuda a diagnosticar o problema ocorrido
e não um que mascare o erro.
Pois bem, apesar desse conceito ser óbvio, não é isso que
vemos muitas das vezes. É comum vermos desenvolvedores “tratando” exceções, de
forma que acaba atrapalhando a análise do problema ou então mascarando o mau
funcionamento do sistema.
Vou mostrar para vocês um erro muito comum e que deve sempre
ser evitado no tratamento de exceções.
É o que chamo de ”síndrome-do-falou-tudo-e-não-disse-nada”.
É aquela velha história, quando alguém te fala alguma coisa, mas na verdade
acaba não dizendo nada, ou seja, você continua com os mesmos questionamentos anteriores
ao diálogo.
Essa síndrome se caracteriza pelo seguinte cenário:
try
{
//executa rotina 1
//executa rotina 2
...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
|
|
|
|
Construindo uma SplashScreen em Windows Forms com C#
Olá pessoal, hoje demonstraremos uma forma de construirmos uma
SplashScreen em Windows Forms com C#.
SplashScreen é aquela tela inicial de nossa aplicação, que é
exibida para o usuário durante um certo tempo, enquanto carregamos algumas
configurações, abrimos conexão, dentre outras rotinas necessárias na
inicialização de nossa aplicação.
Para o nosso exemplo, crie uma nossa aplicação WindowsForms
no VisualStudio. Altere o nome do formulário, que já criado por padrão junto
com o projeto, para FrmPrincipal. Adicione um novo formulário ao projeto, este
novo formulário será a nossa SplashScreen.
Renomei este formulário para FrmSplahScreen e adicione um
componente PictureBox no mesmo. Carregue uma imagem qualquer no componente
através de sua propriedade Image.
Altere a propriedade FormBorderStyle para none, para que
nosso formulário não tenha bordas.
Agora, precisamos escrever o código para carregar o nosso
formulário. Para isso, abra o arquivo principal de nosso projeto WindowsForms,
o responsável por executar a aplicação. O arguivo Program.cs. Altere o mesmo de
forma que fique como descrito abaixo:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using System.Threading;
namespace WindowsFormsApplication1
{
static class Program
{
/// <summary>
/// The main entry point
for the application.
/// </summary>
[STAThread
...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
|
|
|
| |
|