Dans mon jeu de Dotclear version namespace, j'avance sur plusieurs chantiers en même temps, histoire que ce soit moins rébarbatif. Je n'ai toujours pas fini le typage des méthodes mais ça avance bien et je vais bientôt pouvoir faire une deuxième passe pour modifier, uniformiser, simplifier ces types. Par contre j'ai passé la semaine sur deux autres (voir trois) modifications que je voulais apporter avec comme résultat un échec total.
- Je n'arrive pas modifier, le lancement de l'application, et l'accès au singleton, je lance trop de classe et fonction pour lancer le core, ça ne me plait pas, mais impossible de simplifier.
- Je n'arrive pas à faire une jolie classe de container qui puisse rendre toujours le bon type sur ses propriétés. Je pense qu'il faut que je pousse un peu plus, voir élargir le champs du Curseur.
- Et toujours en fil rouge, je n'arrive pas à simplifier les Modules (plugin, et thème), sur ce point j'attend un peu que le reste avance pour pouvoir envahir Dotclear avec des tas de plugins et constater la charge.
1 De Franck -
Pour le 1, est-ce que c'est gênant question perfs de lancer trop de classes/méthodes ?
Pour le 2, j'ai du mal à saisir le souci, explique !
2 De Jean-Christian Paul Denis -
Pour le 2, à force de lire des commentaires à droite à gauche, j'ai vue que les
et qu'il fallait autant que possible faire des classes plus parlantes avec des méthodes plus explicites quand à ce qu'on demande.En gros, avoir
$user->getFirstname()
plutôt que$res[user][user_firstname];
et ça permet au passage d'être certain d'avoir un type "string" en retour. (ça porte diffèrents noms comme Container, Mapper, Resolver)Un des endroits ou je souhaiterais utiliser ceci est sur les résultats d'enregistrement ou les mises à jour de base de données. Le truc c'est que Dotclear a déjà les classes Cursor et $rs->extend() ça va devenir lourd si j'y ajoute encore une couche...
3 De Franck -
Ah oui je vois ; cela dit, dire que les array c'est le mal faut pas pousser, c'est rudement pratique dans plein de cas :-p
Sinon va falloir passer à des langages plus fortement typés comme le C++ ou le Python, cela dit ça serait cool, on pourrait faire de la surcharge et du polymorphisme :-)
Un petit trigger warning — qui vaut ce qu'il vaut, hein ? — : attention à ne pas rendre le développement par autrui (dev plugins, …) trop abscons à force d'abstractions. Je suis avec application ton dépôt et j'avoue avoir déjà du mal à retrouver mes petits, alors un tiers :-)
Cela dit j'attends de voir à quoi ressembleront les plugins compatibles avec la v3 pour juger :-p
4 De Jean-Christian Paul Denis -
Effectivement le plus dur est de garder l'aspect compréhension/lisibilité facile de Dotclear actuel. C'est pour ça que je n'ai pas trop poussé le truc pour l'instant n'ayant pas trouvé le bon compromis. Pour ce qui est des plugins tiers, je ai juste testé car ça bouge encore pas mal, mais je suis persuadé que ça sera plus facile ;)
PS: Je tâtonne est le seul vrai exemple (user) que j'ai testé pour les array ne vaut pas le coup en terme de quantité de code vs bénéfice sérénité 😋