GLO-4002 - Site du cours 2025

Temps estimé: 30 minutes

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

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: 20 minutes
  • 🥈 Argent: 25 minutes
  • 🥉 Bronze: 30 minutes

L'objectif de cet exercice est de tester votre implémentation de l'exercice de refactor officiel-lab-account-billing. Prenez l'occasion pour remettre en question votre solution et possiblement l'améliorer. L'écriture de tests unitaires permet souvent de mettre en lumière des problèmes de design. Par exemple:

  • Si vous êtes incapables de mocker un comportement
    • Vous faites probablement un new directement dans la classe et peut-être qu'il serait préférable de recevoir la classe en paramètre à la méthode ou en paramètre du constructeur de la classe testée.
  • Si vous avez une longue liste de mock à configurer dans votre classe de setup
    • C'est peut-être un signe que votre classe a trop de responsabilités
  • Si vous avez un mock qui retourne un mock qui retourne un mock qui retourne un mock
    • Vous avez fort probablement un problème de Tell Don't Ask

Utilisation de Mockito

// Pour définir un Mock, vous devez utiliser l'attribut `@Mock` de Mockito au-dessus de la propriété et ajouter
// @ExtendsWith au-dessus de votre classe.
@ExtendWith(MockitoExtension.class)
public class MyTestClass {
    @Mock
    Order order;
}

// Configuration d'un mock pour que sa méthode retourne une valeur spécifique.
given(orderRepository.findById(anyString())).willReturn(order);

// Vérification qu'une méthode du mock a été appelée avec une valeur spécifique.
verify(orderRepository).findById(order.id);

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 + Click : Permet de voir le contenu d'une classe
  • Alt + Enter : Permet d'afficher les suggestions de corrections rapides. Vous pouvez ensuite faire Enter à nouveau pour sélectionner la première suggestion. Il est très utile pour les imports manquants.
  • Ctrl + F : Permet de chercher du texte dans le fichier actuel
  • Ctrl + Shift + F : Permet de chercher du texte dans l'entièreté du projet
  • Shift + Shift: Permet de chercher n'importe quoi dans IntelliJ : fichier, classe, setting, méthode, variable, etc.

Raccourcis propres au keymap Windows

  • Ctrl + N : Permet de trouver une classe
  • Ctrl + Shift + T : Lorsqu'on se trouve dans un test, permet de se rendre à la méthode visée par le test. À l'inverse, si on se trouve dans une méthode, permet de se rendre à la classe de test
  • Ctrl + Alt + M: Permet d'extraire les lignes de code sélectionnées dans une méthode (utile pour isoler le code répétitif des tests dans une méthode setup)

Raccourcis propres au keymap Visual Studio

  • Ctrl + T : Permet de trouver une classe
  • Ctrl + R + M: Permet d'extraire les lignes de code sélectionnées dans une méthode (utile pour isoler le code répétitif des tests dans une méthode setup)