Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1020 connectés 

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Suivante
Auteur Sujet :

C et C++ : y a un truc dont vous aimeriez parler ?

n°628282
*syl*
--> []
Posté le 02-02-2004 à 09:55:10  profilanswer
 

Reprise du message précédent :

antp a écrit :


 
En tout cas ça a rendu mon code C++ moins pire : je mets moins de C dans mon C++ [:ddr555]

+1
Il m'a montré la voie, merci Taz :)

mood
Publicité
Posté le 02-02-2004 à 09:55:10  profilanswer
 

n°628322
chrisbk
-
Posté le 02-02-2004 à 11:16:03  profilanswer
 

*Syl* a écrit :

+1
Il m'a montré la voie, merci Taz :)


 
Les tenebres se sont déchirés, la lumiere est apparue. Les aveugles se sont mis a voir, et les paralysé a se déplacer. Il touchait le code des plus manants sans honte si gene, et de ses propres main les modelaient pour que jaillisse la Beauté.
"Vade Retro, C coditas" tonna t'il d'une voix forte, et on vit des nuées obscures sortir du sol, comme des milliers d'insectes bourdonnant et grouillant s'elever vers le ciel. "Vade Retro" repeta t-il  en frappant le sol de son baton, provoquant le tonerre. Et les nuées de Cécodus, comme prise d'une immense frayeur, s'envolerent d'un meme mouvement frenetique de peur pour le lointain, et nul ne les revit jamais.
 

n°628354
drasche
Posté le 02-02-2004 à 11:50:56  profilanswer
 

pareil, yavait beaucoup de merde dans ce que j'ai appris à l'école et je suis content d'être passé par ici pour me rendre compte que c'était pas tout à fait ça, donc merci :)


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°628386
kaloskagat​os
Posté le 02-02-2004 à 12:36:53  profilanswer
 

[:al zheimer]  
(drapeau)


---------------
« Le hasard, c’est différent de la chance. Parce que la chance, je n'en ai jamais. »
n°628423
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 02-02-2004 à 13:10:46  profilanswer
 

pareil, dommage que ma boite m'ait viré, parce que mon C++ s'améliorait largement depuis quelques temps, à force de lire les remarques de Taz j'avais fini par me dire que ça ne pouvait pas être inutile :jap:


---------------
J'ai un string dans l'array (Paris Hilton)
n°628427
Taz
bisounours-codeur
Posté le 02-02-2004 à 13:16:33  profilanswer
 

ultra ptdr
merci à tous

n°628441
Spad VIII
Toujours dans les airs...
Posté le 02-02-2004 à 13:28:54  profilanswer
 

Si on revenait aux exceptions?
Car, les utiliser de manière robuste dans l'écriture de tout un logiciel, n'est pas une affaire si évidente qu'il n'y parait.
Et mal utilisées, c'est pire qu'autre chose  :pt1cable: .
 
Qu'elles sont les grandes règles que vous vous définissez pour leur utilisation?
 
On peut cela dit, s'en passer (exemple: KDE, qui a été entièrement écrit en C++ en se passant des exceptions).
 
EDIT: Longue vie à ce topic, j'espère et bravo Taz pour l'initiative!  :jap:


Message édité par Spad VIII le 02-02-2004 à 13:29:44

---------------
[:spad viii] Restons calme!
n°628460
Jubijub
Parce que je le VD bien
Posté le 02-02-2004 à 13:41:34  profilanswer
 

en parlant de ca :  
 
Admettons qu'on aie besoin d'une entrée ayant comme contrainte d'intégrité d'etre positive et inférieure à 10...
 
Vous privilégiez quoi :  
- une boucle while ((x<0) & (x>10)) do
- une exception qui va relancer la méthode ?


---------------
Jubi Photos : Flickr - 500px
n°628469
Taz
bisounours-codeur
Posté le 02-02-2004 à 13:46:13  profilanswer
 

une exception doit rester exceptionnelle. bon pour le cas d'un int, c'est un peu limite, mais je préfèrais quand même une exception à un code retour. mais en fait je comprends pas ton cas. une exception n'est pas une erreur
 
 
while(cin >> i && (i>10 || i<-10)) ?


