Comment DoYouBuzz a réécrit son code sans tout casser

  • Faire une refonte graduelle

Ajout d’une couche d’ORM

Cette première phase a débuté en 2011 et nous a notamment permis d’ajouter une couche d’ORM (ce qui va faire le lien entre les objets PHP et la base de données). Nous sommes passés de ADODB (qui utilise un design pattern en Active Record) à Doctrine2 (qui est lui en design pattern Data Mapper), et nous avons longtemps fait cohabiter les deux (c’est d’ailleurs toujours le cas !).

/*
 * @Entity
 * @Table(name="users")
*/
class User extends TURB_Object {    ..........}
// à l'ancienne :
$user->save();// ou façon Doctrine :
$em->persist($user);

Nouveau moteur de template

Un webdesigner / intégrateur découvre l’héritage.

Changement de framework

En 2012, nous avons pris la décision de changer de framework. Jusqu’alors, nous étions sur Turbulences, un framework mort né au nom prémonitoire…

Les tests unitaires et fonctionnels

Le code avant.

Que dire sur le test unitaire ? Ne pas en avoir, surtout sur un projet complexe, c’est suicidaire !

Cela permet de répérer les bugs avant qu’il ne soient en prod (vérifier réguliérement). Par ailleurs, vous enlevez le stress de casser quelque chose, quelque part en modifiant une ligne de code.

Refonte de l’éditeur de CV

A partir de mai 2013 a débuté un gros chantier, car oui, même si on a pu faire évoluer par petites touches l’application, il a fallu se retrousser les manches et rentrer dans le tas pour refaire l’éditeur de CV.

Côté serveur

A partir de ce moment, Symfony2 est devenu notre framework par défaut. Bienvenue aux listener, injection de dépendances, bundles, routes, la console en ligne de commande… avec toujours quelques parties sur l’ancien framework (au moment du lancement de la V2 l’achat des comptes Premium ou la gestion des nom de domaine était toujours celle de la V1 par exemple).

try {
    $this->dispatcher->dispatch(KernelEvents::REQUEST, $event);
} catch (NotFoundHttpException $e) {
   \TURB_Dispatcher::dispatch();
}

Coté navigateur

La partie la plus visible est évidemment le changement de design et la partie javascript qui, elle, est passée d’un jQuery qui manipule le DOM à un vrai framework MVC : Angular.

Finies les infos stockées dans le HTML et nous voilà donc avec un vrai modèle de données coté front.

Thomas a très bien détaillé les changements dans sa conférence donnée au Dev Fest nantais que vous pouvez retrouver en vidéo ci-dessous (ou en slides). Pour résumer : c’est un gros plus pour la partie front pour ce qui est de la maintenabilité et la flexibilité apportée.

Passage de JQuery à AngularJS

La mise en ligne de la V2

En mars 2014 la nouvelle version de DoYouBuzz est lancée. Pendant le développement, nous avions volontairement évité toute migration importante de base données (nous avions ajouté quelques champs et nous nous étions limités à des petites changements : il n’y a par exemple aucune nouvelle table ajoutée).

Et depuis cette V2 ?

Nous avons depuis continué la migration de l’ancien vers le nouveau code, toujours en profitant de nouvelles fonctionnalités pour nous attaquer à une partie du code.

DoYouBuzz Open

(In|em)bed with DoYouBuzz: the journey of a few tech-lovers trying to be useful with awesome apps & services.

    Eric Cambray

    Written by

    Webmaster & président @Metalorgie , Directeur Technique @doyoubuzz_fr En gros en hastag : #geek #music #unicellulaire

    DoYouBuzz Open

    (In|em)bed with DoYouBuzz: the journey of a few tech-lovers trying to be useful with awesome apps & services.