J'ai plusieurs procédures/méthodes dans différentes classes qui ont énormément de paramètres, entre 7 et 11 paramètres !! (vive le code hérité) Ce sont des méthodes de calcul pour une comptabilité auxiliaire Code (Windev): PROCÉDURE CalculBalance(psSocCode, piSecteurId est un entier , psDateDebut, psDateFin, pbSansBrouillon est un booléen = Faux) Procédure CalculeLignesEcheancesAG(psSocCode, piSecteurId est un entier , psDateDebut = _CH_VIDE, psDateFin = _CH_VIDE, pbSansBrouillon est un booléen = faux) Procédure CalculeBalanceAG(psSocCode, piSecteurId est un entier , psDateDeb, psDateFin, pbParDateEch = faux,pbDetailleNonLettreHorsPeriode = faux, pbSansBrouillon est un Booleen = faux) Procédure Calcul_Journaux(piTypeVente,piTypeBque, piTypeAutres,poFiltreGene, psListeSoc_code,psListeAutresJRNType2,psListeAutresJRNType3, psDateDeb, psDateFin,piTransferer = 2, pbSansBrouillon est un booléen = Faux) Procédure CalculeLignesEcheances(psSocCode, piSecteurId est un entier , psDateDebut = _CH_VIDE, psDateFin = _CH_VIDE, pbDetailleNonLettreSurPeriodeAnterieur est un booléen =faux,pbNonLettréUniquement est un booléen= faux,pbSansBrouillon est un Booleen = faux) Procédure CalculeLignesFactures(psSocCode, piSecteurId est un entier , psDateDebut = _CH_VIDE, psDateFin = _CH_VIDE, pbDetailleNonLettreSurPeriodeAnterieur est un booléen=faux,pbNonLettréUniquement est un booléen = faux,pbSansBrouillon est un Booleen = faux) Procédure CalculeLignesRemises(psSocCode, piSecteurId est un entier , psDateDebut = _CH_VIDE, psDateFin = _CH_VIDE, pbDetailleNonLettreSurPeriodeAnterieur est un booléen=faux,pbDetailEcheance est un Boolean= faux,pbNonLettréUniquement est un Boolean= faux,bReglt_POST_PERIODE est un Boolean= vrai,pbSansBrouillon est un Boolean = faux) Procédure CalculExtraitCompte(psSocCode, piSecteurId est un entier , psDateDebut = _CH_VIDE, psDateFin = _CH_VIDE, pbNonLettréUniquement est un booléen = faux, pbDetailleNonLettreHorsPeriode est un booléen =faux, pbAvecDetails est un booléen =faux,bReglt_POST_PERIODE est un booléen = vrai,pbSansBrouillon est un booléen = faux) Procédure calculLettragePartiel(psSocCode, piSecteurId est un entier ,pbSansBrouillon est un booléen = faux) Sur ces méthodes j'ai des paramètres en commun que vous avez surement repéré. Dans ce cas J'ai l'habitude de passer par une structure, là j'aurais ça Code (Windev): strParamCalcul est une structure sSociete est une chaine iSecteurId est un entier sDateDebut est une chaine sDateFin est une chaine bSansBrouillon est un booléen fin J'obtiendrais ça : Code (Windev): Procédure CalculeLignesFactures(stPa est un strParamCalcul) Procédure CalculeBalanceAG(stPa est un strParamCalcul, pbParDateEch = faux,pbDetailleNonLettreHorsPeriode = faux) ... c'est nettement plus lisible. De plus ça permet de rajouter facilement un paramètre par la suite. Il suffit de le rajouter dans la structure.
Par contre ça me soulève un soucis : le paramétrage par défaut ! Ces méthodes ont toutes ", bSansBrouillon est un booléen = faux" avec cette structure je suis obligé de ne pas oublier de le renseigner. J'avais aussi l'idée d'utiliser un objet au lieu de la structure. De cette façon je pourrais renseigner le paramétrage par défaut dans le constructeur de l'objet. Code (Windev): CLParamCalcul est une classe sSociete est une chaine iSecteurId est un entier sDateDebut est une chaine sDateFin est une chaine bSansBrouillon est un booléen fin ... PROCÉDURE Constructeur() :bSansBrouillon = faux ... Quelle solution vous adoptez dans des cas similaires ?
perso avant je faisait beaucoup de structure maintenant j'utilise beaucoup les classe tu peux renseigner la valeur par defaut pas besoin de le renseigner dans le constructeur CLParamCalcul est une classe sSociete est une chaine iSecteurId est un entier sDateDebut est une chaine sDateFin est une chaine bSansBrouillon est un booléen=faux fin par exemple en plus tu peux choisir les élément que tu peux ou non sérialiser. en générale pour envoyer les info de windev a windev mobile je les passe en json. en plus tu peux faire pas mal de calcul auto et de controle en effet selon le type de valeur que tu passe pour un parametre cela peut interdire certaine valeur sur d'autre parametres ou meme renseigner directement les valeurs sans avoir a les renseigner lors de la declaration.
tu pourrais par exemple crée un objet global et tu met dedans toutes tes procédures en méthode dedans. du coup lors de l'instanciation tu peux passer les paramètres généraux. et tu appel via méthode en passant seulement les paramètres nécessaire.
Salut, Perso moi j'utilise les paramètres variables Voir aide ci-dessous Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!
Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens! , ça ne fonctionne pas sur Android Personnellement, je crée des procédures Avec tous les paramètres nécessaire Et je met a vide ceux qui sont Inutiles. Par contre j'évite les classes et objet en mobile. Mais bon vu que le post est sur wd et pas wm, c'est une bonne idée.
Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens! en plus tu peux faire pas mal de calcul auto et de controle en effet selon le type de valeur que tu passe pour un parametre cela peut interdire certaine valeur sur d'autre parametres ou meme renseigner directement les valeurs sans avoir a les renseigner lors de la declaration.Cliquez pour agrandir...