Message édité par Taz le 02-02-2004 à 13:46:45
n°628474
Spad VIII
Toujours dans les airs...
Posté le 02-02-2004 à 13:48:37  profilanswer
 

Jubijub a écrit :

en parlant de ca :  
 
Admettons qu'on aie besoin d'une entrée ayant comme contrainte d'intégrité d'etre positive et inférieure à 10...
 
Vous privilégiez quoi :  
- une boucle while ((x<0) & (x>10)) do
- une exception qui va relancer la méthode ?


 
Une exception ne doit être lancée qu'en cas d'un évènement qui ne doit pas survenir dans un cas "courant" (d'ou le terme exception, hein!  :D ).
L'utiliser dans d'autres cas est à mon sens une grave erreur, et un risque de complication inutile du code.
 
Bon par contre, si théoriquement, x doit toujours être égale ou inférieur à 10 et positif (d'ailleurs x>10 && x<10  :)  ), et que tu te retrouves un jour avec une valeur différente (lecture d'un fichier corrompue, erreur de saisie etc), il faut étudier si, dans ce cas, l'exception est adapté ou non.
 
Souvent, cela vient d'un bug dans le code; donc il suffit souvent de faire des tests unitaires un peu partout dans ton code avec des assert (par exemple, tu controles la validité des paramètres de fonction dans chaque fonction, en tête).
 
Bref, je pense que j'utiliserai le while, même si je ne vois pas bien le contexte de ton exemple!


---------------
[:spad viii] Restons calme!
mood
Publicité
Posté le 02-02-2004 à 13:48:37  profilanswer
 

n°628478
nraynaud
lol
Posté le 02-02-2004 à 13:51:09  profilanswer
 

Jubijub a écrit :

en parlant de ca :  
 
Admettons qu'on aie besoin d'une entrée ayant comme contrainte d'intégrité d'etre positive et inférieure à 10...
 
Vous privilégiez quoi :  
- une boucle while ((x<0) & (x>10)) do
- une exception qui va relancer la méthode ?

"de base", les exceptions ne sont pas là pour vérifier une entrée utilisateur. Mais dans le cadre de la vérification d'entrée utilisateur, on peut trouver des exception, mais de façon secondaire.
 
c'est assez fin comme point.
 
Les méthodes qui parlent d'entrée utilisateur, n'auront pas le droit de lever une exception si l'entrée est erronée, on considère çq comme normal qu'un utilisateur se trompe, mais, une fonction de parsing de caractères peut lever une exception (si elle n'est pas vouée à l'échec, comme par exemple une fonction pour convertir une chaine en nombre), elle ne sait pas qu'elle traite quelquechose de l'utilisateur, il faut donc attraper l'exception, et la convertir en quelquechose de "normal".


---------------
trainoo.com, c'est fini
n°628487
nraynaud
lol
Posté le 02-02-2004 à 13:55:16  profilanswer
 

Spad VIII a écrit :


Souvent, cela vient d'un bug dans le code; donc il suffit souvent de faire des tests unitaires un peu partout dans ton code avec des assert (par exemple, tu controles la validité des paramètres de fonction dans chaque fonction, en tête).

Où places-tu la frontière entre exception et assertion ?


---------------
trainoo.com, c'est fini
n°628488
Taz
bisounours-codeur
Posté le 02-02-2004 à 13:56:34  profilanswer
 

python

Code :
  1. try:
  2.    assert 0
  3. except AssertionError, e:
  4.    print e


 
tu disais ?

n°628489
chrisbk
-
Posté le 02-02-2004 à 13:57:27  profilanswer
 

C malin de nous parler de python dans un topic C++ quand meme

n°628490
Spad VIII
Toujours dans les airs...
Posté le 02-02-2004 à 13:57:52  profilanswer
 

La gestion des erreurs, restera de toute manière, un des points le plus complexe.
Il faut, dans l'équipe de développement, des méthodes strictes sur la manière de gérer les erreurs dans les diverses parties du logiciel. Ceci afin:
* d'Eviter d'avoir des messages d'erreurs inadapté pour une erreur donnée
* D'avoir des messages d'erreur redondant: "Le fichier ne peut pas être ouvert, car le fichier ne peut pas être ouvert"  Très util, comme message. Mais pourtant, on peut facilement arriver à ce genre de problème.
* Eviter que la gestion des erreurs ne devienne un cauchemard
* Eviter d'avoir 15 boite de dialogue qui s'ouvrent quand une erreur survient.
* ...
 
Dans ma précedente société, on a considérablement amélioré la consistance des messags d'erreur, leur qualité et leur pertinance (et même la stabilité du soft), en faisant un petit effort pour se donner des règles précise de codage à ce niveau.
 
Bref, toujours pensé aux méthodes que l'on va utiliser avant de commencer à coder un logiciel.


---------------
[:spad viii] Restons calme!
n°628492
Jubijub
Parce que je le VD bien
Posté le 02-02-2004 à 13:59:28  profilanswer
 

ok...


---------------
Jubi Photos : Flickr - 500px
n°628494
Taz
bisounours-codeur
Posté le 02-02-2004 à 13:59:54  profilanswer
 

chrisbk a écrit :

C malin de nous parler de python dans un topic C++ quand meme

toutes façons, je pensais pas « venez parler de C ou de C++ » mais je voyais plutot un appel à sujet « comment on se sert de longjmp », « comment on fait un itérateur », etc

n°628495
Spad VIII
Toujours dans les airs...
Posté le 02-02-2004 à 14:01:12  profilanswer
 

nraynaud a écrit :

Où places-tu la frontière entre exception et assertion ?


 
Une assertion ne sert qu'au debug, pour t'assurer que ton code est correcte, ou pour te prévenir plus rapidement si ton code possède un bug (on peut gagner un temps fou, en plaçant des assert judicieux un peu partout, en évitant par exemple la propagation de paramètres érronnées, ou de données corrompues).
 
Il ne faut bien évidemment (sauf cas exceptionnel, mais sans exception!  :D ), utiliser un assert (ou un VERIFY MFC) pour controler la valeur de retour d'une fonction, si une erreur de cette fonction peut survenir une fois le logiciel déploiyé.
Les assert ne marchent qu'en debug, et ne sont la que pour ça!
 
L'assertion est pour permettre à ton soft de réagir correctement en situation réèlle quand il rencontre une situation inatendue.


---------------
[:spad viii] Restons calme!
n°628500
nraynaud
lol
Posté le 02-02-2004 à 14:05:28  profilanswer
 

taz a écrit :

python

Code :
  1. try:
  2.    assert 0
  3. except AssertionError, e:
  4.    print e


 
tu disais ?

ouaa, il existe donc des langages dans le monde qui mappent les assertions sur des exceptions ? spaaaaavréééééééé !
 
 
 
Juste pour ceux qui ne le savaient pas, le règle d'or est qu'on ne rattrappe _jammais_ une assertion pour autre chose que pour l'afficher. Et surtout pas pour continuer silencieusement.
 
Mais la différence est sémantique, une exception est un cas rare d'erreur prévu, une assertion est un bug. Bien entendu, une exception qu'on a pas prévue est aussi un bug (sauf dans le cas où on suppose que l'utilisateur sait lire une exception, particulièrement dans le domaine scientifique).


---------------
trainoo.com, c'est fini
n°628504
antp
Super Administrateur
Champion des excuses bidons
Posté le 02-02-2004 à 14:11:45  profilanswer
 

taz a écrit :

python

Code :
  1. try:
  2.    assert 0
  3. except AssertionError, e:
  4.    print e


 
tu disais ?


 
en Delphi ça marche aussi :o

Code :
  1. try
  2.     Assert(False);
  3.   except
  4.     on e: EAssertionFailed do
  5.       Label1.Caption := e.Message;
  6.   end;


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°628505
Taz
bisounours-codeur
Posté le 02-02-2004 à 14:13:35  profilanswer
 

-------------> recentrage du sujet <-------------

n°628517
antp
Super Administrateur
Champion des excuses bidons
Posté le 02-02-2004 à 14:18:20  profilanswer
 

taz a écrit :

-------------> recentrage du sujet <-------------


 
tu peux parler de python mais quand je parle de Delphi c'est pas bon :o
 
[:neowen]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°628518
nraynaud
lol
Posté le 02-02-2004 à 14:18:24  profilanswer
 

Spad VIII a écrit :

Une assertion ne sert qu'au debug

ça sert en test. Ceci-dit, un certain nombre de projets sont livrés avec les assertions, la présence d'un bug étant pouvant être dramatique (en particulier pour les gros projet avec BDD, un bug pouvant polluer la BDD, ou encore quand la sécurité des personnes est en jeu). C'est dans ce cas que mapper les assertions sur les exceptions est pratique.


---------------
trainoo.com, c'est fini
n°628520
nraynaud
lol
Posté le 02-02-2004 à 14:18:45  profilanswer
 

antp a écrit :


 
en Delphi ça marche aussi :o

Code :
  1. try
  2.     Assert(False);
  3.   except
  4.     on e: EAssertionFailed do
  5.       Label1.Caption := e.Message;
  6.   end;



Heu si vous faites la liste, vous avez pas fini les cocos.
 
Par contre, montrer ce genre de conneries à des débutants, je suis pas sûr que ce soit très fin.


---------------
trainoo.com, c'est fini
n°628555
Jubijub
Parce que je le VD bien
Posté le 02-02-2004 à 14:29:37  profilanswer
 

je ferme les yeux ;)
 
de tt façon je sais même pas ce que c'est une assertion en prog...c faire le forcing d'une valeur apparement non ?


---------------
Jubi Photos : Flickr - 500px
n°628557
chrisbk
-
Posté le 02-02-2004 à 14:30:32  profilanswer
 

Jubijub a écrit :

je ferme les yeux ;)
 
