faretesto > comp.www.* > comp.www.php

forest (08.08.2019, 11:14)
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?
fmigliori (10.08.2019, 14:41)
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é.
forest (12.08.2019, 12:12)
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.
fmigliori (13.08.2019, 12:29)
Nell'arco della vita dell'oggetto quante volte useresti il metodo get?
forest (13.08.2019, 13:03)
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)
Discussioni simili