2) При чём тут костыль. Все так делают, все стандартные функции, возвращающие данные в массив, или принимающие организованный именно так в SM. В языке C++ тоже пишут так.
Функция, которая передает в качестве возвращаемого значения массив, это редкость. Вы тем самым запутываете код, непонятно, какую максимальную длину она вернёт, если не прочитать её код.
Согласен. Не подумал об этом, когда писал ответ. Слишком был недовольный)