[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Несколько вопросов вразброс



25.06.2012 15:19, dimas пишет:
> а в чем, собственно, проблема? верно сказали выше, правильно так, как удобно.
В этом я с вами не соглашусь.
Удобно бывает по-разному.
Но часто эти "удобства" надо потом читать, к примеру.

> в случае с башем (как и с любым другим, наверно, скриптовым языком) едва ли какой-то иной подход даст выигрыш
> в скорости (если не наоборот)
А причём здесь скорость? Скорость, вроде как, к оптимизации относится?
В особенности в sh, как мне кажется, она определяется: алгоритмом, скоростью
интерпретатора и, вызываемой программы, а к глобальным константам или передаче
параметров серьёзного отношения не имеет.

> а вот геморроя добавит, это да.
Или наоборот.

> чем смущают глобальные переменные? если очень хочется, можно добавить флаг read-only для пущей красоты (help set).
О, кстати, точно, константы же есть... Я и забыл. :-)

> а парсить $@, переданный в функцию - то еще развлечение.
А зачем парсить? Функции не обрабатывают ошибки. Они получают синтаксически
правильные параметры. Достаточно их сразу использовать. Если требуется
переменное число, делать shift.

> можно на ровном месте запутаться в нумерации, а потом долго ломать голову, что же не так.
> или же в начале функции опять растаскивать все это дело на переменные (типа var1=$1, var2=$2) - только лишняя головная боль.
Я делаю так (к примеру):
check_deps()
# Check for the using executables.
# $1..$n - list of executables.
{
...
# Interfaces.
backup_mysql()
# $1 - user name;
# $2 - password;
# $3 - options.
{

> плюс значения переменных могут содержать пробелы, тут тоже нужно аккуратно.
Тесты для функций.
Ну и, как правило, кавычки для каждого параметра.

> да, при загрузке переменных из конфига не стоит забывать про ситуацию, когда конфиг отсутствует.
> для этого можно после "source /.../configfile" заюзать конструкции вида
> var=${var:-"defaul"t}
> man bash про подобные штуки.
> данная вещь вернет значение переменной, если оно есть, а если нету - вернет заданный дефолт.
Дык, вообще-то про конструкции bash я знаю, тем более, про такие широко
используемые. :-)
Думаю, при отсутствии конфига, лучше сдыхать с ошибкой.


Reply to: