À la page 45 du code propre de Robert C. Martin: un manuel de fabrication de logiciels agiles, Martin écrit que les arguments de sortie doivent être évités. J'ai du mal à comprendre la signification de "l'argument de sortie" et pourquoi il faut les éviter.
L'exemple de Martin pour un argument de sortie appendFooter(s);
appelle la fonction public void appendFooter(StringBuffer report)
. Son amélioration du code estreport.appendFooter();
C'est peut-être dû au manque de contexte de code, mais je ne vois pas comment l'utilisation d'arguments de sortie est considérée comme un mauvais codage. Quelqu'un pourrait-il expliquer le concept ou donner un exemple supplémentaire de code pour comprendre cela?
La fonction suivante serait-elle également considérée comme un exemple de code impur selon le principe ci-dessus?
int[] numberArray = {3, 5, 7, 1};
sortArray(numberArray);
Si ce qui précède est une violation du principe de Martin de ne pas utiliser d'arguments de sortie, serait-il préférable d'avoir un objet qui a un tableau comme champ et une fonction qui peut être appelée pour trier le tableau?
ObjectWithArrayField numberArray = new ObjectWithArrayField(3, 5, 7, 1);
numberArray.sort();
sortArray(numberArray)
, bien sûr, trienumberArray
en place. Ou fait-il une copie denumberArray
, trie la copie et retourne la copie triée sans la modifiernumberArray
du tout?