S00E20 - Symfony Clean architecture

  Рет қаралды 13,977

Toham

Toham

4 жыл бұрын

Certain d'entre vous on certainement entre parler de la "Clean Architecture"...et bien nous allons voir ensemble une première approche avec Symfony, rien de très ambitieux mais pour comprendre les concepts de cette architecture tant redoutée.

Пікірлер: 39
@theochampion3012
@theochampion3012 3 жыл бұрын
Tellement intéressant ... Merci !
@Al.Andalouz
@Al.Andalouz 4 жыл бұрын
merci pour cet effort , trés intéressant
@toham
@toham 4 жыл бұрын
On fait ce qu'on peut :) après ça reste difficile d'essayer de vulgariser des termes assez techniques sans perdre l'audience.
@wassimhazime9680
@wassimhazime9680 4 жыл бұрын
Merci beaucoup
@yannickg5788
@yannickg5788 3 жыл бұрын
Sympa comme vidéo ^^
@emilie1977
@emilie1977 3 жыл бұрын
Merci!
@gregquesne1114
@gregquesne1114 3 жыл бұрын
STOOOOOOOP !!!!!!!! On arrête tout, on pose les claviers et on range les doigts dans les poches.... (Alert: Redondance) Thomas, tes vidéos sont super cool même pour moi qui fait du java et pas du php (d'ailleurs merci pour les liens vidéo de wealcome, super intéressant). Mais il faut arrêter mes pauvres vieux neurones ne suivent plus... :( On refait le point, apprenant Java (niveau initié - , la POO, c'est "assimilé" mais le mvc, Spring....pas encore vraiment pencher dessus) super méga intéressé par uml, atdd,bdd, et la clean architecture. Je suis entrain de reprendre à zéro une appli de gestion de comptes bancaire perso, fortement inspiré par un bouquin de cours et exo que j'ai acheté, car la logique métier était bancale (c'est en tapant le forgeron qu'on apprend à éviter les lancer de marteaux)... bref. Donc je voulais tout remettre à plat et "cleanner" tout ca avec des usecase uml (plantuml), et enchaîner avec le gherkin et cuccumber... et là je tombe sur cette vidéo, certes très intéressante mais qui me plombe complètement. Maintenant je sais qu'en dev, je viens à peine de finir de lire la couverture du manuel, mais j'abandonne pas pour autant, mais surtout je voudrais savoir dans quelle direction aller et quel est le bon ordre... architecture avant ou après le bdd ou entre le j2ee.... ma logique me guide vers bdd et atdd en premier, mais est-ce le bon choix? Merci d' apporter ton point de vue Thomas (et les autres aussi, je ne mords pas) et des titres de bouquin a me conseiller ? Vous pouvez à présent reprendre une activité normale. Un deux trois, codez ;)
@toham
@toham 3 жыл бұрын
Salut, j'avais lu ton commentaire mais j'ai tardé à te répondre. Merci pour ton retour. Que tu sois sur J2EE ou PHP ou autre, c'est la même chose, il faut voir en premier : - POO - Design Pattern - SOLID/Demeter/etc - *DD Pour les bouquins, je te fais suivre un lien d'un repo qui liste tous les bouquins orientés craftsman : github.com/Thialala/software-engineering-learning-guide
@hamoudiamel10
@hamoudiamel10 3 жыл бұрын
super tuto
@renaudcr591
@renaudcr591 3 жыл бұрын
Vraiment super vidéos .je viens de trouvez la chaine .les vidéos durent mais j'arrive pas a les quitter . Une petite chose que tu pourrait faire cest de grouper les vidéos de même catégories en playlist :))
@toham
@toham 3 жыл бұрын
C'est plus ou moins le cas, mais étant une tanche question youtube, je vais essayer de réorganiser tout ça quand j'aurais un peu de temps
@aureliendrey6916
@aureliendrey6916 4 жыл бұрын
Encore une super vidéo ! Je les regarde petit à petit :) J'espère que tu verras ce message, mais est-ce que tu pourras un jour faire une vidéo concernant ta configuration sur Linux. Je suis hyper intéressé ! Fan de tips ! Je suis aussi sur une distrib Linux :)
@toham
@toham 4 жыл бұрын
Salut, j'essaierais d'y penser pour voir comment je peux mettre ça en place. Après je n'ai pas de configuration spéciale, juste un environnement sain et fonctionnel.
@nikoumhook
@nikoumhook 3 жыл бұрын
Pour laravel je suis arrivé sur la version 5 mais depuis que j'y suis les façades sont beaucoup moins présente et l'injecteur de dépendance permet d'utiliser des interfaces
@webdev723
@webdev723 3 жыл бұрын
Top.
@locohijo29
@locohijo29 3 жыл бұрын
Hello Thomas, question OS, tu dis que tu dev sur Linux, mais la tu es sur Windows. Comment tu passes de l'un à l'autre? Avec une VM? Merci
@toham
@toham 3 жыл бұрын
J'ai un dual boot.
@igor.mijatovic-runner
@igor.mijatovic-runner 3 жыл бұрын
Merci Thomas pour cette formidable Video. J'ai une petite question... le jour ou on va commencer a inserer data dans la base de données, on aura nos entities dans la domaine/Entity et soit disant on decide d utiliser orm de symfony. Est ce qu on va ecrire les annotation sur les relations directement dans les entities qui se trouvent dans le domaine/Entity classes? Dans ce cas on va utiliser code(annotations) de Framework dans le directory Domain et est ce que ca reste toujours clean archi. Si j ai bien suivis le meme probleme on aura avec validations-annotations et tu aura utiliser dans ce cas asserts package. Je vais bientot commencer a travailler sur les project qui utilisent hexagonal archi et j essaye de me bien preparer 😀, d ou cet question peut etre bette
@toham
@toham 3 жыл бұрын
Salut. Non pas d'annotations dans les entités du domaines. On aura des entités doctrine dans l'infrastructure.
@Venoum45
@Venoum45 3 жыл бұрын
Bonjour Thomas, as-tu mis le code sur un github ? Merci pour la vidéo ;).
@toham
@toham 3 жыл бұрын
Salut,t u peux regarder ici : github.com/TBoileau/code-challenge
@Venoum45
@Venoum45 3 жыл бұрын
Merci bien, entre temps j'ai regardé tes autres vidéos, vraiment très utile pour démarrer la clean archi
@Venoum45
@Venoum45 3 жыл бұрын
Thomas, dans le cas d'un dashboard qui affiche de multiple blocs de notions différentes (ex: 5 dernières vidéos, 5 derniers acteurs, etc.), est-ce qu'il faut faire de multiple use cases ? Un seul use case ? Un seul use case qui appelle différents use cases ? Merci par avance.
@mathieugonthier750
@mathieugonthier750 3 жыл бұрын
Bonjour @@toham , Tout d'abord, je souhaitais grandement te remercier pour cette vidéo et ce repo très inspirants. J'ai cela dit une petite requête d'ordre pratique à te soumettre: serait-ce possible pour toi d'intégrer l'URL de ton repo d'exemple directement dans la description ? En effet, je n'aurais jamais pu mettre les mains dans celui-ci si Sébastien n'avait pas posé la question à ce sujet. :D Pour les gens qui ne lisent pas les commentaires, c'est vraiment dommage. De plus, ça apporterait davantage de visibilité à ton Github de façon plus générale. :P Bonne journée !
@alexandregerault8228
@alexandregerault8228 4 жыл бұрын
Pourquoi ne pas faire une interface `CommandInterface` qui implémente la méthode `execute` ? Ça serait overkill/inutile ? :thinking: Et aussi, plutôt que de découper le code par type de classes (les requêtes ensembles, les réponses ensembles, les dtos ensembles etc), que penses-tu de les regrouper par modules ? Par exemple, ranger tout ce qui touche au forum dans un dossier "forum" (requête, réponses, data transfer obejct etc), tout ce qui touche au chat dans un dossier "chat" etc En tout cas merci beaucoup pour cet exemple d'implémentation de la clean architecture, ça me permet d'y voir plus clair sur un sujet où je ne trouve pas forcément beaucoup de documentation
@toham
@toham 4 жыл бұрын
Ce n'est pas possible car les arguments (la Request et le Presenter) sont différents pour chaque UseCase, et en théorie ce n'est pas grâce car un UseCase est une simple classe de Service qui effectue un traitement, on pourrait avoir les arguments que l'on veut dans la méthode execute. Cependant, on pourrait refactoriser les choses avec plus de recul.
@jdev4u369
@jdev4u369 3 жыл бұрын
Selon moi si ton application est multi-domaine rien ne t'empêche de regrouper les UseCase par sous-domaine métier pour ainsi avoir - des User\UseCase, - des Forum\UseCase, - des Chat\UseCase. Mais le découpage par type de classe devra toujours exister au sein de chaque sous-domaine.
@toham
@toham 3 жыл бұрын
@@jdev4u369 en soit, tu peux avoir le découpage que tu veux, rien de fermer ou de strict, du moment que c'est pertinent en fait
@renarsdilevka6573
@renarsdilevka6573 3 жыл бұрын
Well my friend, if you get your HR person, or manager, or recruitement agency to be conscious what developer they want, then we are fine. Both sides need to work, as a recruiter who you are searching for, and what the other developer is ready to learn. I think better approach would be to do as you feel but explain why it is done in certain way. We are here to learn, and that is what you said, we need to know what is behind Symfony not just copy paste Stack Overflow code without critical thinking. Read it, understand it, learn it. We have a tendency today to want to get things fast and easy. Well, that does not work, because we cannot learn a lot that way. If you are willing to separate concerns because it is flexible, testable, maintainable, why would you change your mind because of junior developers. It is about clean code which will communicate always. I had seen people with 3 years XP even on KZbin, who are so inspired to learn from professionals, so inspired to learn in order to understand why it needs to be a certain way. If we neglect what is said by those who have a lot of XP, we will never learn.
@heniroger4304
@heniroger4304 3 жыл бұрын
Salut @Thomas Boileau , j'aimerais contourner : une entité implemente une interface exterieur de l'hexagone. Exemple : Sur symfony votre Entité User doit implementer le UserInterface ( Symfony\Component\Security\Core\User\UserInterface ) de JWT. Je n'aime pas que ma classe, dans le domaine, implemente cette interface. Comment le contourner. Voici un exemple: final class User implements JWTUserInterface > Je veux que mon architecture ne soit pas pollué par cette interface (comment contourné quand on rencontre la même situation) Vous pouvez voir le code complet sur ce lien github.com/lexik/LexikJWTAuthenticationBundle/blob/master/Resources/doc/8-jwt-user-provider.md
@toham
@toham 3 жыл бұрын
Salut, je t'invite à regarder la vidéo sur le projet Code Challenge (le 2ème ou 3ème épisode) ou je gère cette problématique. Mais pour résumer, je séparer l'entité, la classe User pour la partie sécurité du modèle utilisé dans le domaine
@heniroger4304
@heniroger4304 3 жыл бұрын
@@toham super-merci , je vais y regarder .
@darrhell5222
@darrhell5222 2 жыл бұрын
Un peu déçu en fait ... Au final je trouves que la vidéo est un peu laborieuse a regarder / suivre. Sur 3h il y a à peu près 1h30 de coding / explications - 30 minutes voir plus de résolution de problème car la vidéo n'est pas spécialement préparée et le reste en discussion hors sujet sur Mercury, les annotations et autre. Du coup je ressorts de ces 3 heures un peu pommé parce qu'au final peu d'explications sur ce que tu fais et aussi à une vitesse folle.
@toham
@toham 2 жыл бұрын
Tu sais que c'est une rediffusion ?
@darrhell5222
@darrhell5222 2 жыл бұрын
@@toham oui bien sur mais ma "critique" ne porte pas tant sur le format mais sur le contenu.
@toham
@toham 2 жыл бұрын
@@darrhell5222 C'est pour cela que je parle de "première approche", de base je n'avais pas prévu de coder quoi que ce soit car était prévu plusieurs lives avec un projet exemple nommer "Code challenge" ;)
@trsiel8953
@trsiel8953 Жыл бұрын
Je ne serais pas aussi agressif dans une telle remarque, mais il y a un fond de vérité. Je regarde tes vidéos petit à petit, pour la détente surtout, voir d'autres façons de faire, etc... Aborder le concept de la clean aurait demandé autre chose qu'une ambiance de live où tu es interrompu sans cesse par des questions sans rapport avec le contenu, et donc disperse l'attention de ceux qui regardent. Le concept est déjà assez compliqué à expliquer, encore plus à comprendre vraiment, et une casse-tête à mettre en place pour la première fois afin de ne pas sombrer dans un bordel sans nom. Je me suis surpris à faire des avances rapides bien trop souvent pour pleinement apprécier la vidéo dans ce format rediff de live. Ne le prends pas comme une attaque, tu fais du très bon contenu. Je pense que tu gagnerais en "popularité" si certaines choses sortaient de ce format live, surtout un contenu comme celui-ci. ;)
@trsiel8953
@trsiel8953 Жыл бұрын
@@joand.-immo-notes4309 Depuis quand émettre une critique constructive est un manque de respect ?! 🤔
Clean Architecture IS about Vertical Slicing, actually!
15:24
About Clean Code
Рет қаралды 34 М.
Alex hid in the closet #shorts
00:14
Mihdens
Рет қаралды 18 МЛН
Эффект Карбонаро и нестандартная коробка
01:00
История одного вокалиста
Рет қаралды 10 МЛН
EVOLUTION OF ICE CREAM 😱 #shorts
00:11
Savage Vlogs
Рет қаралды 11 МЛН
"The Life & Death of htmx" by Alexander Petros at Big Sky Dev Con 2024
23:01
Montana Programmers
Рет қаралды 43 М.
Symfony 7 : Permissions avancées avec les Voter
18:13
Grafikart.fr
Рет қаралды 3,7 М.
La Clean Architecture pour devenir un super développeur
24:59
Julien Lucas
Рет қаралды 12 М.
S00E31 - Symfony Création d'une API
3:10:30
Toham
Рет қаралды 15 М.