Projeto por contrato / C # 4.0 / ArgumentNullException evitando
-
10-07-2019 - |
Pergunta
Estou terrivelmente cansado de verificar todos os meus argumentos para null, e jogando ArgumenutNullExceptions quando eles estão.
Pelo que entendi, C # 4.0 permite algum projeto de construções de contrato. Será possível especificar que um método não aceita argumentos nulos em C # 4.0?
Além disso, há alguma coisa que posso fazer nesse meio tempo (talvez um atributo?) Para evitar esta tarefa monótona de verificação de nulos e jogando?
Solução
Você pode criar um NotNull<T>
classe genérica que ajuda, mas existem alguns efeitos colaterais. Consulte de Robert Nystrom blog .
Outras dicas
Rick Brewster descreve uma solução boa para concisa, estilo declarativo parâmetro de verificação neste post,
http: // blog.getpaint.net/2008/12/06/a-fluent-approach-to-c-parameter-validation/
evita o uso de reflexão (desvantagem de DBC) e cria nenhuma sobrecarga para o caminho de código não excepcional.
Como a forma como ele usa os métodos de extensão para permitir que o que parece ser chamadas de método de instância em objetos nulos. bit muito inteligente de codificação IMO.
Se você é vendido em DbC, Google Spec # e PostSharp.
Como uma alternativa para as respostas já dadas, vale a pena olhar para o Null Object design pattern
.
A essência deste padrão de projeto é que uma vez que o "objeto nulo" é criado, não há mais necessidade de realizar qualquer verificação para nulo e os métodos do objeto nulo implementar o comportamento desejado sempre que um nulo (caso contrário) teria foi passado vs uma referência a um "objeto real".
Este padrão de projeto não depende de C # 4.0 e na verdade pode ser facilmente implementado em quase qualquer linguagem de programação OO .
Eu apenas comecei usando o Código de Contratos é um novo recurso do C # 4.0 você precisa baixar um suplemento de MS para permitir que você vê-lo em suas configurações do projeto. Detalhes aqui -> http://research.microsoft.com/en-us/projects/contracts/