Une question me taraude actuellement. Je me demande ce qui est le plus propre et pratique à utiliser.
Venons-en au code tout de suite, voici 2 exemples qui fonctionnent pareil :
public class Example1
{
void Update()
{
if (X360.IsButtonPressed(X360.Button.A)) // Player 1 just pressed A this frame
{
}
}
}
Et
using XInput;
public class Example2
{
void Update()
{
if (X360.IsButtonPressed(Button.A)) // Player 1 just pressed A this frame
{
// Do stuff for player 1
}
}
}
Première méthode :
Inconvénient : je dois réécrire "X360." à chaque fois que je veux utiliser une enum, car j'ai inclus mes enum dans ma classe X360 pour éviter les conflits à l'import (ce code fait partie d'un plugin que je développe).
Seconde méthode :
Avantage : plus besoin d'écrire "X360." !
Inconvénients :
- Il ne faut pas oublier le "using XInput".
- De plus, j'ai dû choisir un nom de namespace (XInput) différent de X360 pour éviter la confusion, mais on perd en clarté quand même je trouve. J'ai pu sortir les enum de la classe X360 pour éviter la redondance de "X360.", ces enums sont dans le namespace.
- Cependant, le souci de conflit revient : si un autre namespace utilise le même nom pour ses enums, Button par exemple, il faudra de toutes façons écrire explicitement "XInput.Button".
Vos avis sont les bienvenus !
- Edité par eldoir 10 mars 2019 à 20:31:05
Heureux l'étudiant qui, comme la paisible rivière, suit toujours son cours sans jamais quitter son lit.
A vrai dire, je suis sur que tu connais la réponse, donc, je vais juste te poser trois questions qui te permettront de réfléchir et de la retrouver
Commence par te demander pourquoi tu prends la peine de regrouper certaines fonctionnalités dans un espace de noms
Ensuite, intéresses toi à ce qui se passe lorsque tu "sort" les fonctionnalités de l'espace de noms au travers de la directive usign.
Et, enfin, demande toi ce qui va se passer le jour où tu voudras faire cohabiter deux modules dont les fonctionnalités sont placées dans des espaces de noms. Par exemple, ton module "Input", qui fourni une énumération button et un module Gui, qui fournit une classe button.
Le tout, en sachant que les deux éléments "button" dont il est question ont des utilisations clairement différentes
Ce qui se conçoit bien s'énonce clairement. Et les mots pour le dire viennent aisément.Mon nouveau livre : Coder efficacement - Bonnes pratiques et erreurs à éviter (en C++)Avant de faire ce que tu ne pourras défaire, penses à tout ce que tu ne pourras plus faire une fois que tu l'auras fait
Pour compléter la réponse de @koala01, l'utilisation des alias de namespace permettent d'avoir l'avantage de l'isolation des namespaces et de grandes facilités d'écriture.
Je connaissais les alias de namespace mais je n'avais pas connaissance du mot-clé global donc c'est ça de pris !
J'en suis donc resté à ma solution initiale, à savoir de laisser mon enum dans ma classe, il y avait trop d'inconvénients à utiliser la seconde méthode.
Encore merci à vous !
Heureux l'étudiant qui, comme la paisible rivière, suit toujours son cours sans jamais quitter son lit.
Question design : namespace et nested enum
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.