GLO-4002 - Site du cours 2023

Réusinage : renommer les choses facilement

Contexte

La majorité des développeurs s'entendent pour dire que les deux choses les plus difficiles dans leur travail sont :

  • Invalider une cache
  • Nommer les choses

En ce qui concerne l'invalidation de cache, vous avez encore beaucoup de temps devant vous pour apprendre à développer des bons designs qui vous éviteront l'utilisation des caches ou à les utiliser pour les bonnes raisons...

Pour ce qui en est du nommage, le temps, ni tout l'or du monde, ne sera de votre côté. Certaines choses sont et resteront toujours difficiles. Le mieux que nous puisons faire est d'arriver à un modèle mental partagé (Ubiquitous Language 😉) et même ce modèle sera appelé à évoluer avec notre compréhension du domaine d'affaires.

C'est pour cette raison qu'il est important de développer des bons réflexes avec les outils que nous avons à notre disposition pour faire de cette tâche un automatisme. Bien que cet exercice semble banal, je vous encourage à le faire sérieusement.

Le plus grand piège dans l'acquisition de la connaissance est la double ignorance (ignorer que l'on ignore). Si cet exercice vous apporte quelque chose, c'est super ! Sinon, cela signifie que vous avez déjà un acquis, mais n'oubliez pas que c'est en faisant des gammes que l'on peut distinguer un excellent pianiste d'un bon. Ne tombez pas non plus dans le piège de juger un livre par sa couverture, il s'agit d'une capsule d'introduction, les prochaines à venir seront de plus en plus complexes. Il vaut donc mieux d'avoir des bases solides sur lesquels nous pourrons capitaliser.

Afin de renommer le raccourci sera SHIFT+F6 sur une quelconque occurrence de ce que vous voulez renommer.

Exercices

Pour les exercices suivants, utilisez le code dans le dépôt github officiel-refactoring-extract-method

  1. Téléchargez le dépôt git

  2. Sans utiliser de raccourci clavier,

    1. Renommez la propriété fieldToBeRenamed de la classe ClassNameToBeRenamed pour field.
    2. Renommez la classe ClassNameToBeRenamed pour ClassName.
  3. Lorsque vous serez tanné de cette tâche manuelle, répétitive et enlin-à-l'erreur,

    1. Reprenez l'exercice précédent à l'aide du raccourci clavier.
    2. Remarquez comment l'IDE vous accompagnera dans le processus de réusinage de votre code.
  4. En reprenant le résultat de l'exercice précédent,

    1. Effectuez désormais des recherches dans le fichier pour fieldToBeRenamed et ClassNameToBeRenamed respectivement.

      Indice : CTRL+F

    2. Effectuez désormais les mêmes recherches dans l'ensemble de votre projet.

      Indice : CTRL+SHIFT+F

    3. Avez-vous oublié certaines modifications ? Vous pouvez faire mvn compile pour être sur que le code compile toujours, mais ça n'attrapera nécessairement pas toutes les erreurs!

      Il n'est pas rare lorsqu'on fait du renommage d'oublier des occurrences du nom modifié. Il s'agit d'une bonne pratique de toujours revérifier que l'on n'ait rien oublié même si on se fit à notre IDE pour faire le travail. Une source fréquente de ces oublies sera les commentaires et les "literals".

    4. Revenez au code initial avant vos modifications.

      Indice : CTRL+Z ou git reset

    5. Reprenez vos changements en faisant cette fois attention que les deux indicateurs soient bleus

      rename code only

      rename all

      Indice : Pour ce faire, cliquez sur ceux-ci à l'aide de votre souris, un menu apparaîtra dans lequel vous pourrez cochez pour effectuer le remplacement dans les commentaires et les strings ainsi que le texte.

      enable rename all

    6. Performez à nouveau les validations.

    7. Trouvez-vous toujours des résidus de l'ancien nommage ?

    8. Imaginez l'ampleur des renommages dans un projet mature.

Sommaire

  • Il est difficile de nommer les choses.
  • Il est un peu plus facile de les renommer avec les bons outils.
  • Il est encore plus facile de le faire avec des raccourcis.
  • Il est primordial de valider le résultat de nos changements.
  • Raccourcis :
    • CTRL+F : chercher dans un fichier
    • CTRL+SHIFT+F : chercher dans tous les fichiers
    • CTRL+Z : annuler le dernier changement
    • CTRL+SHIFT+Z : réappliquer le dernier changement
    • SHIFT+F6 : renommer

Solution

Une solution potentielle est donnée dans la branche solution du même dépôt github.