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.
| 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. |
—
| Fichier | Rôle |
|---|---|
categories/blockly/variables.ts | getArduinoTypeLabel, getArduinoTypeDropdownOptions (exportés). |
generators/arduino/configure_standard_blocks.ts | Importe getArduinoTypeDropdownOptions depuis variables.ts. |
—
| Fichier | Rôle |
|---|---|
categories/blockly/shared.ts | Type exporté (avec __ucbManualType, etc.). |
generators/arduino/configure_standard_blocks.ts | Import depuis shared. |
—
Helper setVariableTypeAndMarkManual dans shared, utilisé dans configure_standard_blocks et variables_set_type.
—
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. Utilise block_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.—
shared mêle i18n, inférence de types, handlers de variables, messages d’avertissement, validation. On pourrait extraire :
blockly_i18n.ts (ou i18n.ts dans 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.
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.
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.
—
getBlocklyMsg / getBlocklyMsgOr configure_standard_blocks et typed_variables_flyout importent depuis shared, suppression des copies locales.getArduinoTypeLabel / getArduinoTypeDropdownOptionsvariables.ts, réutilisation dans configure_standard_blocks, suppression des doublons.VariableWithMutableType shared dans configure_standard_blocks, suppression de la définition locale.setVariableTypeAndMarkManual shared (ou variable_utils selon choix d’architecture), utilisation dans configure_standard_blocks et variables_set_type. handleVariablesSetChange continue d’utiliser setVariableType + __ucbManualType = false (inférence, pas manuel).blockly_i18n / type_inference si croissance de ces parties.logic_switch / variables_* si besoin de clarté ou de collaboration sur des zones très ciblées.—
categories/blockly → generators/arduino (shared utilise block_types_registry, variable_utils, debug). generators/arduino → categories/blockly : imports limités et explicites (shared, variables) depuis configure_standard_blocks et typed_variables_flyout. Documenté dans ARCHITECTURE.md et README.md.—