2010-08-22 2 views
0

Что касается «хорошего кода», приемлемо ли комбинировать набор и получать методы в одном? Пример:Объединение геттеров и сеттеров в gettersetters

public function dir($dir=null) { 
    if (is_null($dir)) return $this->dir; 
    $this->dir = $dir; 
} 
+0

Я думаю, что это смутит большинство людей, поскольку оно не является «стандартным», что сделало бы его не «хорошим кодом». – Starkey

+0

На каком языке этот код? – mpenrow

+0

PHP, но это не имеет отношения к вопросу, поэтому я не пометил его «php». – mattalxndr

ответ

1

Это довольно ужасно. Это делает невозможным установить значение null, с одной стороны.

На языке, который отличается неопределенным от нуля, тогда было бы разумным сделать это с помощью этого неопределенного значения, а не null.

Несоответствие между возвращаемым или нет, даже не действует на многих языках. В любом случае, почему бы не вернуть его в любом случае, чтобы обеспечить разумную цепочку x.dir = y.dir = someValue? Но это никнейм, мой первый абзац - мой главный ответ.

0

Моя первоначальная мысль не является кодом, сложнее читать и, следовательно, поддерживать. Я добрался до того места, где я либо использовал свойство C# auto, либо просто публичное поле.

0

Этот шаблон, по крайней мере, очень распространен в jQuery; Я бы сказал, что все в порядке.

+0

* Почти * этот рисунок, но нет. jQuery проверить, является ли параметр неопределенным, а не null. Вы получаете другое поведение, если вы делаете '$ ('elem'). Attr ('foo', null)' than '$ ('elem'). Attr ('foo')'. Это связано с тем, что javascript различает «undefined» (без параметра) и «null» (параметр без значения). Итак, в этом случае все в порядке, но я не буду говорить, что это для остальных языков. – Chubas

+0

Только для полноты моего комментария: см. Http://code.jquery.com/jquery-latest.js, строка 795, где определена функция «доступа». – Chubas

+0

@Chubas, я бы не сказал, что это был «почти» этот шаблон вообще. Разница между неопределенным и нулевым в javascript довольно огромная, что делает ее совершенно другой, если внешне похож по шаблону слов на экране. –

Смежные вопросы