Catégories
Uncategorized

[code] Liste des imports v2

Oui, je suis du genre à imagi­ner le langage avec la syntaxe parfaite. Je me demande si la majo­rité des déve­lop­peurs avec un peu d’ex­pé­rience ne sont pas comme ça en fait.

Je me suis remis à Ruby après un moment en Javas­cript et je confirme mon impres­sion précé­dente : Je veux des imports expli­cites en début de fichier pour chaque chose que j’uti­lise et qui est défini en dehors, pas d’es­pace de nom global créé par ailleurs.

J’ai repris mes anciennes notes et voilà où j’en suis :


L’im­port se fait par défaut par rapport à la racine du projet/paquet courant.

import MonComposant
import Module/SousModule/MonComposant

Même chose pour les imports rela­tifs, pour peu qu’ils commencent par un point. Oui, ce sont des chemins mais je tiens à ce que les déli­mi­teurs soient facul­ta­tifs (qui s’amuse à mettre autre chose que de l’al­pha­nu­mé­rique dans ses chemins internes ?)

import ./Module/SousModule/MonComposant
import ../Module/SousModule/MonComposant

Les paquets externes (gem, npm, packa­gist, cpan…) sont réfé­ren­cés par une arobase, et une table de corres­pon­dance à la racine du projet/paquet courant :


import @Paquet
import @Paquet/Module/SousModule/MonComposant

L’im­port utilise par défaut la dernière partie de la chaîne d’im­port comme nom local (on évite l’obli­ga­tion de se répé­ter qu’on trouve dans trop de lignes d’im­port Javas­cript).

Pour éviter les conflits de nom et faci­li­ter des noms plus adap­tés au code local, on ajoute des alias :

import MonComposant as AliasLocal
import Module/SousModule/MonComposant as AliasLocal

import @Paquet as AliasLocal
import @Paquet/Module/MonComposant as AliasLocal

J’aime bien les exports nommés de Javas­cript, qu’un point d’en­trée puisse réfé­ren­cer plusieurs compo­sants.

Je récu­père ici la syntaxe Python qui permet de toujours placer l’ori­gine en première posi­tion. Ça se discute, on pour­rait aussi le faire dans l’autre sens.

from Module/SousModule import MonComposant
from ./Module import MonComposant
from @Paquet/Module import MonComposant

from Module import Composant1, Composant2
from Module import Composant1, Composant2 as MonAlias

Quitte à faire des alias, c’est bien de pouvoir récu­pé­rer une méthode ou un sous objet sans qu’il n’y ait d’ex­port nommé.

C’est toujours la dernière partie de ce qui est importé qui défi­nit le nom local par défaut/

from Module/MonComposant import .maMethode
from MonComposant import .SousModule.maMethode
from ./MonComposant import .Foo.bar, .maMethode
from @Paquet/MonComposant import .Foo.bar as alias

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *