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
- Dans IntelliJ, allez dans
File→Settings(ouIntelliJ→Preferencessur macOS) - Recherchez
Copilotdans la barre de recherche - Décochez l'option
Enable GitHub Copilot - Cliquez sur
OK - 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-billingTarget
- 🥇 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 :
- Allez dans
File→Settings(ouIntelliJ→Preferencessur macOS) - Cliquez sur
Keymap - Sélectionnez le keymap que vous désirez :
Visual Studio,Windowsou autre - 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 faitesCtrl + 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:
- 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
File→Settings→Editor→Code Style, sans changer la logique. - 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:
- Allez dans
File→Settings(ouIntelliJ→Preferencessur macOS) - Cliquez sur
Tools - Sélectionnez
Actions on save - Cochez
Reformat codeetOptimize imports