Améliorer la structure de mon code

L’auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonsoir,

J’ai créé un petit module le mois dernier et je ne pense pas que je puisse vraiment l’améliorer sans aide extérieur. Le code est très simple à comprendre et se trouve sur GitHub.

Pour l’instant, j’ai relevé comme amélioration possible dans Issues :

  • Une fonction peut retourner undifined si le fichier JSON correspondant est vide.
  • Je ne maîtrise pas vraiment tout ce qui touche à l’asynchrone et aux promesses :( . Du coup, je me demande si une fonction peut être exécutée avant l’appel du fichier JSON de la ligne 18 à 20. Je me demande d’ailleurs s’il ne faut pas charger le fichier JSON correspondant à la fonction plutôt que de faire les trois.
  • Il en est de même pour la vérification de la vérification du format de la langue à la ligne 6.
  • Je n’arrive pas à comprendre pourquoi à un certain moment, pour obtenir le lien du dossier où se trouve le fichier, c’est .. et à un autre, c’est .. Plus d’information dans le ticket 20. J’ai longuement bloqué et ça a fonctionné quand j’ai doublé le point. Je ne sais pas pourquoi ça fonctionne mais ça fonctionne :euh: .
  • J’ai vu que beaucoup de projet comportais Travis mais je ne comprends pas trop l’utilité.
  • Les projets sur NPM ont un fichier test.js mais je n’ai pas compris comment cela fonctionne.
  • Il n’y a pas de ticket à propos de cela mais je me demande si je devrais rajouter un fichier .gitignore.

Il y a sûrement d’autres choses, donc n’hésitez pas à m’en faire part ici ou sur GitHub dans l’onglet Issues. Par contre, je préfère ne pas recevoir de pull-requests afin de m’entraîner et progresser ;) . Si c’est pour remplir des fichiers JSON, ça serait avec plaisir :p !

Édité par Helmasaur

+0 -0

Cette réponse a aidé l’auteur du sujet

Un des trucs que j’ai appris avec @vhf, c’est qu’il est super important d’utiliser un linter. Il en existe plein, moi j’utilise xo et parfois eslint.

Pareil pour les tests, il faut les automatiser, j’utilise ava mais il en existe plein d’autres ! Ava est par forcément le meilleur.

Par exemple sur un projet comme remark-attr.
Dans package.json il y a :

  "scripts": {
    "pretest": "xo",
    "prepare": "del-cli dist && cross-env BABEL_ENV=production babel src --out-dir dist",
    "test": "ava"
},

"pretest", s’exécute avant les tests. Si ça plante, ça n’exécute pas les tests. Donc j’ai mis le linter pour tester uniquement du code qui peut être commiter. "prepare" on s’en fiche, c’est quand tout est près. "test", c’est la commande à exécuter pour tester. J’utilise ava donc je lance la commande dédiée.

C’est pas plus compliqué que ça ^^
Travis, s’occupe de faire exactement ça mais coté Github. Comme ça t’es sûr que tout est bien testé.


Ça ne marche pas avec un double point. Il faut utiliser un seul point. Je ne sais pas trop pourquoi tu penses qu’il faut mettre deux points ^^"


Je n’ai pas compris tes questions sur les promesses.


C’est comme tu veux pour le .gitignore mais sache que tu peux mettre .gitignore dans .gitignore 😎.

ache.one                 🦹         👾                                🦊

+1 -0
Auteur du sujet

J’utilise un linter mais il n’est pas mis sur GitHub. Faut-il prendre l’habitude de le faire ?

Je vais me renseigner pour les projets concernant les tets. Je n’avais pas compris que cela marchais comme ça.

Je parle du double-point et ça marche justement que avec le double point à cet endroit. J’ai bloqué des erreurs sur ça et quand j’ai voulu tester avec deux points, c’est passé. Malgré le fait que je ne comprenne pas pourquoi, vu que ça fonctionne, j’ai laissé ça comme ça…

En fait, concernant les promesses, je me demandais si certaines parties du code étaient exécuté avant celle des premières lignes. En particulier le texte regex et le chargement des fichiers JSON.

En tout cas, merci pour ta réponse :) .

+0 -0

Cette réponse a aidé l’auteur du sujet

Pourquoi ava et pas mochajs qui est plus populaire ?

A-312

Parce-que ! Laisse moi avec mon ava ! :p

C’est une question de goût comme je le dis. Perso, mocha est un peu trop verbeux pour moi, surtout que ava fait tout ce que je veux. Mais vas-y utilise mocha si tu veux ^^

Bon. Je ne comprend toujours pas test questions relatives aux promesses. Bref, je me permets quelques PR.

ache.one                 🦹         👾                                🦊

+0 -0
Auteur du sujet

Je comprends concernant ava et mocha. En fait, je me demandais s’il valait mieux utiliser des paquets qu’on utilise si c’est le même pour éviter de rajouter une ligne dans devDependcies.

Je vais regarder les deux PR.

En fait, je demandais si mon code s’exécutera tout le temps dans l’ordre de ce que j’ai écrit où s’il y a des moments critiques qui ne s’exécuterait dans le mauvais ordre et qui pourrait faire planter l’exécution ?

Enfin, concernant les chemins, j’ai lu l’article que tu as envoyé sur GitHub et j’avais parlé de ça sur le Discord @A-312 et @AmarOK. Pour ces deux dernier, voici le lien : Requiring modules in Node.js: Everything you need to know.

+0 -0

Cette réponse a aidé l’auteur du sujet

En fait, je demandais si mon code s’exécutera tout le temps dans l’ordre de ce que j’ai écrit où s’il y a des moments critiques qui ne s’exécuterait dans le mauvais ordre et qui pourrait faire planter l’exécution ?

C’est à toi de différencier les fonctions async et sync si c’est que tu appelles "ordre", tu as plusieurs ressources sur internet.

Une fonction sync va suivre le déroulement du code, une fonction async ne va pas bloquer l’exécution du code et fait souvent appel à une callback.

+0 -0

Cette réponse a aidé l’auteur du sujet

Je ne vois rien dans ton code qui soit async ni de promessse, ni de thread, ni même de callback !
On aurait presque dit de la programmation impérative. Si une fonction n’est pas explicitement asynchrone alors elle est synchrone ^^

À toi de savoir quand tu utilises des fontions async quand tu attends le résultat.

ache.one                 🦹         👾                                🦊

+0 -0
Auteur du sujet

Oh, je pensais que dans le cas du JavaScript, il y avait des moments où les choses n’étaient pas exécuté dans l’ordre. Donc, hormis des cas bien spécifiques (et souvent visible avec un mot-clé tel que async ou Promise). Ça m’aide grandement :D !

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte