Pergunta

Em vez de passar muitos argumentos para um método, eu estava encapsulando-o em um objeto argumento.

Nota : simplied for demo
text alt

Para tal caso, um, o que seria uma prática melhor?

• Crie uma classe e nome -lo como InventorySaveArgs
- ou -
• Criar uma classe aninhada e nome -lo como SaveArgs?

E você também explicar por que alguém iria escolher um ou o outro?

[EDIT] :. Esse tipo de argumento será usado em outros conjuntos, bem

questão lado :. Só por curiosidade, se não houver um nome padrão para encapsular vários parâmetros para um único objeto por acaso

[UPDATE] : Diretrizes encontrada uso Nested Tipo no MSDN
InventorySaveArgs deve estar disponível a partir de outro assembléias, por isso estou indo com uma classe regular.

Foi útil?

Solução

IIRC .NET Diretrizes de Design são bastante claras sobre isso - não deve haver tipos aninhados públicos

.

Outras dicas

Gostaria de nomeá-lo InventorySaveArgs apenas no caso de você querer fazer o tipo disponível para outros tipos de uso. Se o nome dele InventorySaveArgs desde o início, então você vai ter um nome que seja significativo em todos os contextos, se você precisar refatorar.

Eu escolheria o primeiro, criar uma classe externa e nomeá-la InventorySaveArgs. Se a classe particular é usado em um método público, o único argumento para não incluí-lo fora da classe é a poluição namespace.

Ter a classe interna é francamente irritante em C # porque você deve constantemente prefixar o nome do tipo com o nome da classe. Como foi dito, uma vez que o público a única motivação para donig esta é a redução da poluição do namespace. Mas se o seu namespace é tão grande que os InventorySaveArgs classe está tornando grande demais, você provavelmente precisará quebrar o seu namespace de qualquer maneira.

O único padrão para encapsular vários parâmetros para um único objeto que eu já ouvi de um refatoração padrão detalhado por Martin Fowler

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top