J'ai rencontré ce code dans lequel un appel de méthode, par exemple ClassA.search (a, b, flag) est utilisé par 3 contrôleurs. Ceci est une version simplifiée de la méthode:Est-ce un bon moyen de réutiliser/partager une méthode?
public List<Result> search(Object a, Object b, boolean flag) {
//do some code logic here, common to the 3 controllers
//at the middle there is:
if (flag) {
//code that affects 2 Controllers
} else {
//code affects only 1
}
//some more common code
//some more code with the flag if else
}
Est-ce une bonne idée parce que le code est réutilisé? Ou y a-t-il un meilleur moyen de réutiliser le code mais de ne pas introduire ce drapeau pour la personnalisation du code de l'appelant de méthode (comme peut-être le diviser en 3 méthodes différentes mais être capable de déclarer une méthode refactorisée)?
Je suis d'accord avec cela à condition de ne pas finir par transformer des variables locales en champs pour le faire fonctionner. –
Pourquoi trouvez-vous les variables locales mauvaises? Si l'état que vous devez passer à travers les paramètres est si important, créez un objet unique avec l'état initialisé aux champs finaux dans le constructeur et ne l'utilisez qu'une seule fois. Fonction sur les stéroïdes ;-). –
C'est vrai mais ajouter une classe avec des champs (et un constructeur?) Demande beaucoup de travail pour éviter un drapeau. ;) –