Plan du tuto sur la programmation en JS - mathalea/mathalea GitHub Wiki

DOC NON FINALISÉE, EN COURS D'ÉCRITURE

Voilà, la doc que j'imagine à déposer dans un premier temps sur le WIKI de GitHub:

  • La doc se base sur de la pédagogie de projet. L'idée, c'est de n'utiliser que des exemples concrets déjà présents dans le code de mathAlea.
  • On montre un exemple minimaliste pour alléger le plus possible la (sur)charge cognitive.
  • On met le strict minimum et on donne des liens pour ceux qui veulent approfondir.
  • Si des niveaux ne sont pas représentés dans le code de mathAlea, on attendra que cela soit le cas pour faire avancer la doc.

0. Convention

  • Dans le projet mathAlea, il a été choisi d'utiliser le style d'écriture camel case plutôt que le snake case. Ainsi, on écrira maVariable plutôt que ma_variable.
  • Les constantes (au sens mathématique) sont en majuscules. PI, NOMBRE_DE_JOURS_DANS_LA_SEMAINE
  • Pour faciliter la compréhension du code, il est préférable de commencer par une majuscule les noms des classes afin de ne pas les confondre avec une simple méthode:Exercice
  • Les identifiants (noms de variables, des fonctions et des classes) doivent être explicites. Par exemple, on remplacera donc les const a, b, c par const Exercice, listeTypeDeQuestions, consigne.

1. Niveau débutant (types, variables, fonctions, imports et portées)

  • Déclaration

**Déclarer **: Donner pour le première fois le nom (l'identifiant) à une variable, une fonction, une classe, une instance, etc.

Les identifiants **doivent ** commencer par une lettre, un tiret bas "_" ou un symbole dollar "$"

const listeTypeDeQuestions
const besoinFormulaireText

Il est possible de faire plusieurs déclarations sur une même ligne :

const listeTypeDeQuestions, besoinFormulaireText

On ne peut pas déclarer plusieurs fois la même variable

const a = ...
const a = ...

Ou plus subtile

const a = ...
function a (...) {
  ....
}
  • Les membres(pourquoi, comment (déclaration, affectation, définition et appel)) Cela doit commencer par var, let ou const. Déclaration : On donne pour le première fois le nom (identifiant) à une variable ou une fonction.
const 

Déclaration et définition :

function Reglages6M23(){
  ExerciceConversionsAires.call(this)
  this.sup = 3
  this.nbColsCorr = 1
}

ou bien

const Reglages6M23 = function(){
  ExerciceConversionsAires.call(this)
  this.sup = 3
  this.nbColsCorr = 1
}

Appel d'une fonction :

Reglages6M23()

Éviter les copier-coller et factoriser son code

  • Portées des références (Pourquoi, comment(var, const et let))
  • Les imports (pourquoi, comment)

2. Niveau intermédiaire (pourquoi, comment(class, variables d'instances, méthodes d'instance, Héritage, surcharge, polymorphisme, composition et retour sur l'interpréteur JS)) La programmation Orientée Objet (POO) est un paradigme basé sur l'encapsulation et la factorisation du code. La factorisation du code consiste à regrouper (c'est l'inverse du copié-collé), dans la mesure du possible, toutes les parties de code identiques ou qui font la même chose en un seul exemplaire afin d'être en mesure le plus facilement possible de :

  • corriger les bugs
  • ajouter de nouvelles fonctionnalités

3. Niveau avancé (accessibilité (private), accesseur (getter), mutateur (setter), variable, méthodes de classe (static) et retour sur l'interpréteur JS)

4. Niveau expert (mixin, héritage multiple, interfaces, design pattern, etc.)

Rem1 : Comme déjà discuté dans Slack, on anglicise dès le début les identifiants (noms) pour ne plus mélanger du Français et de l'anglais. Cela aura également pour conséquence de préparer une éventuelle internationalisation. Rem2 : Afin de faire un véritable filtre sur la quantité d'informations, dans un premier temps, on ne met qu'un seul lien (celui qui nous semble le "meilleur") par personne. Si vous estimez que votre lien pointe vers une ressource qui vous semble inférieure ou égale à celles déjà présentes, vous ne la déposez pas. 1