de tt façon je sais même pas ce que c'est une assertion en prog...c faire le forcing d'une valeur apparement non ?


 
Non c'est verifier une condition et exploser si la condition est fausse

n°628560
Taz
bisounours-codeur
Posté le 02-02-2004 à 14:31:46  profilanswer
 

je fermais juste la )

n°628620
blackgodde​ss
vive le troll !
Posté le 02-02-2004 à 15:45:41  profilanswer
 

une petite chose dont j'aimerais bien parler ... ce n'est pas vraiment une question, c'est plutot un tutorial (peut-etre idiot ...)
 
serait-ce possible de donner des exemples documentés de l'implémentation de stream ?
 
j'ai regardé l'implémentation des fstream ou des stringstream dans mes lib mais j'ai enormement de mal a relire ...
 
puis chez boost je n'est que vu null_stream qui n'est pas d'un interet magnifique :p


Message édité par blackgoddess le 02-02-2004 à 15:48:35

---------------
-( BlackGoddess )-
n°628621
Taz
bisounours-codeur
Posté le 02-02-2004 à 15:48:20  profilanswer
 

euh, ouaip, mais ça va être vraiment très long, y a des bouquins entiers concernant cette partie de STL... et l'implémentation est assez spécifique, en comprendre l'interface (et les streambuf) serait déjà pas mal

