Citation:
Envoyé par
germinolegrand
Le comportement interne de ma classe ne regarde certainement pas l'utilisateur... S'il est nécessaire de trier pour sélectionner, c'est le créateur que ça regarde, certainement pas l'utilisateur, et dans ce cas ma fonction s'appelle select() ^^
Tout dépend de la manière dont l'utilisateur a utilisé la classe, et surtout, comment il a pu utiliser les objets que la classe expose.
Et ca regarde surtout l'utilisateur de la classe si la fonction en vient à invalider certains de ces objets (ou plutot certains pointeurs / références sur ces dernier)
Citation:
Si le créateur souhaite ajouter stuffOne() à l'interface publique de sa classe, c'est qu'il en a plusieurs fois l'utilité, et qu'il doit par conséquent bien factoriser son contenu en créant stuffOne().
Mais qu'est ce qui l'empêche de factoriser directement ce comportement :question:
Au contraire, il a tout à gagner à le faire dans le sens où c'est comme avec le sel en cuisine : il est toujours plus facile de rajouter quelque chose que de le retirer ;)
Citation:
Tant que l'état de l'objet est cohérent avec l'utilisation qu'en a eu l'utilisateur, alors la classe a parfaitement rempli son rôle, qu'importe la tête du code.
Cela se discute très fort.
Bien sur, l'état de l'objet se doit de rester cohérent, mais l'idée est aussi de permettre une évolution vers une utilisation qui n'avait pas forcément été prévue au départ.
Et s'il faut en arriver passer des heures à refactoriser quelque chose, c'est du temps perdu bêtement ;)
Citation:
Deuxièmement, j'ai l'impression à vous entendre que lire et comprendre du code comportant plus que des appels à des fonctions est chose impossible... pourquoi ? Vous codez si mal que ça que c'en est illisible ??? J'en doute. Un code bien écrit se lit comme du français... ou plutôt de l'anglais :mouarf: .
Selon moi, la difficulté de "comprendre" le code d'une fonction évolue de manière exponentielle par rapport au nombre d'instructions qu'elle contient.
En gardant (au besoin un grand nombre) des petites fonctions simple, on s'évite bien des soucis ;)
Citation:
Troisièmement, un couper-collé ça vous parait long comme temps de refactorisation ???
Quand tu te souviens encore du code parce que tu viens de l'écrire, cela peut effectivement se résumer à cela..
Mais, quand c'est un code que tu as eu le temps d'oublier, parce que tu t'es occupé d'autre chose, ou pire, quand c'est un code que tu n'as pas écrit toi-même, ce n'est pas aussi évident que cela.
Citation:
Ce n'est pas parce que ma fonction n'est pas découpée en sous-fonctions qu'elle doit être codée salement. On déclare ses objets dans l'ordre et on exploite le RAII.
... Et l'on passe un temps bête à repérer les différentes étapes qui auraient pu être factorisées directement, ou à se demander ce qu'il faudra transmettre en argument pour refactoriser la fonction
Citation:
Pourquoi ? Si on arrive à écrire 2000 lignes d'affilée sans faire de répétition (ce dont je doute très fortement), je n'ai qu'à poser des breakpoints le long de ces lignes de code de la même façon que je les aurais disposées à l'entrée de sous-fonctions, puisque de toute façon qu'on fasse des sous-fonctions ou non, le code est linéaire et les sous-fonctions ne seraient appelées qu'une seule fois.
Si ce n'est, encore une fois, que, tout comme il est plus facile de lire du texte s'il est correctement divisé en paragraphe, il sera beaucoup plus facile de lire le code s'il est correctement divisé en fonction simples et concises ;)
Citation:
Ce jour là je pleurerai certainement. Devoir répéter un type autant de fois qu'on a de variables de ce type et qui se rapportent à un même problème est juste... révulsant.
Mais cela t'assure au moins de n'être pas dans une position où tu te demandes d'où vient une variable parce qu'elle est noyée entre une multitude d'autres ;)
Citation:
En effet, en déclarant des variables de la sorte, on indique ainsi clairement notre volonté d'avoir le même type pour un ensemble de variable, ici r,g,b,a si je me souvient bien. Comme d'habitude, on est gagnant si l'on souhaite faire du changement de type, il n'y a qu'un seul mot à changer (cf tous les avantages de la méta-programmation, vais pas faire un laïus dessus :P).
Un bien faible avantage en comparaison des risques encourus ;)