|
|
|
namespace Html;
class Text { static function toHtml(string $text): string { // ... } } /** * Text::toHtml in the CONSTRUCTOR. */ class TextA { private $wrapped; /** * Constructor. */ function __construct(string $wapped) { $this->wrapped = Text::toHtml($wapped); } /** * Getter. */ function get(): string { return $this->wrapped; } } /** * Text::toHtml in the GETTER. */ class TextB { private $wrapped; /** * Constructor. */ function __construct(string $wapped) { $this->wrapped = $wapped; } /** * Getter. */ function get(): string { return Text::toHtml($this->wrapped); } } Quale classe preferite (TextA o TextB)? Per me nel costruttore non deve essere fatta nessuna *vera* elaborazione, ma solo attività di configurazione: - qualche eventuale validazione/aggiustamento dei parametri passati al costruttore - assegnazione dei valori alle proprietà (questo è ovvio) - ecc. Quindi preferisco la TextB. Cosa ne pensate? |
|
|
|
Se $this->wrapped deve essere un html va bene la prima.
La seconda è errata, perché esegui Text::toHtml tutte le volte che usi $this->wrapped e non ha senso. >Per me nel costruttore non deve essere fatta nessuna *vera* elaborazione Non vedo perché. |
|
|
Il 10/08/19 14:41, fmigliori ha scritto:
> Se $this->wrapped deve essere un html va bene la prima. > La seconda è errata, perché esegui Text::toHtml tutte le volte che usi $this->wrapped > e non ha senso. >> Per me nel costruttore non deve essere fatta nessuna *vera* > elaborazione > Non vedo perché. Perchè lo scopo del costruttore dovrebbe essere solo quello di configurare la classe che si sta istanziando, e qualche attività di bootstrapping. Le lavorazioni *concrete/pesanti* li dovrebbero fare gli altri metodi. |
|
|
Nell'arco della vita dell'oggetto quante volte useresti il metodo get?
|
|
|
Il 13/08/19 12:29, fmigliori ha scritto:
> Nell'arco della vita dell'oggetto quante volte useresti il metodo get? Forse un po' hai ragione. Quindi a questo punto conviene: - eliminare la classe TextB - rinominare la classe TextA in HtmlText (è un nome più appropriato) - rinominare la classe Text in TextConverter (è un nome più appropriato) |
|