n°628626
blackgodde​ss
vive le troll !
Posté le 02-02-2004 à 15:50:21  profilanswer
 

bin p-e un tuto sur la compréhension (en profondeur) de l'interface alors, par exemple a quoi sert une streambuf ? me semble avoir compris que c'est le buffer a partir duquel sont lu ou ecrit les flux de données, mais tout cela me parait encore flou ...


---------------
-( BlackGoddess )-
n°628634
Taz
bisounours-codeur
Posté le 02-02-2004 à 15:52:43  profilanswer
 

ok, bah j'y réfléchirais, mais ça sera ètre progressif. je repartirais de la copie de fichier que j'ai montré y a quelques jours et je développerais un peu : on bricolera un petit istreambuf  sur le concept source-puit, genre un streambuf rot13

n°628638
blackgodde​ss
vive le troll !
Posté le 02-02-2004 à 15:56:31  profilanswer
 

bien, super :) merci par avance :jap:


---------------
-( BlackGoddess )-
n°628742
Spad VIII
Toujours dans les airs...
Posté le 02-02-2004 à 17:44:01  profilanswer
 

Sinon, pour trouver ces renseignements, faut aller voir sur l'excellent bouquin en HTML "Thinking in C++" :
 
http://www.mindview.net/Books/TICP [...] CPP2e.html


