Function parameters

Sobre el número de parámetros en funciones y métodos

Supongamos que tenemos la siguiente función que saca por consola un mensaje con un formato determinado:

const print = (stringToPrint, fontFamily, fontSize, fontWeight, fontColor) => {...}

La función toma como parámetros la cadena de caracteres a imprimir y distintos aspectos del formato.

Ahora imaginemos que, como desarrolladores, tenemos que hacer uso de dicha función. Tenemos que recordar o consultar la cabecera de la función, todos los parámetros que incluye y en qué orden aparecen. No parece lo más eficiente a la hora de usarla.

Podríamos hacer que el nombre de la función tuviese una semántica más acorde a su cabecera, pero entonces tendríamos una aberración como:

const printStringWithFontFamilySizeWeightAndColor = (stringToPrint, fontFamily, fontSize, fontWeight, fontColor) => {...}

Descartado.

Y si queremos hacer un test para la función, la cosa se pone más fea todavía. Hay que pensar casos de prueba para asegurar que distintas combinaciones de parámetros funcionen. Parece un trabajo arduo.

Sería mucho más elegante y práctico, por ejemplo, encapsular todos los parámetros de formato en un objeto y convertir la llamada en algo como:

const printStringWithFormat = (stringToPrint, fontFormat) => {...}

Mejor aún. Podríamos tener una clase que tengan la cadena a imprimir y el formato como atributos, y un método o función miembro que fuese simplemente algo como:

const print = () => {...}

Mucho más claro, ¿no?. Ahora, la forma de usarla sería:

myString.content = "String to print";
myString.fontFormat = myFontFormat;
myString.print();

Ahora todo queda claro. El programador no debería tener ningún problema para usar la función de imprimir correctamente y a la vez, los nombres de funciones y atributos permanecen claros y concisos.

En mi opinión, y coincidiendo con el tío Bob, el número ideal de argumentos para una función es 0. Tras el 0, lo mejor sería 1 único argumento, seguido por 2 argumentos. 3 argumentos empiezan a ser demasiados y deberían ser evitados en la medida de lo posible. El uso de más de 3 argumentos en una función o método debería estar muy justificado.

Comparte

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *