Разметка кода для геттеров и сеттеров
Вопрос
Я пишу класс, в котором много геттеров и сеттеров, и мне было интересно узнать, что люди думают о следующем:
Обычный способ - кодировать следующим образом:
public function setChangeSort($changeSort)
{
self::$changeSort = $changeSort;
}
public function getChangeSort()
{
return self::$changeSort;
}
Что вы думаете о следующих действиях?
public function setChangeSort($changeSort) { self::$changeSort = $changeSort; }
public function getChangeSort() { return self::$changeSort; }
У меня нет проблем сделать это оригинальным способом, так как это должно быть сделано. Кажется, это просто занимает много места в моих классных функциях, которые действительно очевидны в том, что они делают.
Заранее спасибо.
Решение
Однострочные условные блоки хороши, если они непротиворечивы, очевидны и интуитивно понятны, хотя я бы посоветовал осторожно их расставлять, чтобы сразу было очевидно, что они являются функциями, а не какой-то одной строкой кода!
Другие советы
Я бы пошел с " однострочным " изменение. Но только , если все, что он делает, это устанавливает и получает значение. если вы добавите проверку на null или любую другую проверку, или сделаете что-либо кроме получения или установки, я бы выбрал первый и более длинный вариант, чтобы сделать код более читабельным.
Я обычно угрожаю однострочным методам так же, как и другим методам. Я не возражаю против того, чтобы мой исходный код был длиннее на N строк, если это означает, что он более читабелен и удобен в обслуживании.
Я бы также предложил оформить следующий документ http://framework.zend.com/manual/en/coding-standard. HTML ИМХО, это лучший справочник по стандартному кодированию PHP, доступный на данный момент.
Я думаю, что магические методы получения / установки PHP5 действительно полезны при работе с многочисленными методами получения / установки.
И пример.
<?php
class A {
private $properties = array();
public function __set($key, $value) {
if (is_array($value)) {
$this->$key = $value;
} else {
$this->properties[$key] = $value;
}
}
public function __get($key) {
if (array_key_exists($key, $this->properties)) {
return $this->properties[$key];
}
return null;
}
}
?>