например, функции api.. они именно функции. но возвращается часто просто признак выполнения - 0 или номер ошибки.
вы можете проверять его, а можете не проверять.. (проверять, конечно, правильнее)
другой случай, как я ранее написал, для универсальности..
допустим вам нужно узнать количество уникальных элементов или вывести сами уникальные элементы..
в последнем случае вам может быть необязательно знать их количество
так как для обоих действий алгоритм практически один, то и возникает желание объединить это в одну функцию, входящий параметр которой и будет определять, что нужно сделать: посчитать, вывести или и то и другое
так вот если только вывести, то возвращаемое значение не нужно, и можно вызвать функцию просто для соверщения вывода, а значение ее не получать..
с другой стороны, такое объединение не будет эффективным по скорости, ибо придется в цикле проверять значение параметра, а это время. если же параметр проверять только один раз, то тогда код будет неоптимален по размеру, ибо он все равно будет повторен два раза(или несколько) внутри функции.. но этим можно и пренебречь.
как-то так.. диалектические рассуждения..