En supposant que j'aurai besoin d'accéder aux valeurs contenues dans un fichier donné un petit nombre de fois, de différentes méthodes, je peux inclure une sorte de valeur booléenne dans une méthode pour déterminer s'il convient ou non d'appeler le fichier? Dire que j'ai le fichier config.cfg. Dans ce fichier, il y a trois valeurs:Conserver une valeur obtenue à partir du fichier dans la valeur de retour d'une méthode
string/name>max|
bool/adult>yes|
int/age>20|
La méthode getUserName()
retourne la valeur de "max"
. Elle le fait en appelant le fichier:
using (StreamReader reader = new StreamReader(path))
{
//get line beginning with string/name here
return //string value containing name
}
Supposons que je dois utiliser la valeur de name
à plusieurs reprises, ainsi que les valeurs isAdult
et clientAge
. Plutôt que d'accéder au fichier encore et encore, il pourrait être beaucoup plus facile d'enregistrer la valeur demandée dans une forme de variable statique. Cependant, cette variable doit encore être modifiée en valeur au moins une fois, lorsque la méthode est appelée pour la première fois.
Puis-je faire cela à l'intérieur la méthode getUserName()
?
En outre, cette idée est-elle même possible dans les limites de la POO? Est-ce un concept similaire à Prefetch?
Vous pouvez créer une classe singleton qui analyse le fichier et dont les valeurs sont des propriétés. La première fois que vous accéderez à la classe, elle chargera le fichier et, à l'avenir, l'accès sera en mémoire. – juharr
pourquoi pas un statique, et le définir avec une valeur initiale nulle. Simple, propre, et malgré ce que les puristes disent que c'est une bonne intention (en fait une intention spécifique de la définition du langage C#) d'utiliser des variables statiques. – Rob
@Rob car cela nécessite un objet supplémentaire dans la classe. J'essaie de tout faire à l'intérieur de la méthode unique, au besoin, plutôt que de créer une valeur distincte pour 'Name'. Cela signifie que si j'exécute une fonction qui ne nécessite pas certaines des données contenues dans le fichier, je n'ai pas besoin d'y accéder. Pour info, je cible les plateformes embarquées ici, d'où la nécessité de rationaliser. –