Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: 6302
Последний выпуск: 19.06.2015

Философия говнокода. Вопрос не риторический.

8
17 декабря 2013 года
mfender
3.5K / / 15.06.2005
Мне тут в руки досталось десяток сайтов на самых хитросделанных движках, включая Joomla! и Simfony2 с вкраплениями Doctrine.
При этом замес такой, что я как археолог разрываю пласты и определяю эпохи: вот тут писалось в 2001 году нормальным человеком; вот тут неадекват оставил тонну говна в 2005...
Ну да бог с ним, разберусь. Медведя можно научить курить, да так, что он на ласапете сам научится ездить.
У меня же другая проблема. Этического характера. В связи с этим вопрос: как вы взглядываете на нижеследующее? Оценивать контрастно: говно/не говно.

У меня с некоторых пор для экономии пальцев появилась манера геттеры и сеттеры заключать в один метод. То есть, вместо

Код:
class TObject {

    protected $var;
   
    public function getVar(){
        return $this->var;
    }
   
    public function setVar($val){
        $this->var = $val;
        return $this;
    }
}
я исполняю метод

 
Код:
public function Var($val = null) {
        if (is_null($val)) {
            return $this->var;
        } else {
            $this->var = $val;
            return $this;
        }
    }
ну и, соответственно, если на вход подаю - сеттер, если нет - геттер.
На мой взгляд, это нормальный подход.
Расскажите, люди добрые-знающие, насколько такой подход говён. А то не хочется портить ещё и своими отходами людям и без меня загаженные тонны кода.
1
17 декабря 2013 года
kot_
7.3K / / 20.01.2000
не лучшее решение ИМХО на самом деле. Это примерно тоже самое что совмещать рот и прямую кишку ))
445
17 декабря 2013 года
Meander
487 / / 04.09.2011
Не стоит волноваться, этим кодом Вы ничего не испортите. Скорее наоборот добавите пикантности. Вам следует оставить такой след в этом коде, чтобы люди, которые его будут править после Вас изумились еще больше чем Вы.
8
17 декабря 2013 года
mfender
3.5K / / 15.06.2005
Вот русскими же буквами попросил оценить конкретно: говно или не говно. )))
326
18 декабря 2013 года
sadovoya
757 / / 19.11.2005
Я бы въехал сходу. Но, все-таки говно. Есть такой принцип -- "наименьшего удивления". Тем более это должно относиться к сетерам и гетерам, поскольку их привычный вариант это уже стандарт "де-факто".
1
18 декабря 2013 года
kot_
7.3K / / 20.01.2000
Цитата: mfender
Вот русскими же буквами попросил оценить конкретно: говно или не говно. )))


ну так и оценили - говно. )))
лучше так не делать.
Причин несколько - но самая главная - подобный метод кодирования очень быстро приводит к "макаронному стилю" и прочим ништякам.

1
18 декабря 2013 года
kot_
7.3K / / 20.01.2000
и кстати - бывают ситуации когда для геттера тоже нужны параметры. Это вторая причина почему не стоит делать это одним методом
326
18 декабря 2013 года
sadovoya
757 / / 19.11.2005
Не только гетеры могут быть с параметрами, могут сетеры быть без параметров (например, для установки рандомайзного идентификатора и т.п.). Лучше и их избегать, думаю. Не стоит все валить в кучу и плодить "универсальные" функции. Рефакторинг, простота модификации к тому тоже склоняют. Короче "разделяй и властвуй" иначе зароешься.

P.S. Кстати, подобная идея в некоторых языках реализована (в Delphi и насколько знаю в шарпе), но в другом виде -- через свойства. Там не обязательно геттер и сетер вызывать, а можно как-бы "напрямую" читать из переменной или ей присваивать, а на самом деле неявно гетеры и сетеры вызываются, но они вполне обыкновенные.
8
18 декабря 2013 года
mfender
3.5K / / 15.06.2005
Убедили Не буду такое говнецо рисовать, напрягу пальчонки )))))

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог