Slide 1

Slide 1 text

@dwursteisen #DevoxxFR #CodeReview Stratégie de mise en place de revue de code

Slide 2

Slide 2 text

@dwursteisen #DevoxxFR #CodeReview #DevoxxFR #CodeReview

Slide 3

Slide 3 text

@dwursteisen #DevoxxFR #CodeReview DEI Formation Consultant

Slide 4

Slide 4 text

@dwursteisen #DevoxxFR #CodeReview

Slide 5

Slide 5 text

@dwursteisen #DevoxxFR #CodeReview Cécile Jean-rené Xavier Ezequiel

Slide 6

Slide 6 text

@dwursteisen #DevoxxFR #CodeReview Cécile Jean-rené Xavier Ezequiel

Slide 7

Slide 7 text

@dwursteisen #DevoxxFR #CodeReview Moons Air Rail Ferry Car

Slide 8

Slide 8 text

@dwursteisen #DevoxxFR #CodeReview Moons Air Car Rail Ferry

Slide 9

Slide 9 text

@dwursteisen #DevoxxFR #CodeReview

Slide 10

Slide 10 text

@dwursteisen #DevoxxFR #CodeReview Moons Air Car Rail Ferry

Slide 11

Slide 11 text

@dwursteisen #DevoxxFR #CodeReview Moons Air Car Rail Ferry

Slide 12

Slide 12 text

@dwursteisen #DevoxxFR #CodeReview Moons Air Car Rail Ferry

Slide 13

Slide 13 text

@dwursteisen #DevoxxFR #CodeReview Moons Air Car Rail Ferry

Slide 14

Slide 14 text

@dwursteisen #DevoxxFR #CodeReview Moons Air Car Rail Ferry

Slide 15

Slide 15 text

@dwursteisen #DevoxxFR #CodeReview Mais qu’est-ce que c’est que CE CODE ?

Slide 16

Slide 16 text

@dwursteisen #DevoxxFR #CodeReview if ("Settings".equals(method)) { Settings request = exchange.getIn().getBody(Settings.class); for (Element settingElement : request.elements()) { if (!users.contains(settingElement.getUsername())) { badUsers.add(settingElement.getUsername()); } } }

Slide 17

Slide 17 text

@dwursteisen #DevoxxFR #CodeReview if ("Settings".equals(method)) { Settings request = exchange.getIn().getBody(Settings.class); for (Element settingElement : request.elements()) { if (!users.contains(settingElement.getUsername())) { badUsers.add(settingElement.getUsername()); } } }

Slide 18

Slide 18 text

@dwursteisen #DevoxxFR #CodeReview if (!"Settings".equals(method)) { return; } Settings request = exchange.getIn().getBody(Settings.class); for (Element settingElement : request.elements()) { if (!users.contains(settingElement.getUsername())) { badUsers.add(settingElement.getUsername()); } }

Slide 19

Slide 19 text

@dwursteisen #DevoxxFR #CodeReview LOG.warn(new StringBuilder("No user found").toString());

Slide 20

Slide 20 text

@dwursteisen #DevoxxFR #CodeReview LOG.warn(new StringBuilder("No user found").toString()); Fausse optimisation

Slide 21

Slide 21 text

@dwursteisen #DevoxxFR #CodeReview private static final TO_BE_REPLACED = new char[] { '_', ','; '-'}; public static String normalize(final String string) { if (string == null) { return null; } String normalizedString = string; for (char charToReplace : TO_BE_REPLACED) { normalizedString = normalizedString.replace(charToReplace, ' '); } return normalizedString.trim(); }

Slide 22

Slide 22 text

@dwursteisen #DevoxxFR #CodeReview private static final TO_BE_REPLACED = new char[] { '_', ','; '-'}; public static String normalize(final String string) { if (string == null) { return null; } String normalizedString = string; for (char charToReplace : TO_BE_REPLACED) { normalizedString = normalizedString.replace(charToReplace, ' '); } return normalizedString.trim(); } Remplace des caractères spéciaux par des espaces

Slide 23

Slide 23 text

@dwursteisen #DevoxxFR #CodeReview private static final String PATTERN = "[_,-]"; public static String trimSpecialCharacters(final String string) { if (string == null) { return null; } return StringUtils.trim(string.replaceAll(PATTERN, " ")); }

Slide 24

Slide 24 text

@dwursteisen #DevoxxFR #CodeReview private static final String PATTERN = "[_,-]"; public static String trimSpecialCharacters(final String string) { if (string == null) { return null; } return StringUtils.trim(string.replaceAll(PATTERN, " ")); } Remplace (également) des caractères spéciaux par des espaces

Slide 25

