Layout del codice per getter e setter
Domanda
Sto scrivendo una lezione che ha molti getter e setter e mi chiedevo cosa la gente pensasse di quanto segue:
Il modo normale è di codificare come il seguente:
public function setChangeSort($changeSort)
{
self::$changeSort = $changeSort;
}
public function getChangeSort()
{
return self::$changeSort;
}
Quali sono le tue opinioni su quanto segue:
public function setChangeSort($changeSort) { self::$changeSort = $changeSort; }
public function getChangeSort() { return self::$changeSort; }
Non ho problemi a farlo in modo originale, poiché è così che deve essere fatto. Sembra solo occupare molto spazio nelle mie funzioni classon che sono davvero ovvie in quello che fanno.
Grazie in anticipo.
Soluzione
I blocchi condizionali a una riga vanno bene se sono coerenti, ovvi e intuitivi, anche se incoraggerei a spaziarli attentamente quindi è immediatamente ovvio che sono funzioni piuttosto che una singola riga di codice!
Altri suggerimenti
Vorrei andare con "una riga" variazione. Ma solo se tutto ciò che fa è impostare e ottenere un valore. se aggiungi un controllo per null o qualsiasi altra convalida, o fai qualcosa di diverso da ottenere o impostare andrei con la prima e più lunga variante per mantenere il codice più leggibile.
Di solito minaccio i metodi di una riga allo stesso modo degli altri metodi. Non mi dispiace che il mio codice sorgente sia N-line più a lungo se significa che è più leggibile e gestibile.
Vorrei anche suggerire di controllare il seguente documento http://framework.zend.com/manual/en/coding-standard. html IMHO è il miglior riferimento standard di codifica PHP disponibile finora.
Penso che i getter / setter magici di PHP5 siano davvero utili quando si ha a che fare con numerosi getter / setter.
E un esempio.
<?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;
}
}
?>