---------------
[:spad viii] Restons calme!
n°628759
Jubijub
Parce que je le VD bien
Posté le 02-02-2004 à 18:19:54  profilanswer
 

c une bete eckel qd même...


---------------
Jubi Photos : Flickr - 500px
n°628780
chrisbk
-
Posté le 02-02-2004 à 19:06:46  profilanswer
 

Jubijub a écrit :

c une bete eckel qd même...


 
eckel bete cet eckel

n°628816
R3g
fonctionnaire certifié ITIL
Posté le 02-02-2004 à 20:12:06  profilanswer
 

Jubijub a écrit :

c bete un teckel qd même...

je ne te la fais pas dire.

n°628956
Spad VIII
Toujours dans les airs...
Posté le 02-02-2004 à 22:02:24  profilanswer
 

Et sinon, y'a aussi: "Mieux Programmer en C++" chez Eyrolles; c'est pas pour faire de la pub, j'ai pas d'actions chez Eyrolles, mais c'est vraiment un petit bouquin intéressant. On se demande si on est développeur pro quand on le lit la 1ère fois. La honte...  :whistle:


---------------
[:spad viii] Restons calme!
n°628980
schnapsman​n
Zaford Beeblefect
Posté le 02-02-2004 à 22:10:58  profilanswer
 

Spad VIII a écrit :

On se demande si on est développeur pro quand on le lit la 1ère fois. La honte...  :whistle:  


 
Moi non [:cupra]


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
n°643169
el muchach​o
Comfortably Numb
Posté le 15-02-2004 à 13:15:22  profilanswer
 

Spad VIII a écrit :

La gestion des erreurs, restera de toute manière, un des points le plus complexe.
Il faut, dans l'équipe de développement, des méthodes strictes sur la manière de gérer les erreurs dans les diverses parties du logiciel. Ceci afin:
* d'Eviter d'avoir des messages d'erreurs inadapté pour une erreur donnée
* D'avoir des messages d'erreur redondant: "Le fichier ne peut pas être ouvert, car le fichier ne peut pas être ouvert"  Très util, comme message. Mais pourtant, on peut facilement arriver à ce genre de problème.
* Eviter que la gestion des erreurs ne devienne un cauchemard
* Eviter d'avoir 15 boite de dialogue qui s'ouvrent quand une erreur survient.
* ...
 
Dans ma précedente société, on a considérablement amélioré la consistance des messags d'erreur, leur qualité et leur pertinance (et même la stabilité du soft), en faisant un petit effort pour se donner des règles précise de codage à ce niveau.
 
Bref, toujours pensé aux méthodes que l'on va utiliser avant de commencer à coder un logiciel.


 
 
Absolument. Mon expérience rejoint la tienne sur ce sujet : dans un projet industriel un taant soit peu sérieux, la gestion d'erreur DOIT faire partie de la conception. Si un plan de conception ne se penche pas sur la gestion des erreurs (exceptions, traces, signaux, etc), on peut dire que le travail est incomplet, voire faux, car sur certains systèmes, la gestion d'erreurs peut amener à revoir complètement la gestion des messages, qui est toujours un point délicat.
 
Après, le choix d'utiliser des valeurs de retour ou des exceptions est à la discrétion du chef technique. D'un coté, les valeurs de retour doivent être toutes testées, ce qui fait une surcharge de travail absolument considérable, sans parler de l'impact sur les performances, de l'autre, les exceptions sont parfois délicates à utiliser et nécessitent un apprentissage et une vision plus globale du système par les développeurs, vision qu'ils n'ont pas toujours dans un gros système. Personnellement, ayant eu à développer avec les deux systèmes, je préfère de loin les exceptions pour une raison : la paresse du développeur. Certaines valeurs de retour sont souvent ignorées, et c'est pratiquement ce qu'il y a de pire. J'ai vu du code où lorsque des valeurs passées en entrée d'une fonction étaient incorrectes, (un pointeur nul par ex.), la fonction ne faisait rien d'autre qu'un return; ne signalant même pas qu'il y avait une erreur.  
Quand cette pratique est généralisée, le soft non seulement ne marche pas, mais il devient infernal à déboguer car l'endroit où il plante est tellement éloigné de la cause de l'erreur que tracer l'erreur à la source devient une véritable gageure.
 
