JustDummies

Juste des dummies, mais redoutablement efficaces.

Sections de la documentation

JD013 : HeldCollectionPassedToOneOf

PropriétéValeur
CatégorieUsage (JustDummies.Usage)
Sévérité🟠 Avertissement
Activée par défautOui

Any.OneOf prend params T[]. Un unique argument List<Order> lie donc T = List<Order> et non Order : l’ensemble contient un élément, chaque tirage retourne la même liste, et le choix arbitraire que le test prétend faire ne varie jamais. Rien n’échoue — l’appel compile, les tirages réussissent, et le test est simplement moins arbitraire qu’il ne se lit.

L’ADR-0011 ouvre un nouvel onglet a consigné cela comme un risque accepté, « atténué par le fait qu’ElementOf est le chemin documenté ». Cette règle transforme cette atténuation d’un espoir documentaire en vérification.

Any.ElementOf est le point d’entrée qui prend une collection et tire parmi ses éléments.

Non conforme

List<Order> orders = ...;
IAny<List<Order>> pool = Any.OneOf(orders);   // JD013 : un ensemble d'un seul élément — chaque tirage rend la même liste

Conforme

List<Order> orders = ...;
IAny<Order> pool = Any.ElementOf(orders);

Ce qui n’est pas signalé

  • Any.OneOf<List<Order>>(orders) — un argument de type explicite énonce l’intention inverse, et c’est la façon documentée de dire « un ensemble dont l’unique élément est cette collection ».
  • Une string seule, qui est IEnumerable<char> : un ensemble d’une chaîne est ordinaire.
  • Un tableau. Un tableau satisfait params directement : T est déjà inféré comme le type d’élément et l’appel est correct tel quel.
  • Deux arguments ou plus, qui ne peuvent pas produire la confusion.

Lire la source, ou la corriger là-bas ouvre un nouvel onglet· Repris depuis lib-v1.0.0-preview.6