Last week's finds #28
Saurons-nous faire la différence entre les Data Structures et les classes dans la programmation ? Peut-on utiliser les data structures en programmation orienté objet ? Pourquoi les champs ID ne devrait pas être des champs autoincrémentés ? Et, apprenez à jouer avec toute la puissance de Vim.
Dans cette série, je vous propose de faire un peu de veille ensemble. Le principe est simple, je vous parle de ce qui m'a intéressé dans les 7 jours de veille précédents et je vous mets un lien pour que vous puissiez en profiter aussi.
À l'école on nous apprend qu'il faut toujours un champ ID dans une table pour identifier les entités stockées. Généralement, ce champ est un int
autoincrémenté. Mais, des gens disent qu'une meilleure solution à ce champ autoincrémenté est l'UUID. Pourquoi ? Lisez l'article.
Beaucoup de développeurs PHP utilisent Doctrine en tant qu'ORM pour gérer leur accès sur la base de données. Le comportement par défaut de Doctrine est de retourner le résultat d'une requête sous forme de tableau d'entités. Mais, l’on peut aussi lui demander de nous retourner un tableau de Data Transfer Object lorsque les données que nous souhaitons utiliser ne peuvent pas être populées dans une entité. C'est souvent le cas des requêtes agrégées (GROUP BY
).
En Programmation Orienté Objet (OOP), les objets sont des instances de classes qui représente des choses réelles (une simple abstraction). L'utilisateur ne doit pas savoir ce qu'il se passe à l'intérieur ni même avoir accès aux attributs de cet objet. Il peut "juste" interagir avec l'objet, déclencher une action : c'est ce que l'on appelle l'encapsulation. Les données doivent être cachées et le comportement exposé. Les données ne peuvent pas être séparées du comportement. Il existe aussi les Data Structure qui sont des anti-patterns de l'OOP: des objets (ou structures selon les langages) qui ne contiennent que des données publiques, mais aucun comportement. Elles sont utilisées en programmation procédurale et/ou fonctionnelle. Quelle méthode de développement doit-on choisir ? Je pense personnellement que cela dépend du cas et que les deux peuvent être utilisés ensemble. Par contre, les objets hybrides sont à proscrire absolument ! Cela comprend les objets qui n'expose pas publiquement leurs attributs, mais qui possèdent de "bêtes" geters/setters pour chacun d'eux. Si vous souhaitez approfondir le sujet, je vous conseille chaudement ce merveilleux livre d'Uncle Bob.
Les éditeurs de code léger tel Atom, Sublime Text ou VSCode ont beaucoup bousculé le monde des éditeurs code et des IDEs. Un des gros changement apporté est le multi-curseur. Les gens ont trouvé ça génial. Du coup les autres (IntelliJ IDEA, etc) ont suivi. Des gens ont même écrit des plugins pour ajouter cette fonctionnalité à Vim ! Il ne savait pas que le multi-curseur ne servait à rien dans Vim...