# Revue - Code > Source : [Confluence EasyWMS France](https://easywmsfrance.atlassian.net/wiki/spaces/EF/pages/3000399822888/Revue+-+Code) > Dernière mise à jour : 08/01/2026 (v10) --- ## 1 - Check-liste des éléments Lien MSS des check-listes à valider pour la revue de code : [Revue Mecalux Espagne](https://msscc.mecalux.com/documentation/Development/master/ES/map_development_concepts/code_review/index.md) ### 1.1 OutboundLines > ⚠️ Attention sur le point suivant concernant les requêtes sur la **writing** : Lorsque vous faites une requête pour récupérer les lignes d'un ordre de sortie, il est très important d'utiliser la propriété **`OutboundLines`** et non **`OutboundOrderLines`**, sinon lorsque vous avez une ligne annulée dans la commande, vous aurez cette erreur dans les logs : ``` Le nombre de ligne d'ordre d'expédition ne peut pas être négatif ``` ### 1.2 Kit sans assemblage ? OutboundOrderOutboundOrderLineDetails Si le projet utilise les **kits sans assemblage**, faire attention à l'utilisation entre `OutboundOrderOutboundOrderLineDetails` et `OutboundLines` : - Dans `OutboundOrderOutboundOrderLineDetails` → vous trouverez **tous les composants** - Dans `OutboundLines` → vous trouverez **uniquement le kit lui-même** ### 1.3 OutboundLine.ProductConversion > ⚠️ Attention sur le point suivant concernant les requêtes sur la **writing** : Dans les lignes des ordres de sortie, l'attribut **`ProductConversion`** peut être `null`. *(Dans le cas où la commande demande un support spécifique, on aura le code support renseigné mais pas l'article, et donc pas sa conversion.)* --- ## 2 - Identification des customs ### 2.1 - Bloc de code / requête Ajouter des commentaires permettant de délimiter le code modifié lorsqu'il se retrouve mélangé avec du code standard : ```csharp potentiel code standard //StartCustom Code custom //EndCustom potentiel code standard ``` ### 2.2 - Identification des éléments custom Chaque nouvel élément ou élément modifié doit être identifié par le préfixe **`CST_`**, en se posant les questions suivantes : | Question | Règle | |----------|-------| | **Est-ce que l'élément est visible par le client ?** | Pas d'ajout de préfixe (ex : les paramètres SmartUI ne prennent pas le préfixe) | | **Est-ce que j'ai la possibilité de modifier le nom de l'élément ?** | Un workflow non en mode "full edition" ne permet pas de modifier le nom des éléments | | **Est-ce qu'il s'agit de l'élément de plus "haut niveau" ?** | Tous les éléments d'un workflow custom ne prendront pas le préfixe — seul le **workflow** sera identifié. Inversement, dans un workflow standard, **tous** les éléments ajoutés/modifiés prennent le préfixe | > ⚠️ **N'oubliez pas !** > - Un dialogue est modifié même si on ne fait que changer l'implémentation de l'activité > - Les **transitions** doivent aussi être identifiées > ⚠️ Lorsqu'un workflow passe de "partial overriden" à "overriden" avec le mode "full edition", on perd l'identification de couleur des activités/transitions modifiées. Il faut alors préfixer **toutes** les activités modifiées par `CST_` (ouvrir le workflow dans sa version précédente en parallèle pour ne rien oublier). --- ## 3 - Nommage des éléments Nomenclature générale de référence : [Nomenclature Espagne](https://msscc.mecalux.com/documentation/Development/master/ES/map_development_concepts/nomenclature/index.md) Règles complémentaires : - Les ressources des **viewfields** d'une vue prennent 2 préfixes suivis du code du viewfield - Ex : viewfield `OutboundOrderStatus` de la vue `OutboundOrderVList` → `ViewField_OutboundOrderVList_OutboundOrderStatus` - Les **paramètres SmartUI** sont plus parlants s'ils sont préfixés du process qu'ils impactent, en majuscules - Ex : `EXPEDITION_ALLOWED_CONTAINER` - Les **attributs** d'un workflow commencent par une **minuscule**, les **paramètres formels** par une **majuscule** - Toutefois, ne pas oublier le préfixe `CST_` devant les attributs dans un workflow standard - Les **paramètres d'un dialogue** commencent par une majuscule - Les **paramètres d'une requête** commencent par une minuscule --- ## 4 - Utilisation du "code en dur" - Dans les workflows, éviter au maximum le code en dur - Notamment, les actions "Enter" et "Escape" après un dialogue devraient être testées avec les variables : - `ProcessContext.EnterAction` - `ProcessContext.EscapeAction` --- ## 5 - Null reference Attention à l'utilisation de code pouvant induire des `NullReferenceException`, particulièrement la méthode `FirstOrDefault()` qui doit être sécurisée : ```csharp // ❌ Dangereux - peut lever une exception si aucun ordre de sortie n'existe Context.OutboundOrders.FirstOrDefault(s => s.Code == outboundOrderCode).OutboundLines // ✅ Sécurisé var order = Context.OutboundOrders.FirstOrDefault(s => s.Code == outboundOrderCode); if (order != null) { ... } ``` Documentation Espagne sur la gestion des null reference : [Lien MSS](https://msscc.mecalux.com/documentation/Development/master/ES/map_application_development/null_management_best_practices/index.md)