Lorsque vous travaillez avec des données statiques dans une méthode d'instance, la seule implication à laquelle je peux penser est la synchronisation dans une application multithread. Je ne peux pas penser à des implications négatives lorsque vous travaillez avec des données d'instance d'une méthode statique. Cependant, juste parce que quelque chose peut être fait ne signifie pas devrait être fait.
Voici un exemple concret que vous avez fourni.
classe A est une instance basée et a un champ d'instance appelé ProductPrice de double. La classe B est statique et possède une méthode statique appelée PlayAroundWithPrice (double prix) et le codeur est transmis dans le champ ProductPrice .
De toute évidence, il n'y a rien techniquement illégal avec cet exemple, mais il va à l'encontre du grain pour moi. Tout d'abord, le champ ProductPrice de la classe A est évidemment public puisque la classe B peut fonctionner dessus. Pour les besoins de l'encapsulation, je rends toujours les champs privés et j'utilise une propriété publique pour y accéder. Deuxièmement, étant donné que ProductPrice est un champ public au lieu d'une propriété publique, il est impossible pour Class A d'empêcher ProductPrice d'être défini sur des valeurs non valides (valeurs négatives, par exemple). Troisièmement (comme indiqué ci-dessus), si cet exemple se produit dans un programme multithread, il peut y avoir des problèmes de synchronisation. Quatrièmement, je suppose que c'est le vrai problème, pourquoi avoir une méthode statique sur la classe B pour fonctionner sur le terrain de la classe A? Pourquoi ne pas mettre la méthode statique sur la classe A? Je ne sais pas si j'irais aussi loin que d'en faire une règle stricte (peut-être simplement une règle empirique), mais je limiterais l'utilisation de méthodes statiques pour quand vous ne voulez pas pour payer le coût de construction d'un objet juste pour utiliser la méthode.
Par exemple, dans le projet sur lequel je travaille, j'ai une classe IPHeader qui construira entièrement une instance d'IPHeader à partir d'un tampon d'octets. Cependant, dans la plupart des cas, je n'ai besoin que de quelques valeurs de l'IPHeader. Donc, pour éviter les coûts associés à la création et à la collecte des ordures d'une instance d'IPHeader, j'ai ajouté quelques méthodes statiques qui extraient directement les valeurs du tampon d'octets.
J'espère avoir bien compris votre question.
Je suppose que vous voulez dire "Quelle est l'implication de travailler sur des données d'instance à partir d'une méthode statique?" – thomasrutter