Writing Quality Code – 4 Sintomas que podem revelar um código ruim

Written on:fevereiro 6, 2012
Comments
Add One

Robert C. Martin, popularmente conhecido como Uncle Bob, utilizando o conceito de Design Smells (Odores de Design) elencou quatro sintomas básicos que ajudar a descobrir se o nosso código não cheira bem – é pobre de Design. São eles:

  1. Rigidez: Rigidez é a tendência que o software tem a ser difícil de mudar, mesmo para mudanças simples. Qualquer mudança simples provoca subsequentes mudanças em módulos dependentes; uma cascata de mudanças. Dizemos que um sistema é rígido quando percebemos que para uma mudança simples precisamos alterar diversas outras partes do sistema. Quanto mais módulos precisam ser alterados, mais rígido é o sistema.
  2. Fragilidade: A fragilidade está intimamente ligada a rigidez. Podemos definir fragilidade como a tendência que o software tem em quebrar cada vez que é mudado. Ou seja, a resolução de um bug provoca vários outros bugs no sistemas. Muitas vezes em áreas que não tem relação conceitual com a que foi alterada. Um cenário muito comum ainda nos dias de hoje.
  3. Imobilidade: É a incapacidade de reutilizar componentes já desenvolvidos em outras partes do projeto atual. Muitas vezes descobrimos que precisamos desenvolver módulos que são muito semelhantes a outros já desenvolvidos e percebemos que estes módulos contém lógicas que os deixam muitos acoplados ao sistema. O esforço e os riscos de desacoplá-los tornam inviável a sua reutilização e acabamos decidindo reescrever nosso novo módulo do zero.
  4. Viscosidade: Existem 2(dois) tipos de viscosidade: de Software e de Ambiente.
    • Software: Quando precisamos fazer uma  mudança no sistema podemos encontrar mais de uma maneira de fazê-la. Algumas preservam o Design, outras não. Quando as que preservam são mais difíceis de implementar do que as que não dizemos que a viscosidade do sistema é alta.É mais fácil fazer a coisa errada do que fazer a certa.
    • Ambiente: Viscosidade de ambiente surge quando o sistema é lento e ineficiente. Quando o tempo de compilação é muito alto, o sistema demora a fazer check-in, a dar o deploy, etc…

Evitando maus odores no código

Um das formas de evitar os maus cheiros no código é fazer uso dos princípios SOLID. SOLID é uma sigla mnemônica introduzido pelo Uncle Bob no início de 2000, que representa cinco princípios básicos da programação orientada a objetos e design. Estes princípios são orientações que podem ser aplicadas no desenvolvimento de software para remover o código que cheira mal, fazendo com que o programador crie o hábito de refatorar o código fonte para que este seja ao mesmo tempo legível e extensível.

Vejamos esses princípios representados em diagramas de classe.

  • SRP — The Single Responsibility Principle
    Uma classe deve ter uma, e apenas uma, razão para mudar
  • OCP — The Open Closed Principle
    Uma classe deve permitir estender seu comportamento, sem modificá-la.
  • LSP — The Liskov Substitution Principle
    Classes derivadas devem ser substituíveis por sua classe base.
  • ISP — The Interface Segregation Principle
    Implemente interfaces de granularidade ótima que são bem especificadas.

DIP — The Dependency Inversion Principle
Dependa sempre de abstrações, e nunca de coisas concretas.

Além desses princípios sobre design de classes, também introduziu os de coesão e acoplamento de pacotes:

  • REP — The Reuse Release Equivalency Principle
  • CCP — The Common Closure Principle Principle
  • CRP — The Common Reuse Principle
  • ADP — The Acyclic Dependencies Principle
  • SDP — The Stable Dependencies Principle
  • SAP — The Stable Abstractions Principle

Para mais informações

Keep Coding…

Listening to A Great Day For Freedom – Pink Floyd

Compartilhe.

Sharepoint – Diferenças entre grupos do AD e grupos do sharepoint

Written on:janeiro 29, 2012
default

Não são raros os casos em que clientes querem aproveitar a estrutura de departamentos e usuários existentes no Active Directory da organização e integrá-la com o Sharepoint. Felizmente, essa integração é nativa do sharepoint e não precisaremos de customizações e/ou desenvolvimentos. Porém, para um bom planejamento da arquitetura sharepoint, precisamos diferenciar os Grupos de Domínio(AD) dos Grupos do Sharepoint. Grupos de domínio Vantagens: Normalmente são criados e mantidos pelo departamento…

Read more...

Sharepoint e ALM – Tipos de Aplicativos

Written on:janeiro 28, 2012
shpalm

O sharepoint é uma plataforma que proporciona aos desenvolvedores de softwares ( foco deste artigo ) construir aplicativos para resolver as mais diversas necessidades de negócios. Com suas features OOB(Out of The Box) agrupadas nas suas 6(seis) capacidades  - sites, comunidades, conteúdo, busca, composições e percepções – esta incrível plataforma acelera o processo de desenvolvimento de software, permitindo entregar soluções robustas, flexíveis e customizáveis em um período de tempo bem mais…

Read more...

[Book] Código Limpo: Habilidades Práticas do Agile Software

Written on:agosto 21, 2011
Livro Codigo Limpo

Um programador que escreve um código limpo é um artista que pode pegar uma tela em branco e submetê-la a uma série de transformações até que se torne um sistema graciosamente programado. Título: Código Limpo: Habilidades Práticas do Agile Software Autor: Robert  C. Martin (Uncle Bob) Editora: Alta Books Número de páginas: 440 Quando criança, lembro da professora passar uma atividade de pintura para a classe. Ela entregou uma folha em branco…

Read more...

Quando usar o Dispose() do SPWeb?

Written on:junho 1, 2011
Dispose

Por que é importante chamar o Dispose()? Todos os objetos SPWeb e SPSite guardam uma referência para um objeto SPRequest e este por sua vez guarda uma referência para um objeto COM (Component Object Model) do SharePoint. Objetos COMs que são responsávies por fazer a comunicação com o SQL Server. Conforme ilustrado na figura abaixo. Ao chamar o Dispose() de um objeto SPWeb não estaremos efetivamente removendo-o da memória (O…

Read more...