PHP ООП - это хорошая / плохая прямая адресация свойств? - PullRequest
0 голосов
/ 22 марта 2010

Я попытаюсь показать это на примере:

class DogShelter
{
  private $dog;

  public function handleDogDirect( )
  {
     $this->dog = trim( $this->dog );
     $this->dog = rtrim( $this->dog, 'abc' );
     $this->dog = strtolower( $this->dog );
     $this->dog = basename( $this->dog );
  }

  public function handleDogIndirect( )
  {
     $dog = $this->dog;

     $dog = trim( $dog );
     $dog = rtrim( $dog, 'abc' );
     $dog = strtolower( $dog );
     $dog = basename( $dog );

     $this->dog = $dog;
  }
}

Какая функция лучше в разных случаях - handleDogDirect или handleDogIndirect?

  • Почему?
  • Какой из них, вероятно, быстрее?
  • Какой я должен использовать?

Кстати: После повторного повторения, я больше не могу войти с моим OpenID из WordPress. Он продолжает говорить No OpenID endpoint found.. Буду очень признателен за любую помощь.

Ответы [ 3 ]

3 голосов
/ 22 марта 2010

Я бы использовал handleDogDirect, так как он обращается к экземпляру из $dog, что, похоже, и было то, чего вы хотели достичь. Последняя функция, похоже, создает ненужную переменную для выполнения функции same .

В качестве соглашения, когда я использую свойства класса внутри функций класса, я всегда использую ключевое слово $this напрямую.

Если есть проблема с производительностью любого из этих двух компонентов, возможно, она незначительна. Я настоятельно предлагаю беспокоиться о проблемах производительности, когда пришло время беспокоиться о производительности.

1 голос
/ 22 марта 2010

Я не думаю, что есть смысл создавать новую переменную без причины.Я думаю, что производительность ударил, если таковые имеются незначительны.На самом деле должно произойти следующее: перед тем, как значение будет помещено в переменную класса, оно должно быть очищено, то есть в setDog ().

0 голосов
/ 22 марта 2010

Я бы сказал, что это больше вопрос стиля персонального кодирования.

Я иногда делаю это как handleDogIndirect (), потому что для меня более логично то, как я визуализирую свой код, потому что он включает в себя меньше ввода текста (особенно меньше нажатия клавиши Shift), и потому что я думаю, что он читается лучше. 1003 *

Я попытаюсь объяснить, почему это имеет больше смысла для меня. Функции - это их собственный маленький мир, поэтому у них есть своя сфера применения. Они счастливы, когда работают в этой области, поэтому я сначала хочу убедиться, что я втягиваю в них все, что им нужно. После этого мне не нужно думать о том, что происходит где-то еще, а только о том, что локально для этой функции. Меньше беспорядка ума.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...