Ecrit par Nathanael Cherrier

Last week's finds #28

Publié dans , ,

Partagez l'article

twitter facebook

Saurons-nous faire la différence entre les Data Structures et les classes dans la programation ? Peut-on utiliser les data structures en programmation orienté objet ? Pourquoi les champs ID ne devrait pas être des champs auto-incré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.

A l'école on nous apprend qu'il faut toujours un champs ID dans une table pour identifier les entités stockées. Généralement, ce champ est un int auto-incrémenté. Mais des gens disent qu'une meilleure solution à ce champ auto-incrémenté est l'UUID. Pourquoi ? Lisez l'article.

Beaucoups de développeurs PHP utilisent Doctrine en tant qu'ORM pour gérer leur access 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éels (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" intéragir 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 languages) qui ne contiennent que des données publiques mais aucun comportement. Elles sont utilisées en programation procédurale et/ou fonctionnelle. Quelle methode 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 leur 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 suivit. Des gens ont même écrit des plugins pour ajouter cette fonctionnalité à Vim ! Il ne savait pas que le multicurseur ne servait à rien dans Vim...

Si vous avez des questions ou des remarques/conseils, n'hésitez pas à m'envoyer un tweet! Et si vous aimez l'article, n'oubliez pas de le partager avec vos amis.