M'améliorer en algorithmique

a marqué ce sujet comme résolu.
Auteur du sujet

Bonjour,

Je suis en train d’écrire un bout de code pour m’améliorer et surtout reprendre la main sur certains points. Le Ce que je suis en train de faire utilise les mois et les jours de la semaine. Ces derniers sont distinctement un argument de deux fonctions.

Lors de l’utilisation de ces fonctions, si le mois est le paramètre, il doit prendre une valeur comprise entre 1 et 12. S’il s’agit d’un jour, sa valeur doit être 1 et 7. J’ai donc écrit deux fonctions qui permettait de vérifier le format :

const parseMonth = month => {
    if (typeof month === 'undefined' || month === null) {
        return new Date().getMonth();
    } else if (month < 1 || month > 12) {
        return 0;
    }
    return month;
}

const parseDay = day => {
    if (typeof day === 'undefined' || day === null) {
        return new Date().getDay() + 1;
    } else if (day < 1 || day > 7) {
        return 0;
    }
    return day;
}

Je me demande si ce que j’ai fait est bien où s’il y avait une possibilité et des avantages à regrouper ces deux fonctions en une seule.

(Je ne sais pas si le mot « parse » est utilisé à bon escient.)

Édité par Helmasaur

+0 -0

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

Ne définit pas tes fonctions globales avec const sauf si tu as une raison particulière de le faire (ça t’oblige à mettre ta déclaration en première contrairement à fonction).

Ensuite () => {} c’est seulement si tu veux garder this de la scope parente et en l’utilisant tu perds arguments.

Tu as vraiment un cas où month === null ? Sinon typeof month !=== "number" si ton entrée est toujours un nombre.

(getMonth commence à 0).

+1 -1
Auteur du sujet

Je n’ai pas compris la phrase concernant const.

J’ai beaucoup lu d’utiliser les fonctions fléchées. De ce que j’ai lu, j’ai vu ça comme un remplacement de function. Ce n’est pas le cas ?

Non, ça ne devrait jamais arrivé. Je vais enlever ce cas-ci :) . Soit l’argument doit être un nombre compris entre X et Y, soit il ne doit pas être indiqué.

Je rectifie le début à 0 à un autre endroit du code. S’il y a le + 1 pour les jours, c’est que le premier jour est un dimanche. Pour le coup, ça doit créer un problème pour samedi.

+0 -0

Je n’ai pas compris la phrase concernant const.

hello();

function hello() {
  console.log("ok");
}

machin();

const machin = () => "ok"

J’ai beaucoup lu d’utiliser les fonctions fléchées. De ce que j’ai lu, j’ai vu ça comme un remplacement de function. Ce n’est pas le cas ?

Elles ne font pas la même chose donc non.

+0 -0

Le titre parlait d’algorithmique, mais la question (et surtout la réponse) est une question de 'langage de programmation’.

Quand on parle d’algorithmique, on présente du pseudo-code, c.a.d du code tellement haut niveau qu’il ressemble plus à du français ou de l’anglais qu’à un langage de programmation.

+3 -1
Auteur du sujet

Le titre parlait d’algorithmique, mais la question (et surtout la réponse) est une question de 'langage de programmation’.

Quand on parle d’algorithmique, on présente du pseudo-code, c.a.d du code tellement haut niveau qu’il ressemble plus à du français ou de l’anglais qu’à un langage de programmation.

elegance

Il est à la base en aucun cas une question concernant le JavaScript mais concernant une condition. Les réponses apportées sont certes sur ce langage mais ne sont en aucun cas des réponses à la question initiale.

hello();

function hello() {
  console.log("ok");
}

machin();

const machin = () => "ok"

Elles ne font pas la même chose donc non.

A-312

Je veux bien croire qu’elle ne font pas la même chose mais il s’agit là d’un exemple d’utilisation de la fonction fléchée. Il est possible de faire :

const machin = () => {
    return "ok";
}

Je vais me renseigner sur les différences.

+0 -0

Ensuite () => {} c’est seulement si tu veux garder this de la scope parente

Donc j’ai pas "le droit" d’écrire ça :

array.map(item => item.length * 2)

Je ne me sers pas de this du tout, donc je DOIS passer par une fonction ?

Happiness is a warm puppy

+1 -0

@Helmasaur Tu as modifié mon message dans ta citation, les deux paragraphes étaient indépendant de l’un et de l’autre. L’exemple et ma phrase sont deux choses différentes.

Pour l’exemple essaye :

hello();

function hello() {
  console.log("ok");
}

et :

machin();

const machin = () => "ok"

C’est un exemple de ce que ma phrase voulait dire.

Édité par anonyme

+0 -0

Ensuite () => {} c’est seulement si tu veux garder this de la scope parente

Donc j’ai pas "le droit" d’écrire ça :

array.map(item => item.length * 2)

Je ne me sers pas de this du tout, donc je DOIS passer par une fonction ?

Javier

() => {} et () => "valeur" sont deux choses distinctes. Je pense qu’un débutant à mieux fait d’utiliser function () {} pour éviter les erreurs, notamment quand c’est utilisé pour une function listener d’event ou dans une classe, si on s’habitue à utiliser () => {}, on peut vite oublier qu’on l’a utilisé dans sa classe (si on le fait machinalement/par réflexe). Et je ne suis pas sûr qu’écrire : => au lieu de function fasse gagner du temps.

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

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