Quelque soit le choix, l'erreur à ne pas commettre est d'utiliser les deux systèmes à la fois : ça doit être une règle de développement et tout le monde doit s'y tenir. L'utilisation des valeurs de retour ET des exceptions  à la discrétion du développeur est la garantie d'un code spaghetti et peu robuste dans les cas exceptionnels. J'ai vu récemment un code où quand une fonction levait une exception, le catch mettait un booléen à false, et un peu plus loin, la valeur du booléen était testée pour lever une autre exception...
 
En ce qui concerne les exceptions, mon avis est qu'il faut se tenir à ce pourquoi ils ont été créés : gérer les cas d'erreur. Utiliser les exceptions pour le contrôle de flux dans le cas général est amha une très mauvaise idée en général, et fort peu pratique avec le debogueur, qui s'arrête à chaque fois dans le cas autoroute.
 
Enfin, en ce qui concerne les assertions, sujet sur lequel chacun a sa petite idée. La mienne est que les assertions et les exceptions n'ont pas la même utilité et que les deux doivent être utilisés simultanément. Simplement, les assertions ne partent pas chez le client, ils ne servent qu'en interne à l'équipe de dev, au débogage (systématiquement en pré/post conditions, par ex.). Par conséquent, ils ne peuvent remplacer les exceptions en cas d'erreur. D'un autre coté, on peut en mettre un peu partout dans le code, même à l'intérieur des boucles.


Message édité par el muchacho le 15-02-2004 à 13:27:47
n°650928
Spad VIII
Toujours dans les airs...
Posté le 22-02-2004 à 12:54:43  profilanswer
 

el muchacho a écrit :


 
Enfin, en ce qui concerne les assertions, sujet sur lequel chacun a sa petite idée. La mienne est que les assertions et les exceptions n'ont pas la même utilité et que les deux doivent être utilisés simultanément. Simplement, les assertions ne partent pas chez le client, ils ne servent qu'en interne à l'équipe de dev, au débogage (systématiquement en pré/post conditions, par ex.). Par conséquent, ils ne peuvent remplacer les exceptions en cas d'erreur. D'un autre coté, on peut en mettre un peu partout dans le code, même à l'intérieur des boucles.


 
J'ai l'habitude d'en mettre partout des assert, pour controler la validité de paramètres divers, qui doivent, et c'est ce qu'il faut bien comprendre, forcemment être bon dans la release du logiciel, peu importe la situation.
En d'autre terme, si ces paramètres ne sont pas correcte, c'est qu'il y a un bug dans le logiciel; ce n'est pas une erreur de saisie de l'utilisateur, ou un fichier corrompu ou quelque chose d'autre qui ne doit pas être controlé par un assert mais par exeception ou code de retour.
 
Avec cette habitude, on est plus tranquil quand on doit apporter des modifications au logiciel. Si une fois modifié, on n'a aucun assert quand on est en debug, c'est qu'il y a de fortes chances (plus ou moins fortes suivant la pertinance des tests assert) que les modifications n'ont pas eu d'effet de bord.
Ces méthodes m'ont déjà fait gagner un temps fou, même si 99% des assert que j'ai mis ne m'ont jamais servi.


---------------
[:spad viii] Restons calme!
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Suivante

Aller à :
Ajouter une réponse
 

Sujets relatifs
Truc tout conTruc tout bête listes les fichiers d'un dossier
encore et encore du code pour la maitrise du trucAimeriez-vous que syl soit TT&Ban de cette section ?
Aimeriez-vous qu'os2 soit TT&Ban de cette section ?[ALGO] Un truc à Arbre
Mon hébergeur utilise PHPSuExec mais je ne comprend rien à ce truc.Access, besoin d'aide assez urgent, truc de base
Transformer [=?windows-1258?Q?S=E9bastien? =] en un truc francais[CSS] Heritage ou un truc dans le genre... :D
Plus de sujets relatifs à : C et C++ : y a un truc dont vous aimeriez parler ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR