Разметка кода для геттеров и сеттеров - PullRequest
0 голосов
/ 23 июня 2009

Я пишу класс, в котором много геттеров и сеттеров, и мне было интересно, что люди думают о следующем:

Нормальный способ - это наподобие следующего:

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; }

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

Заранее спасибо.

Ответы [ 4 ]

5 голосов
/ 23 июня 2009

Однострочные условные блоки хороши, если они непротиворечивы, очевидны и интуитивно понятны, хотя я бы посоветовал аккуратно их расставлять, чтобы сразу было очевидно, что они являются функциями, а не какой-то одной строкой кода!

1 голос
/ 23 июня 2009

Я обычно угрожаю однострочным методам так же, как и другим методам. Я не против того, чтобы мой исходный код был длиннее на N строк, если это означает, что он более читабелен и удобен в обслуживании.

Я бы также предложил оформить следующий документ http://framework.zend.com/manual/en/coding-standard.html ИМХО, это лучший справочник по стандартному кодированию PHP, доступный на данный момент.

1 голос
/ 23 июня 2009

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

0 голосов
/ 23 июня 2009

Я думаю, что магические геттеры / сеттеры PHP5 действительно полезны при работе с многочисленными геттерами / сеттерами.

http://fr.php.net/manual/en/language.oop5.overloading.php#language.oop5.overloading.members

И пример.

<?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;
  }
}
?> 
...