Slide 25 text

@dwursteisen #DevoxxFR #CodeReview + - ↗ ?

Slide 26

Slide 26 text

@dwursteisen #DevoxxFR #CodeReview + - ↗ ? Qualité du code !

Slide 27

Slide 27 text

@dwursteisen #DevoxxFR #CodeReview + - ↗ ? Qualité du code ! revue de code ?

Slide 28

Slide 28 text

@dwursteisen #DevoxxFR #CodeReview mise en place de revue de code systématique

Slide 29

Slide 29 text

@dwursteisen #DevoxxFR #CodeReview A Faire En cours Implémentée Terminée MNS- 456 MNS-135 MNS- 265

Slide 30

Slide 30 text

@dwursteisen #DevoxxFR #CodeReview A Faire En cours Implémentée Terminée MNS- 456 MNS-135 MNS- 265

Slide 31

Slide 31 text

@dwursteisen #DevoxxFR #CodeReview A Faire En cours Implémentée Terminée MNS- 456 MNS-135 MNS- 265

Slide 32

Slide 32 text

@dwursteisen #DevoxxFR #CodeReview A Faire En cours Implémentée Terminée MNS- 456 MNS-135 MNS- 265

Slide 33

Slide 33 text

@dwursteisen #DevoxxFR #CodeReview A Faire En cours Implémentée Terminée MNS- 456 MNS-135 MNS- 265

Slide 34

Slide 34 text

@dwursteisen #DevoxxFR #CodeReview AUCUNE tâche n’a été passée en REVUE DE CODE

Slide 35

Slide 35 text

@dwursteisen #DevoxxFR #CodeReview + - ↗ ?

Slide 36

Slide 36 text

@dwursteisen #DevoxxFR #CodeReview + - ↗ ? revue de code !

Slide 37

Slide 37 text

@dwursteisen #DevoxxFR #CodeReview mise en place de revue de code quand c’est nécessaire

Slide 38

Slide 38 text

@dwursteisen #DevoxxFR #CodeReview A Faire En cours Implémentée Terminée MNS- 456 MNS-135 MNS- 265

Slide 39

Slide 39 text

@dwursteisen #DevoxxFR #CodeReview A Faire En cours Implémentée Terminée MNS- 456 MNS-135 MNS- 265

Slide 40

Slide 40 text

@dwursteisen #DevoxxFR #CodeReview A Faire En cours Implémentée Terminée MNS- 456 MNS-135 MNS- 265

Slide 41

Slide 41 text

@dwursteisen #DevoxxFR #CodeReview A Faire En cours Implémentée Terminée MNS- 456 MNS-135 MNS- 265

Slide 42

Slide 42 text

@dwursteisen #DevoxxFR #CodeReview A Faire En cours Implémentée Terminée MNS- 456 MNS-135 MNS- 265

Slide 43

Slide 43 text

@dwursteisen #DevoxxFR #CodeReview (toujours) AUCUNE tâche n’a été passée en REVUE DE CODE

Slide 44

Slide 44 text

@dwursteisen #DevoxxFR #CodeReview Code review

Slide 45

Slide 45 text

@dwursteisen #DevoxxFR #CodeReview A Faire En cours Implémentée Terminée MNS- 456 MNS-135 MNS- 265 Code review

Slide 46

Slide 46 text

@dwursteisen #DevoxxFR #CodeReview A Faire En cours Implémentée Terminée MNS- 456 MNS-135 MNS- 265 Code review Code review

Slide 47

Slide 47 text

@dwursteisen #DevoxxFR #CodeReview A Faire En cours Implémentée Terminée MNS- 456 MNS-135 MNS- 265 Code review Code review

Slide 48

Slide 48 text

@dwursteisen #DevoxxFR #CodeReview A Faire En cours Implémentée Terminée MNS- 456 MNS-135 MNS- 265 Code review Code review

Slide 49

Slide 49 text

@dwursteisen #DevoxxFR #CodeReview A Faire En cours Implémentée Terminée MNS- 456 MNS-135 MNS- 265 Code review Code review

Slide 50

Slide 50 text

@dwursteisen #DevoxxFR #CodeReview A Faire En cours Implémentée Terminée MNS- 456 MNS-135 MNS- 265 Code review Code review

Slide 51

Slide 51 text

@dwursteisen #DevoxxFR #CodeReview A Faire En cours Implémentée Terminée MNS- 456 MNS-135 MNS- 265 Code review Code review

Slide 52

Slide 52 text

@dwursteisen #DevoxxFR #CodeReview A Faire En cours Implémentée Terminée MNS- 456 MNS-135 MNS- 265 Code review Code review Revue de code nécessaire

