GLO-4002 - Site du cours 2025

Temps estimé: 30 minutes

Exercice « time trial » sur le refactoring (partie 1)

Pourquoi des exercices de type « time trial » ?

Nous avons remarqué que les étudiants comprennent la matière, mais aux examens, le temps passe vite et ils n'arrivent pas à terminer les questions de code. Le problème n'est pas leur compréhension, mais leur vitesse d'exécution. Nous avons donc monté ces exercices pour développer votre capacité à taper du code, refactorer et naviguer dans l'IDE naturellement et rapidement. Chaque exercice a trois objectifs de temps : or, argent et bronze. Le but n'est pas de bâcler le travail pour aller vite, mais de développer les réflexes vous permettant d'écrire du bon code rapidement. Nous allons aussi inclure des raccourcis IntelliJ pratiques qui amélioreront votre productivité en programmation.

Désactivation de Copilot

Pour ces exercices, nous demandons de désactiver GitHub Copilot pour que vous développiez vos propres réflexes de programmation. Quand Copilot suggère du code automatiquement, vous ne développez pas votre mémoire des patterns de base et vous restez dépendant de l'outil. Vous lisez rapidement les propositions et avez tendance à faire confiance à ce qu'il vous suggère sans le remettre en question et nous savons tous qu'il lui arrive très souvent de se tromper. En écrivant le code vous-même, vous mémorisez mieux la syntaxe et vous devenez plus fluide. Taper le code manuellement améliorera votre vitesse de frappe et votre familiarité avec les raccourcis clavier. L'objectif est de créer cette rapidité naturelle qui vous servira aux examens. C'est la différence entre quelqu'un qui hésite à chaque ligne et quelqu'un qui code de façon instinctive.

Voici comment désactiver Copilot dans IntelliJ

  1. Dans IntelliJ, allez dans FileSettings (ou IntelliJPreferences sur macOS)
  2. Recherchez Copilot dans la barre de recherche
  3. Décochez l'option Enable GitHub Copilot
  4. Cliquez sur OK
  5. IntelliJ vous proposera probablement de redémarrer pour appliquer les changements

Exercice de refactoring

Repository

Faire un clone local de ce dépôt Github :

git clone https://github.com/GLO4002UL/officiel-lab-account-billing

Target

  • 🥇 Or: 10 minutes
  • 🥈 Argent: 20 minutes
  • 🥉 Bronze: 30 minutes

L'objectif de cet exercice est d'améliorer votre rapidité à comprendre du code malgré qu'il soit mal structuré et à l'améliorer. Vous devez donc corriger TOUS les problèmes que vous remarquez dans le code. Mettez en application les notions de clean code, les principes SOLID+T et les patterns que vous avez vu jusqu'à présent. Vous avez le droit de modifier toutes les classes et interfaces pour y ajouter des méthodes ou en retirer. Vous pouvez ajouter des implémentations aux interfaces ou créer d'autres interfaces. Bref, vous avez le champ libre!

Raccourcis clavier intéressants et configuration d'IntelliJ

Nous vous conseillons fortement d'essayer tous les raccourcis clavier suivants. Ces raccourcis vous aideront à développer de la rapidité lorsque vous naviguez le code ou lorsque vous en écrivez.

Vous trouverez ci-dessous les raccourcis pour le keymap Windows et pour celui Visual Studio, mais vous n'êtes pas obligés d'utiliser ceux-ci. À vous de voir lequel vous semble le plus intuitif!

Pour voir quel est votre keymap ou le modifier :

  1. Allez dans FileSettings (ou IntelliJPreferences sur macOS)
  2. Cliquez sur Keymap
  3. Sélectionnez le keymap que vous désirez : Visual Studio, Windows ou autre
  4. Cliquez sur OK

Vous pouvez aussi changer le raccourci clavier de toutes les actions à partir de ce menu. Vous pouvez donc créer votre propre keymap custom!

Raccourcis communs au keymap Windows et Visual Studio

  • Ctrl + Shift + /: Permet de commenter ou décommenter un bloc de code sélectionné. Si faites Ctrl + Maj + /, le bloc de code sera commenté. Si vous le faites à nouveau, il sera décommenté.
    • // plus rapide à décommenter par la suite puisqu'il n'y a que 4 caractères à retirer
      /*public void addProduct(Product product) {
      this.products.add(product);
      }*/
  • Clic droit + Refactor: Permet d'afficher le menu refactor qui contient plusieurs autres raccourcis utiles au refactoring.
    • Encapsulate fields: Permet de créer une méthode get et set pour le champ sélectionné.
    • Extract interface: Permet de créer une interface qui sera implémentée par la classe actuelle.
    • Extract superclass: Permet de créer une classe parent et d'en faire hériter la classe actuelle.
    • Pull members up: Permet de déplacer les champs ou méthodes d'une classe enfant vers la classe parent lorsqu'il y a héritage ou de déplacer la définition d'une méthode vers l'interface que la classe implémente.

Raccourcis propres au keymap Windows

  • Shift + F6 : Permet de renommer une classe, une méthode, une variable, etc.
  • Ctrl + F6: Permet de changer la signature d'une méthode.
  • Ctrl + Alt + V (Introduce Variable): Permet d'extraire une expression dans une nouvelle variable.
  • Ctrl + Alt + P (Introduce Parameter): Permet de convertir une variable locale en paramètre de la méthode actuelle.
  • Ctrl + /: Permet de commenter plusieurs lignes de code individuellement (plus utile pour commenter une seule ligne).
    •   //    public void addProduct(Product product) {
        //        this.products.add(product);
        //    }

Raccourcis propres au keymap Visual Studio

  • Ctrl + R + R : Permet de renommer une classe, une méthode, une variable, un fichier, etc.
  • Ctrl + R + S: Permet de changer la signature d'une méthode.
  • Ctrl + R + V (Introduce Variable): Permet d'extraire une expression dans une nouvelle variable.
  • Ctrl + R + P (Introduce Parameter): Permet de convertir une variable locale en paramètre de la méthode actuelle.
  • Ctrl + K + C: Permet de commenter plusieurs lignes de code individuellement (plus utile pour commenter une seule ligne). Petit truc: C for Comment
    • //    public void addProduct(Product product) {
      //        this.products.add(product);
      //    }
  • Ctrl + K + U: Permet de décommenter plusieurs lignes de code. Petit truc: U for Uncomment

Configuration intéressante dans IntelliJ : Action on Save

Deux options intéressantes:

  1. Reformat Code : Ajuste automatiquement la mise en forme de votre code (indentation, espaces, sauts de ligne) selon vos règles de style configurées dans FileSettingsEditorCode Style, sans changer la logique.
  2. Optimize Imports: Nettoie les imports en supprimant ceux inutilisés, en les triant et en les organisant selon vos préférences configurées.

Vous pouvez définir IntelliJ pour qu'il reformatte automatiquement votre code et les imports lors de la sauvegarde. Pour ce faire:

  1. Allez dans FileSettings (ou IntelliJPreferences sur macOS)
  2. Cliquez sur Tools
  3. Sélectionnez Actions on save
  4. Cochez Reformat code et Optimize imports