Pull to refresh

Comments 13

Извините, но в приличном обществе за такой код бьют по рукам.
Да, вы написали:
По поводу модуля — можно много чего правильней написать, но делался он для того чтобы работать а не для красоты.

С другой стороны, этот код — почти половина статьи.
То есть, вы как бы говорите: у меня полстатьи не очень.
Если можно написать правильнее, то почему бы и не написать? Сами же потом разбираться в нем будете.
Код делался максимально простой для понимания и расширения (увеличения) версий для переключения.
Это сложно назвать простым кодом. Практически все тут направлено на нарушение принципа DRY.
Код

system ("chflags noschg $defhomedir/php-bin/$user/php");
system ("echo '#!/usr/local/php/55/bin/php-cgi' > $defhomedir/php-bin/$user/php");
system ("chflags schg $defhomedir/php-bin/$user/php");
system ("pkill -9 -u $user");
$newphpver1 = 5500;

повторяется во всех условиях. При этом отличие одного блока от другого только в пути и в переменной. Не проще было сделать switch/case с нужными версиями (или проверку версии в заранее заданном массиве) и объявить функцию change_version?
Что-то вроде:

switch ($newphpversion) {
    case 5.4:
    case 5.3:
    ...
        change_version($newphpversion);
        break;
    default:
        throw new Exception("Unknown version");
}

Код PHP, с перлом не знаком, но конструкция switch/case там точно есть.
Вместо этого вы даже поленились убрать закомментированный устаревший код.
switch/case в языке нету, к сожалению. Только модулями.
А массивы? И поиск по значению?
Что-то типа питоновского:
available_versions = [5.1, 5.2, 5.3, 5.4]

if newphpversion in array:
    change_version(version = newphpversion)
else:
    raise("Unknown version")
Поиска в массиве стандартно нету, но обычно реализуется хэшем, например, так:
my $available_versions = { "5.1" => 1, "5.2" => 1, "5.3" => 1, "5.4" => 1 }

my $required_version = "5.4"

А потом:
if ( defined $available_versions->{ $required_version } ) {

} else {

}
Ну вот и отлично! Значит, код действительно можно улучшить :) Было бы желание.
Я бы сказал, что этот код бесконечно улучшабилен :)
Закомментированные строки оставлены преднамеренно. Чтобы при отладке на сервере можно было вывести во временный файл логов нужные переменные и отслеживать обработку.
По поводу сделать switch/case это ближе кодерам а не админам. Админам проще видеть команды CLI, которые выполняются. Многие хостеры не имея аналогичного модуля просто вручную переключат версии подменой враппера.
Да пусть они живут у вас, эти строки. При публикации статьи-то их можно было удалить, ценности они не несут. Кто захочет отладочную информацию — поставит их сам.
А любой хороший админ, имхо, и так должен быть немножко кодером, капельку бухгалтером, хорошим эникеем и немножко волшебником.
Sign up to leave a comment.

Articles