Como norma, no debería utilizar argumentos por defecto si hay que incluir una condición en el código. En vez de eso debería partir la función en dos o más funciones sobrecargadas si puede. Un argumento por defecto debería ser un valor que normalmente pondría ahí. Es el valor que es más probable que ocurra, para que los programadores clientes puedan hacer caso omiso de él o sólo lo pongan cuando no quieran utilizar el valor por defecto.
El argumento por defecto se incluye para hacer más fáciles las llamadas a función, especialmente cuando esas funciones tiene muchos argumentos con valores típicos. No sólo es mucho más sencillo escribir las llamadas, sino que además son más sencillas de leer, especialmente si el creador de la clase ordena los argumentos de tal manera que aquéllos que menos cambian se ponen al final del todo.
Una utilización especialmente importante de los argumentos por defecto es cuando empieza con una función con un conjunto de argumentos, y después de utilizarla por un tiempo se da cuenta que necesita añadir más argumentos. Si pone los nuevos argumentos como por defecto, se asegura de que no se rompe el código cliente que utiliza la interfaz anterior.