meta données pour cette page
- fr
Répartition des fonctions entre fichiers – Analyse et améliorations
1. Duplications identifiées (historique — corrigées depuis 2.1.5 / v3)
Les sections ci-dessous décrivent d’anciennes duplications déjà résolues. Voir §4 « Plan d’action ». Pour les pistes encore ouvertes en v3, voir CODE_IMPROVEMENTS.md.
1.1 ''getBlocklyMsg'' / ''getBlocklyMsgOr'' ✅
| Fichier | Rôle |
|---|---|
categories/blockly/shared.ts | Source canonique (exportée). |
generators/arduino/configure_standard_blocks.ts | Importe depuis shared. |
generators/arduino/typed_variables_flyout.ts | Importe depuis shared. |
—
1.2 Labels / options de dropdown type variable ✅
| Fichier | Rôle |
|---|---|
categories/blockly/variables.ts | getArduinoTypeLabel, getArduinoTypeDropdownOptions (exportés). |
generators/arduino/configure_standard_blocks.ts | Importe getArduinoTypeDropdownOptions depuis variables.ts. |
—
1.3 Type ''VariableWithMutableType'' ✅
| Fichier | Rôle |
|---|---|
categories/blockly/shared.ts | Type exporté (avec __ucbManualType, etc.). |
generators/arduino/configure_standard_blocks.ts | Import depuis shared. |
—
1.4 Wrapper « set type + manuel » ✅
Helper setVariableTypeAndMarkManual dans shared, utilisé dans configure_standard_blocks et variables_set_type.
—
2. Répartition actuelle – points corrects
block_types.ts: règles de types pures (TYPE_COMPATIBILITY,ARDUINO_TYPE_TO_INTERNAL,getInternalTypeForArduinoType,getCompatibleTypes,isTypeCompatible,getVariableTypeOptions). Pas de Blockly. Documenté dans TYPES_ET_COMPATIBILITES.md.block_types_registry.ts: registre,checkTypeCompatibility(côté Blockly),getCompatibleTypesForCheck, application aux blocs. Utiliseblock_types. Bonne séparation.variable_utils.ts:setVariableType,clearVariableType,normalizeVariableType. Utilisé par shared, variables, logic, configure_standard_blocks, workspace manager. Rôle clair.shared.ts: i18n, inférence de type, helpers variables/blocs, avertissements, validation. Centralise le réutilisable entre categories/blockly. Cohérent.
—
3. Améliorations structurelles optionnelles
3.1 Découpage de ''shared.ts''
shared mêle i18n, inférence de types, handlers de variables, messages d’avertissement, validation. On pourrait extraire :
blockly_i18n.ts(oui18n.tsdans blockly) :getBlocklyMsg,getBlocklyMsgOr→ utilisé partout.type_inference.ts:inferConnectedValueType,normalizeBlocklyTypeToVariableType,getFirstCheckType,inferProcedureCallReturnType.
Intérêt : responsabilités plus nettes. Coût : plus de fichiers et de refactoring. À faire seulement si on prévoit d’enrichir fortement i18n ou inférence.
3.2 ''logic.ts'' (≈ 456 lignes)
Contient switch/case, mutator, applySwitchCaseTyping, tooltips, etc. On pourrait isoler la partie « switch » dans un logic_switch.ts et garder logic.ts pour le reste + orchestration. Optionnel, surtout si on touche souvent au switch.
3.3 ''variables.ts'' (≈ 627 lignes)
Beaucoup de définitions de blocs (get, set, local, const, init, define, set_type). Un découpage en variables_get.ts, variables_set.ts, variables_const.ts, etc. est possible, mais éparpille une logique déjà liée. À considérer seulement si le fichier devient difficile à maintenir.
—
4. Plan d’action proposé
Priorité 1 – Dedup immédiate (impact rapide, peu de risque) ✅ FAIT
getBlocklyMsg/getBlocklyMsgOr
configure_standard_blocksettyped_variables_flyoutimportent depuisshared, suppression des copies locales.
getArduinoTypeLabel/getArduinoTypeDropdownOptions
- Export depuis
variables.ts, réutilisation dansconfigure_standard_blocks, suppression des doublons.
VariableWithMutableType
- Import depuis
shareddansconfigure_standard_blocks, suppression de la définition locale.
Priorité 2 – Centraliser la logique « set type + manuel » ✅ FAIT
- Helper
setVariableTypeAndMarkManual
- Ajout dans
shared(ouvariable_utilsselon choix d’architecture), utilisation dansconfigure_standard_blocksetvariables_set_type.handleVariablesSetChangecontinue d’utilisersetVariableType+__ucbManualType = false(inférence, pas manuel).
Priorité 3 – Optionnel
- Extraction
blockly_i18n/type_inferencesi croissance de ces parties. - Découpage
logic_switch/variables_*si besoin de clarté ou de collaboration sur des zones très ciblées.
—
5. Dépendances actuelles (grosses lignes)
categories/blockly→generators/arduino(shared utilise block_types_registry, variable_utils, debug).generators/arduino→categories/blockly: imports limités et explicites (shared,variables) depuisconfigure_standard_blocksettyped_variables_flyout. Documenté dans ARCHITECTURE.md et README.md.
—
Voir aussi
- ARCHITECTURE.md — organisation du dépôt et scripts npm ;
- TYPES_ET_COMPATIBILITES.md — typage des blocs ;
- CONTRIBUTING.md — guide contributeur.