J'ai cru que c'était une page dédiée au pokémon, j'ai halluciné quelques secondes, puis j'ai cliqué x)
Même si un singleton te semble hypocrite, cela me semble beaucoup mieux. Les variables globales t'interdisent pas mal de choses comme de faire facilement des tests unitaires ou de réutiliser le code (bon, ça peut être secondaire si le code est vraiment spécifique).

<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)
<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant
Tron Le 30/12/2016 à 20:44 Client-serveur multi-threadé massivement parallèle avec zero copy message passing.
Comme ça.
Carrément.
(cela dit, il faut toujours se méfier des « il ne faut jamais » : si une mauvaise pratique permet de diviser par 10 ton code tout en l'accélérant, peut-être qu'elle n'est pas si mauvaise que ça dans un cas précis ^^)

<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)
<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant
Zeph Le 30/12/2016 à 22:20 Perso je ne vois pas la différence entre une variable globale et un singleton, les conséquences me semblent être les mêmes à tout point de vue. J'aurais tendance à les éviter dès qu'ils exposent un service qui a des effets de bord, pour les raisons de tests que Flan évoque.

All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez
par ici :)
(je voyais un singleton comme une classe qu'on instance généralement une seule fois ; me trompé-je ?)

<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)
<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant
(non, pour moi c'est ça ; par rapport aux variables globales, un singleton avec des getters/setters de singleton est plus puissant, ils peut par exemple inclure des mécanismes de synchronisation pour éviter les race conditions. Et puis du point de vue encapsulation, c'est plus propre aussi.)

—
Zeroblog —
« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » —
Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » —
GT Turbo Zeph Le 30/12/2016 à 22:45 C'est pas seulement ça, si vous parlez du pattern "singleton" ça veut généralement aussi dire que cette classe expose de façon globale (via une méthode statique par exemple) un accesseur qui permet d'obtenir cette instance unique depuis n'importe où, si besoin en l'initialisant. Du coup ça a exactement les mêmes soucis de couplage fort qu'une variable globale et c'est tout autant impossible à injecter pour des tests. À moins de supporter une sorte de "mode test" au niveau du singleton, mais ça ne règle pas le problème de couplage et ça veut aussi dire polluer le code de son singleton à cause des tests donc c'est pas top comme solution.

All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez
par ici :)
Alors quelle solution propre adopter pour le cas de variables assez uniques, genre le handle de la fenêtre principale de ton programme, auquel beaucoup d'endroits du code ont légitimement besoin d'accéder ?
Une variable statique dans un source, avec à côté des fonctions pour l'initialiser et y accéder ? Pour moi c'est pareil, m'enfinça se présente différemment ^^
Zeph Le 30/12/2016 à 23:05 En fait je crois que je ne sais jamais si tu demandes une solution ou un avis. Comme souvent, ici c'est surtout une question de goût, la solution que tu proposes fonctionne et c'en est une parmi plein d'autres ^^ Si tu veux discuter de goûts et de couleur en revanche, moi j'aime bien ce qui est explicite y compris pour les dépendances, donc si une fonction a besoin d'accéder à une variable je lui passe en paramètre. Ça peut vouloir dire que beaucoup de fonctions vont avoir cette variable assez unique dont tu parles comme paramètre, et je trouve que c'est une bonne chose de ne pas le cacher en la remplaçant par une variable globale ou un singleton auquel tout le monde pourra magiquement accéder sans que ça se voit dans les signatures.

All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez
par ici :)