bah si tu aimes être responsable des conneries des autres...
Ce n'est pas être responsable des conneries des autres, juste fournir un service fiable et simple à utiliser1. Tu sais qu'aucun client de classe ne pourra faire autre chose que ce que tu prévois de faire. Le fait de limiter ce que tu expose permet d'avoir une bien meilleure couverture de test et un fonctionnement plus fiable. Imagine sur un programme multitâche, une classe qui possède un tableau, qui l'expose et qui dans l'une de ses méthodes itère sur ce tableau. Cette dernière méthode peut planter à tout moment parce qu'entre deux itérations tu aura quelqu'un d'autre qui aura modifié ce tableau.
J'avais écris un journal qui se rapproche un peu de ça. Le fait d'exposer ton état interne pose les même problèmes que le fait d'utiliser des variables globales ça rend le nombre de branches possible trop grande pour être humainement compréhensible.
De manière un peu moins terre à terre le fait d'encapsuler fortement permet d'écrire des modules et/ou des classes plus autonomes, ton gros programmes deviens un ensemble de sous programmes dont l'interface entre eux est totalement maitrisé (tu connais la liste des méthodes qu'il peut appeler sans avoir à imaginer qu'il fait évoluer tel ou tel partie de ton état interne) et c'est donc bien plus simple à maintenir puisque tu peut tout changer (donc y compris la représentation interne de ton état) sans avoir à toucher aux utilisateurs de ta classe.
C'est clair qu'en mettant tout privé on évite efficacement les bugs.
Ça ne les supprime pas, ça en enlève un certains nombres qui sont potentiellement une plaie à dégager.
D'autre part tu parler de contrainte de type. Je te conseille de regarder ce qui est fait dans les langages fonctionnels ou d'autres comme l'ADA. Dans les quels on peut contraindre les types de manière bien plus forte qu'en python ou C++. C'est enrichissant. Le système de type est un outil du programmeur pas une contraintes (même en python).
1 : l'objectif ce n'est pas de créer le plus grand nombre de pièges possibles en se disant que ceux qui tombe dedans c'est bien fait pour eux, mais au contraire de limiter les erreurs et de les détecter au plus tôt.
Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)
[^] # Re: Framework web
Posté par barmic . En réponse à la dépêche Première beta de POCHE 1.0 disponible. Évalué à 3.
Ce n'est pas être responsable des conneries des autres, juste fournir un service fiable et simple à utiliser1. Tu sais qu'aucun client de classe ne pourra faire autre chose que ce que tu prévois de faire. Le fait de limiter ce que tu expose permet d'avoir une bien meilleure couverture de test et un fonctionnement plus fiable. Imagine sur un programme multitâche, une classe qui possède un tableau, qui l'expose et qui dans l'une de ses méthodes itère sur ce tableau. Cette dernière méthode peut planter à tout moment parce qu'entre deux itérations tu aura quelqu'un d'autre qui aura modifié ce tableau.
J'avais écris un journal qui se rapproche un peu de ça. Le fait d'exposer ton état interne pose les même problèmes que le fait d'utiliser des variables globales ça rend le nombre de branches possible trop grande pour être humainement compréhensible.
De manière un peu moins terre à terre le fait d'encapsuler fortement permet d'écrire des modules et/ou des classes plus autonomes, ton gros programmes deviens un ensemble de sous programmes dont l'interface entre eux est totalement maitrisé (tu connais la liste des méthodes qu'il peut appeler sans avoir à imaginer qu'il fait évoluer tel ou tel partie de ton état interne) et c'est donc bien plus simple à maintenir puisque tu peut tout changer (donc y compris la représentation interne de ton état) sans avoir à toucher aux utilisateurs de ta classe.
Ça ne les supprime pas, ça en enlève un certains nombres qui sont potentiellement une plaie à dégager.
D'autre part tu parler de contrainte de type. Je te conseille de regarder ce qui est fait dans les langages fonctionnels ou d'autres comme l'ADA. Dans les quels on peut contraindre les types de manière bien plus forte qu'en python ou C++. C'est enrichissant. Le système de type est un outil du programmeur pas une contraintes (même en python).
1 : l'objectif ce n'est pas de créer le plus grand nombre de pièges possibles en se disant que ceux qui tombe dedans c'est bien fait pour eux, mais au contraire de limiter les erreurs et de les détecter au plus tôt.
Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)