Reino: Code Quality
Códigos de baixa qualidade levam a comportamentos imprevisíveis. Da perspectiva do usuário, isso normalmente se manifesta como usabilidade ruim. Para um invasor, trata-se de uma oportunidade para atacar o sistema de formas imprevistas.
Code Correctness: Readonly Collection Reference
Abstract
A palavra-chave "readonly" impõe a regra de que a variável deve ser inicializada, pois está declarada ou no construtor e não pode ser modificada em nenhum outro lugar. Isso funciona conforme esperado para tipos de valores, mas o conteúdo de objetos e listas ainda é modificável, mesmo tendo sido declarado como somente leitura privado.
Explanation
Retornar uma variável de lista
Exemplo 1: O código a seguir contém uma lista
private readonly
de uma propriedade somente "getter" permite que o código de chamada modifique o conteúdo da lista, fornecendo a ela eficazmente acesso de gravação e contrariando as intenções do programador que a tornou private readonly
.Exemplo 1: O código a seguir contém uma lista
_item
, que é declarada como private readonly
.
class Order
{
private readonly List<string> _item = new List<string>();
public IEnumerable<string> Item { get { return _item; } }
public Order()
{
/*class initialize */
}
/*some important function......*/
}
References
[1] Standards Mapping - Common Weakness Enumeration CWE ID 398
desc.structural.dotnet.code_correctness_readonly_collection_reference