Code Reviews - Seniors: Difference between revisions
From My Limbic Wiki
No edit summary |
|||
(One intermediate revision by the same user not shown) | |||
Line 1: | Line 1: | ||
=Best Practices= | =Best Practices= | ||
* Pas de camel case dans les noms des controllers | * Pas de camel case dans les noms des controllers | ||
* High coesion / Lose coupling | * '''High coesion / Lose coupling''' | ||
* Monolith First ==> puis division en API | * Monolith First ==> puis division en API | ||
* Controller | * '''Controller''' | ||
** prend le nom de la ressource controllee | |||
** '''Controller + exception handler''' (retourne HTTP request aussi) '''+ mapper''' = '''facade''' | |||
* Name conventions: @Getmapping("list") pour retourner une liste d'events | * Name conventions: @Getmapping("list") pour retourner une liste d'events | ||
* @Autowired ==> private final ==> cree par le class Loader | * '''@Autowired ==> private final ==> cree par le class Loader''' | ||
* | * '''DTO''' = Ce qui va etre transfere au client | ||
* Domain ou Model = objet en base de donnees | * Domain ou Model = objet en base de donnees | ||
* Flux ==> exemple Uber | * Flux ==> exemple Uber | ||
* Cloner les objets lorsque possible | * '''Cloner les objets''' lorsque possible | ||
* utiliser le + possible de static ==> optimise la gestion de la memoire | * utiliser le + possible de static ==> optimise la gestion de la memoire | ||
Line 20: | Line 21: | ||
==Compare== | ==Compare== | ||
* Comparer @PathParameters vs @ModelAttribute | * Comparer '''@PathParameters''' vs '''@ModelAttribute''' | ||
Dans la couche du rest: | Dans la couche du rest: | ||
Line 27: | Line 28: | ||
==Coding For Interfaces== | ==Coding For Interfaces== | ||
Recommande de faire des interfaces + implémentations car: | Recommande de faire des interfaces + implémentations car: | ||
- Si pas d'interface, utilise CGLib | - '''Si pas d'interface, utilise CGLib''' | ||
- Quand utilisation interface : AspectG ==> Plus rapide | - Quand utilisation interface : '''AspectG ==> Plus rapide''' | ||
==> Donc implementer interface pour cette raison + meilleurs contrats | ==> Donc implementer interface pour cette raison + meilleurs contrats | ||
Latest revision as of 23:00, 2 December 2019
Best Practices
- Pas de camel case dans les noms des controllers
- High coesion / Lose coupling
- Monolith First ==> puis division en API
- Controller
- prend le nom de la ressource controllee
- Controller + exception handler (retourne HTTP request aussi) + mapper = facade
- Name conventions: @Getmapping("list") pour retourner une liste d'events
- @Autowired ==> private final ==> cree par le class Loader
- DTO = Ce qui va etre transfere au client
- Domain ou Model = objet en base de donnees
- Flux ==> exemple Uber
- Cloner les objets lorsque possible
- utiliser le + possible de static ==> optimise la gestion de la memoire
- valeur commune aux instances
- valeur constance
Documentation
- Methodes publiques ==> creation javadoc
Compare
- Comparer @PathParameters vs @ModelAttribute
Dans la couche du rest: - La couche du REST a la responsabilite de verifier les attributs manquants et/ou mal envoyes, avant de transmettre les informations aux services.
Coding For Interfaces
Recommande de faire des interfaces + implémentations car: - Si pas d'interface, utilise CGLib - Quand utilisation interface : AspectG ==> Plus rapide ==> Donc implementer interface pour cette raison + meilleurs contrats
Principles
Principes "Has A" vs "Is A" ==> composition plutot que hierarchie
IDE
IDE : Ajouter final dans tous les paramètres - Principe d’immutabilité