A primeira apresentação que assisti no fisl10 foi muito boa. Lucas Húngaro mostrou formas de criar aplicações Ruby on Rails com testes, passando um pouco da sua experiência em desenvolvimento Web.
A palestra foi dividida em quatro partes: Fundamentos, Abordagens, Como eu desenvolvo com testes no Rails e Dicas. Mas separei aqui em mais duas: Boas Práticas e Maus Sinais.
Meu pai, que considero um exemplo de pessoa honesta, humilde e de bom caráter, me ensinou que na vida precisamos agir com serenidade. Ele me apresentou a oração da serenidade:
Concedei-me, Senhor, a serenidade necessária para aceitar as coisas que não posso modificar, coragem para modificar aquelas que posso e sabedoria para distinguir umas das outras.
Agora, o que isso tem a ver com desenvolvimento de software?
Imagine um cenário que você precise incluir uma nova funcionalidade em uma aplicação existente. Suponha que o código dessa aplicação não está muito bom, há acoplamentos entre os objetos, pouca cobertura de testes e a arquitetura deixa a desejar. Você precisa incluir a nova funcionalidade, mas não pode aumentar o débito técnico.
Por outro lado, você não irá refazer toda a aplicação de uma forma melhor, pois além de você não ter tempo (e dinheiro) disponível para isso, o sistema hoje atende os requisitos atuais e executa sem problemas.
Nessa situação, você precisa de sabedoria para distinguir o que pode ser modificado neste momento no código existente para melhorá-lo e o que você não irá modificar agora, já que não afeta diretamente a nova funcionalidade.
Você necessita de coragem para modificar o código legado, pagar o débito técnico, criar testes automatizados, refatorar, tornar o código mais claro, reformular o design, diminuir acoplamentos.
Você terá serenidade para aceitar que nem tudo pode ser melhorado agora, pois você tem prazo e orçamento a serem cumpridos. O objetivo neste momento é implementar a nova funcionalidade.
Com serenidade você pode alcançar uma melhoria contínua no seu software. . Obs.: Após rascunhar o conteúdo deste post dei uma olhada no meu leitor de feeds e me deparei com o post Parar e Refatorar? da InfoQ Brasil. A discussão sobre o tema é longa, mas a serenidade também se aplica.
Glaucio Cancion lançou o SEO PARK, um blog para falar sobre SEO, com a finalidade de trocar informações com diversos profissionais que estão envolvidos com o assunto.
Search Engine Optimization (SEO) é o conjunto de estratégias com o objetivo de potencializar e melhorar o
posicionamento de um site nas páginas de resultados de pesquisa nos mecanismos de busca.
Los Angeles Lakers se consagrou Campeão da Temporada 2008-2009 da NBA ao vencer o quinto jogo do playoff final, contra o Orlando Magic, por 99 a 86, fechando a série em 4 a 1.
No final desse mês estarei no fisl10, o 10º Fórum Internacional de Software Livre. O evento será realizado entre os dias 24 a 27 de junho, em Porto Alegre.
O fisl é o maior evento de software livre da América Latina e até a publicação desse post já possui mais de 5.500 inscrições. A Associação SoftwareLivre.org (ASL), que organiza o evento, espera atingir a marca de 8 mil participantes.
Entre os assuntos que serão abordados, estão:
Linux, Ubuntu, KDE, BSD
Desenvolvimento em Ruby, Java, PHP, Python, Perl e Smalltalk
Desenvolvimento de jogos
MySQL, PostgreSQL
Robótica
Segurança
Software livre e negócios
Palestrantes como Richard Matthew Stallma, fundador do Movimento Software Livre, do Projeto GNU e da Free Software Fundation (FSF); Peter Sunde, um dos fundadores do site The Pirate Bay; e John “Maddog” Hall, fundador da Linux Internacional são destaques do evento.
A lista completa dos palestrantes, a programação completa, inscrições e outras informações, você encontra no site do fisl10.
No próximo dia 27 de junho vai rolar o primeiro evento do grupo de discussão sobre arquitetura de software .NET Architects.
Eu infelizmente não vou, pois estarei em outro evento. Mas Luciano Coelho e Rodrigo Ortiz, que trabalham comigo, irão e poderão nos contar tudo que aconteceu.
Algo interessante é que exatamente todos os assuntos que serão abordados, estaremos utilizando em um novo projeto que irá iniciar no segundo semestre.
Veja o conteúdo das palestras:
Programando com prazer com Domain Driven Design (DDD) Giovanni Bassi
O Domain Driven Design é uma nova abordagem para desenvolvimento de software. Mas não é tão nova assim. Ela reune melhores práticas de OO e traz uma nova visão a velhos conceitos. Entenda nesta palestra a proposta do DDD, e porque ele pode mudar sua maneira de programar.
Utilizando Injeção de Dependência com Unity (Enterprise Library) Leandro Daniel
Nessa palestra veremos o padrão de Injeção de Dependência como uma alternativa técnica na construção de aplicações plugáveis, onde se deseja manter a flexibilidade para troca de componentes com menor impacto de manutenção, maior reusabilidade e facilidade na aplicação de testes.
ASP.NET MVC: tome seu HTML de volta Victor Cavalcante
Nessa palestra veremos o que é o ASP.NET MVC e o que ele não é, como ele funciona, diferenças entre ASP.NET MVC e Web Forms, extensibilidade, testabilidade, criação de templates com T4 e jQuery. A intenção desta palestra é dar informações suficientes para que o arquiteto decida utilizar ou não ASP.NET MVC.
ORM - Sendo preguiçoso com NHibernate Juliano Oliveira
Nessa palestra você verá os principais pontos que fazem dos frameworks de ORM e do NHibernate ferramentas tão importantes nos projetos, desmistificar seus maiores mitos, os principais recursos, ferramentas de análise (NHProof) e verá também como ser produtivo com o NHibernate.
Testes: garantindo que seu código faz o que você quer Mauricio Aniche
Entenda porque testes automatizados de software são importantes e quais as vantagens que ele traz para a equipe de desenvolvimento. Veja também na prática que criar testes automatizados é simples, rápido e realmente útil.
O valor da inscrição é de R$ 50,00 e o evento terá aproximadamente 9 horas de duração.
Mais informações você pode ter diretamente na página do evento.
WTF é conhecido no mundo da tecnologia como “Worse Than Failure” (Pior do que falhar) ou simplesmente “What The Fuck”. São situações onde coisas estranhas e inexplicáveis acontecem na execução de softwares, que causam aquele tipo de reação aos usuários:
Existe até um blog, The Daily WTF, que trata sobre esse tipo de assunto de forma extrovertida. Mas vamos ao WTF em questão.
Na TV do quarto era exibida a programação dos eventos que aconteciam durante todo o dia no hotel.
No segundo dia da QCon, veja só quem eram os palestrantes do Tutorial sobre Domain Specific Languages, segundo o canal da programação diária de eventos:
O que será que o Martin Fowler diria (ou disse) para o pessoal do hotel sobre isso?
Algo do tipo “Test all the fucking time” ou “Send me your apologies with my flowers”?
Obs.: No saguão do hotel havia um totem exibindo a programação dos eventos, mas não continha esse erro.
Quando você tiver um método em que o retorno é algum tipo de coleção, ou seja, qualquer classe que implemente IEnumerable ou uma de suas interfaces filhas, nunca retorne null.
Quando a lógica do seu método não tiver elementos para serem colocados na coleção de retorno, você deve retornar uma lista vazia, com zero elementos. Essa boa prática vai facilitar a vida do código que irá consumir seu método.
Vamos ver um exemplo de um método que retorne uma coleção:
public class BookService
{
public IList<Book> FindBooksByTitle(string startsWith)
{
//Alguma lógica que não encontra nenhum livro.
return null;
//Código restante.
}
}
E o código que consome o método FindBooksByTitle:
BookService bs = new BookService();
foreach (var book in bs.FindBooksByTitle(&amp;quot;The history&amp;quot;))
{
//Faz alguma coisa com a variável book.
}
Do jeito que está, se nenhum livro for encontrado de acordo com o critério passado, o valor retornado será null. Consequentemente, na linha 3 do código consumidor será gerada uma exceção do tipo NullReferenceException, pois tentará iterar através do foreach em uma variável nula.
Como resolvemos isso? Ah, basta colocar uma verificação se o retorno do método é nulo:
BookService bs = new BookService();
IList<Book> books = bs.FindBooksByTitle("The history");
if (books != null)
{
foreach (var book in books)
{
//Faz alguma coisa com a variável book.
}
}
Errado! O código que consome o método não pode ficar responsável por fazer esse tratamento. Senão, todo código que consumir o método FindBooksByTitle precisará fazer essa verificação de retorno nulo antes de iterar na coleção. Essa responsabilidade tem de ficar dentro da classe BookService e não fora dela.
Consertando o exemplo para retornar uma lista vazia:
public class BookService
{
public IList<Book> FindBooksByTitle(string startsWith)
{
//Alguma lógica que não encontra nenhum livro.
return new List<Book>();
//Código restante.
}
}
Agora o código consumidor pode iterar sem erros, mesmo que não seja encontrado nenhum livro:
BookService bs = new BookService();
foreach (var book in bs.FindBooksByTitle("The history"))
{
//Faz alguma coisa com a variável book.
}
Comentários