J'écris une interface pour une collection d'objets triés. Comme d'habitude, je laisse à l'utilisateur le soin de spécifier comment ces objets sont triés. Cependant, je suis actuellement partagé entre une interface clé-valeur (où la clé de tri est explicitement séparée de la valeur) et une interface valeur uniquement (où la valeur est également la clé de tri, ou l'utilisateur doit gérer une clé de tri séparée en passant une fonction de comparaison).
À mon avis, une interface clé-valeur oblige l'utilisateur à toujours disposer d'une clé distincte de la valeur, même lorsqu'une valeur forme naturellement sa propre clé. Cependant, elle retire à l'utilisateur la responsabilité de la gestion de la clé, ce qui peut conduire à un code utilisateur plus simple et plus propre lors de l'utilisation de mon API. Une interface basée uniquement sur les valeurs permet une représentation plus compacte des valeurs qui sont leur propre clé, mais oblige l'utilisateur à suivre et à gérer ses propres clés dans les cas où il existe une distinction naturelle entre clé et valeur.
Il existe bien sûr des documents qui soutiennent les deux approches, même s'il me semble (je peux me tromper) que les documents plus anciens tendent à préférer une approche basée sur les valeurs uniquement, tandis que les documents plus récents préfèrent une approche basée sur les clés et les valeurs.
Je suis curieux de connaître vos préférences dans des cas comme celui-ci. Sommes-nous parvenus à un stade où l'une est généralement préférée à l'autre ? Si ce n'est pas le cas, qu'utilisez-vous habituellement et pourquoi ?