Le coin des artisans

Petit moteur de blog.

  • Avatar de Seb7
    Membre depuis :
    21/02/2014
    Messages :
    17

    Hello les laraveliens !

    Dans mon aventure de découverte de Laravel, j'ai décidé de coder un petit blog (puisque j'en avait besoin).

    J'ai donc initié un projet pour créer ce moteur de blog.
    C'est un très bon prétexte pour apprendre a utiliser laravel, améliorer ses compétences de codage (et d'utilisation de github au passage).

    Le projet est encore au stade beta. Il y a pas mal de choses à faire, des bugs à débusquer, des choses à améliorer (plein en fait).

    Les seuls contraintes que je me suis fixé son celle ci :

    • Performance : mise en cache systématique des contenus générés en front.
    • Simplicité : - un seul administrateur (pas de systeme de connexion externe ou gestion des roles)
    • Facilité du déploiement : doit pouvoir fonctionner avec une base sqlite (mais rien n'empêche d'en utiliser une autre, je souhaite juste que ça reste compatible sqlite).

    Le projet est ici : https://github.com/SebSept/onemorelaravelblog

    Ne soyez pas timide (soyez juste polis ;), expérimenté ou débutant, n'hésitez pas, c'est juste pour apprendre.

    Je demande une seule chose, ne refusez pas d’échanger a propos de votre code, c'est un projet concret, certes mais aussi destiné à dompter laravel, donc l'échange est le bienvenu.

    En espérant que ça intéressera au moins une personne ...

  • Avatar de JulienTant
    Membre depuis :
    26/03/2013
    Messages :
    465

    Salut,

    Je fais une review de code rapidement, afin de te donner des conseils et surtout car j'aime voir comment les gens abordent les projets :)

    Les remarques que je vais faire ne sont pas nécessairement négative, je fais juste une comparaison avec ce que j'aurais moi même probablement réalisé.

    1. Je vois que tu as délaissé les contrôleurs pour placer ton dispatching de logique dans le fichier de routes. Pour ma part, les seules fois où je met du code dans une route, c'est quand je dois servir une page statique. Pourquoi avoir procédé ainsi ? Mon avis est que la lisibilité en prend un sacré coup, car il y a trop de code dans un seul fichier.

    2. J'apprécie les découpages que tu as pu faire au niveau de tes modèles. Cependant, je trouve cela un peu chaud d'avoir dans un même dossier :

      • Des Factory
      • Des repositories
      • Des entités
        Une solutions pourrait être de partir dans un dossier Blog avec un namespace du même nom, et de ranger par "type" tes classes. Donc un sous dossier Post, un sous dossier Blog, Comment... etc. Avec composer & les normes PSR-0 ou PSR-4, tu as l'occasion d'organiser ton code et dans le même temps d'avoir un chargement automatique de tes classes à la demande. Que demande le peuple ? :)
    3. J'aime beaucoup l'idée du filtre pour genérer le cache de la homepage.

    4. Dernier petit point de ma visite rapide, dommage que BlogCacheManager n'ai que des méthodes statiques. Tu aurais pu en faire une classe "normale", et en faire une façade !

      Voilà, globalement c'est plutôt très bien, c'est une belle initiative et je te souhaite bonne continuation sur le projet ! :-)

  • Avatar de Seb7
    Membre depuis :
    21/02/2014
    Messages :
    17

    :) super, merci pour ton retour, merci d avoir passé du temps à lire mon code.

    Je reviendrai en détail sur ton message plus tard.

    Et encore merci :)

  • Avatar de Seb7
    Membre depuis :
    21/02/2014
    Messages :
    17

    AoSiX :Salut,

    Les remarques que je vais faire ne sont pas nécessairement négative, je fais juste une comparaison avec ce que j'aurais moi même probablement réalisé.

    Biensur, mieux vaut s'abstenir que de commenter dans un esprit négatif. Je vais pas me vexer, je suis positif aussi ;)

    AoSiX :

    1. Je vois que tu as délaissé les contrôleurs pour placer ton dispatching de logique dans le fichier de routes. Pour ma part, les seules fois où je met du code dans une route, c'est quand je dois servir une page statique. Pourquoi avoir procédé ainsi ? Mon avis est que la lisibilité en prend un sacré coup, car il y a trop de code dans un seul fichier.

    C'est la seconde fois que je fais du MVC sans controlleur. J'expérimente. ça m'a surpris que laravel permette de faire sans controlleur. Je me suis dit que j'allais tenter le coup sans controlleur.
    J'ai pas de recul sur la lisibilité du code de route.php .
    J'ai aussi jugé le code trop long et j'ai alors groupé des routes (admin / front) (puis par entité comment/post dans le groupe admin).
    Ça m'a semblait clarifier assez les choses. Mais j'entend bien ta remarque, justifiée. C'est noté, mais pas prioritaire.

    AoSiX :

    1. J'apprécie les découpages que tu as pu faire au niveau de tes modèles. Cependant, je trouve cela un peu chaud d'avoir dans un même dossier :
      • Des Factory
      • Des repositories
      • Des entités
        Une solutions pourrait être de partir dans un dossier Blog avec un namespace du même nom, et de ranger par "type" tes classes. Donc un sous dossier Post, un sous dossier Blog, Comment... etc. Avec composer & les normes PSR-0 ou PSR-4, tu as l'occasion d'organiser ton code et dans le même temps d'avoir un chargement automatique de tes classes à la demande. Que demande le peuple ? :)

    Tout à fait d'accord, c'est d'ailleurs dans les issues.
    Pour la petite histoire, comme j'implémentai le Repository design patern pour la première fois (idem pour la factory), j'ai choisi de tout mettre au meme niveau. Ça va être dans le choses que je vais faire prochainement, je ne voulais pas réfléchir a trop de choses en même temps, je vais bientot pouvoir, merci pour le conseil d'organisation.

    AoSiX :

    1. J'aime beaucoup l'idée du filtre pour genérer le cache de la homepage.

    et le cache de chaque billet/post et des posts filtrés par tag ;)
    ça m'a semblé un bonne solution. Yii propose ça nativement, l'idée m'avait paru bizzare la première fois mais en fait ça parait malin.
    (Il faudra d'aileurs que j'aille voir comment c'est exactement implémenté dans yii pour améliorer ce CacheManager qui ne me satisfait pas vraiment)

    AoSiX :

    1. Dernier petit point de ma visite rapide, dommage que BlogCacheManager n'ai que des méthodes statiques. Tu aurais pu en faire une classe "normale", et en faire une façade !

    Faut que j'étudie encore les Facades et les service provider mais effectivement, ce composant aurait plus sa place a ce niveau, remarque pertinente!

    AoSiX :
    Voilà, globalement c'est plutôt très bien, c'est une belle initiative et je te souhaite bonne continuation sur le projet ! :-)

    Merci bien, je profite de mes soirées libres pour améliorer mes compétences, j'adore apprendre a coder mieux :)

    Au passage,
    Je me rend compte que ce qui me dérangeait dans laravel dans un premier temps, la possibilité de faire la même chose de plusieurs façons, dans plusieurs fichiers, etc, sans que personne puisse me dire "la bonne pratique est celle-ci", "ce fichier doit être là et pas ailleurs" m'amène finalement a avoir une vraie réflexion au niveau de l'architecture et pas a bêtement respecter une norme.

    Encore merci de ton code review, tu ne t'en rend pas forcement compte mais ça me sera bien utile :)

  • Avatar de JulienTant
    Membre depuis :
    26/03/2013
    Messages :
    465

    Le partage et les experiences sont la clé de la progression !

    Il n'y a pas de vérité absolue, à chaque projet sa dimension et ses problématiques :)

    N'hésites pas à repasser de temps en temps présenter ton avancé sur ce projet !

  • Avatar de Seb7
    Membre depuis :
    21/02/2014
    Messages :
    17

    Ouaip, et bien je repasserai alors.
    D'ici la je compte solliciter http://codereview.stackexchange.com/ quànd j aurais avancé un peu ...
    +

Vous ne pouvez pas répondre à ce sujet.