Slide 53

Slide 53 text

@dwursteisen #DevoxxFR #CodeReview A Faire En cours Implémentée Terminée MNS- 456 MNS-135 MNS- 265 Code review Code review

Slide 54

Slide 54 text

@dwursteisen #DevoxxFR #CodeReview Comment est faîte une revue de code ?

Slide 55

Slide 55 text

@dwursteisen #DevoxxFR #CodeReview To: [email protected] Subject : Revue de code MNS-435 Salut ! J’ai regardé le code de la tâche MNS-435. Mes retours : Dans la class BookManagerAugmented, je pense que la variable toto, ligne 42 n’est pas très bien nommé. if (toto == null) { return false; } Que penses-tu de changer son nom par tata plutôt ? C’est mieux non ?

Slide 56

Slide 56 text

@dwursteisen #DevoxxFR #CodeReview To: [email protected] Subject : Revue de code MNS-435 Salut ! J’ai regardé le code de la tâche MNS-435. Mes retours : Dans la class BookManagerAugmented, je pense que la variable toto, ligne 42 n’est pas très bien nommé. if (toto == null) { return false; } Que penses-tu de changer son nom par tata plutôt ? C’est mieux non ? Mauvaise Idée

Slide 57

Slide 57 text

@dwursteisen #DevoxxFR #CodeReview

Slide 58

Slide 58 text

@dwursteisen #DevoxxFR #CodeReview Code

Slide 59

Slide 59 text

@dwursteisen #DevoxxFR #CodeReview Commentaires

Slide 60

Slide 60 text

@dwursteisen #DevoxxFR #CodeReview if (s == null) { return false; }

Slide 61

Slide 61 text

@dwursteisen #DevoxxFR #CodeReview if (s == null) { return false; }

Slide 62

Slide 62 text

@dwursteisen #DevoxxFR #CodeReview if (s == null) { return false; }

Slide 63

Slide 63 text

@dwursteisen #DevoxxFR #CodeReview if (s != null) { return true; }

Slide 64

Slide 64 text

@dwursteisen #DevoxxFR #CodeReview Quels impacts sur le code ?

Slide 65

Slide 65 text

@dwursteisen #DevoxxFR #CodeReview if(Integer.ZERO.equals(amount)) { StringBuilder sb = new StringBuilder(); sb.append("Deal ID is").append(id) .append(" and deal amount is ").append(amount) .append(". "); LOGGER.error(sb.toString()); throw new ValidationException("Price error. Check the price"); }

Slide 66

Slide 66 text

@dwursteisen #DevoxxFR #CodeReview if(Integer.ZERO.equals(amount)) { StringBuilder sb = new StringBuilder(); sb.append("Deal ID is").append(id) .append(" and deal amount is ").append(amount) .append(". "); LOGGER.error(sb.toString()); throw new ValidationException("Price error. Check the price"); }

Slide 67

Slide 67 text

@dwursteisen #DevoxxFR #CodeReview if(Integer.ZERO.equals(amount)) { LOGGER.error("Deal ID is" + id + " and deal amount is " + amount + ". "); throw new ValidationException("Price error. Check the price"); }

Slide 68

Slide 68 text

@dwursteisen #DevoxxFR #CodeReview if(Integer.ZERO.equals(amount)) { LOGGER.error("Deal ID is {} and deal amount is {}. ", id, amount); throw new ValidationException("Price error. Check the price"); }

Slide 69

Slide 69 text

@dwursteisen #DevoxxFR #CodeReview if(Integer.ZERO.equals(amount)) { LOGGER.error("Deal ID is {} and deal amount is {}. ", id, amount); throw new ValidationException("Price error. Check the price"); }

Slide 70

Slide 70 text

@dwursteisen #DevoxxFR #CodeReview if(Integer.ZERO.equals(amount)) { LOGGER.warn("Deal ID is {} and deal amount is {}. ", id, amount); throw new ValidationException("Price error. Check the price"); }

Slide 71

Slide 71 text

@dwursteisen #DevoxxFR #CodeReview Quels impacts sur l’équipe ?

Slide 72

Slide 72 text

@dwursteisen #DevoxxFR #CodeReview

Slide 73

Slide 73 text

@dwursteisen #DevoxxFR #CodeReview Binômage

Slide 74

Slide 74 text

@dwursteisen #DevoxxFR #CodeReview aujourd’hui ?

Slide 75

Slide 75 text

@dwursteisen #DevoxxFR #CodeReview Il faut porter attention à ce que cette pratique ne se dissipe pas

Slide 76

Slide 76 text

@dwursteisen #DevoxxFR #CodeReview Questions ? (je suis là pour y répondre)