2010-07-24 12 views
9

Tengo un código que trata con clientes almacenados en la base de datos. Hay un objeto Customer, y tiene, entre otras, dos propiedades de tipo byte[]: una propiedad para contraseña sal, la segunda para contraseña hash.¿Por qué "las propiedades que devuelven matrices son propensas a las ineficiencias del código"?

Comprobación del código con FxCop, veo que se queja (CA1819, Reglas de rendimiento) que:

Properties

" que devuelven matrices son propensos a las ineficiencias de código considerar el uso de una colección o hacer. este es un método. Consulte las pautas de diseño para más información ".

y sugiere:

"cambio 'Customer.PasswordHash' para devolver una colección o lo convierten en un método."

Realmente no entiendo, ¿cuál es la ineficacia del código en lo que estoy haciendo?

Respuesta

4

El problema es que las matrices son siempre mutable. Eso significa que no se puede devolver uno de un método que no sea:

  • Permitir que la persona que llama a estropear su estado interno
  • Creación de una copia primera

Si utiliza una colección, puede cree un contenedor de solo lectura alrededor de la colección real en su lugar, y devuélvalo, y eso puede ser considerablemente más económico. Alternativamente, si lo cambia a un método que reducirá la expectativa de que será muy rápido para llamar.

Por supuesto, si está satisfecho con las personas que llaman la mutación de sus datos, entonces una matriz funcionará bien ...

Cuestiones relacionadas