Придерживайтесь парадигмы, используемой в среде, которую вы кодируете.
Очевидным примером является использование случая Паскаля для методов в .NET, случай верблюда в Java.
Менее очевидные примеры касаются использования тех же соглашений, что и в стандартной библиотеке классов.
С этой целью можно многое сказать. Соглашения об именах передают много информации для людей и очень мало для компилятора. Любой, кто использовал API в одной среде, которая использует соглашения другой среды, заметил, насколько выделяется чужой код.
Согласованность является ценной характеристикой, которая снижает когнитивную нагрузку для человека, потребляющего код.
Я попробовал всевозможные методы:
printexec() {
printf -- "\033[1;37m$\033[0m"
printf -- " %q" "$@"
printf -- "\n"
eval -- "$@"
eval -- "$*"
"$@"
"$*"
}
Вывод:
$ printexec echo -e "foo\n" bar
$ echo -e foo\\n bar
foon bar
foon bar
foo
bar
bash: echo -e foo\n bar: command not found
, Как Вы видите, только третий, "$@"
дал корректный результат.