Как в SQL, так и в C #, мне никогда не нравились выходные параметры. Я никогда не передавал параметры ByRef в VB6. Что-то о том, чтобы рассчитывать на побочные эффекты, чтобы что-то сделать, просто беспокоит меня.
Я знаю, что они могут обойтись тем, что не могут возвращать несколько результатов из функции, но набор строк в SQL или сложный тип данных в C # и VB работают точно так же и кажутся мне более самодокументированными.
Что-то не так с моим мышлением, или есть источники из авторитетных источников, которые поддерживают меня? Каково ваше личное мнение об этом и почему? Что я могу сказать коллегам, которые хотят проектировать с выходными параметрами, которые могут убедить их использовать разные структуры?
РЕДАКТИРОВАТЬ: интересный поворот - выходной параметр, о котором я задавал этот вопрос, использовался вместо возвращаемого значения. Когда возвращаемое значение равно «ERROR», вызывающая сторона должна обрабатывать его как исключение. Я делал это, но не доволен идеей. Коллега не был проинформирован о необходимости справиться с этим условием, и в результате было потеряно много денег, поскольку процедура молча провалилась!