Table des matières

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

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 :

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

  1. getBlocklyMsg / getBlocklyMsgOr
  1. getArduinoTypeLabel / getArduinoTypeDropdownOptions
  1. VariableWithMutableType

Priorité 2 – Centraliser la logique « set type + manuel » ✅ FAIT

  1. Helper setVariableTypeAndMarkManual

Priorité 3 – Optionnel

  1. Extraction blockly_i18n / type_inference si croissance de ces parties.
  2. 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)

Voir aussi