Sto scrivendo un gioco di dragamine con curses
. Per rappresentare ogni tessera, ho scritto una piccola classe Tile
che contiene informazioni sul possibile stato di ciascuna piastrella (indipendentemente dal fatto che sia contrassegnata o meno, indipendentemente dal fatto che abbia o meno una bomba sotto di essa e se sia o meno "nascosta"). Questa è l'interfaccia finora:
class Tile {
bool hidden;
bool containsBomb;
bool hasFlag;
public:
Tile(bool startWithBomb, bool startHidden = true);
bool isHidden() const;
void makeHidden();
void unhide();
bool hasBomb() const;
void placeBomb();
void removeBomb();
bool hasFlag() const;
void placeFlag();
void removeFlag();
};
Avrei potuto creare setter per ciascuna una singola funzione, ma penso che essere separati porterà a un codice più leggibile ( tile.setFlag(false)
vs tile.removeFlag()
)
Il mio problema è che questo può potenzialmente portare a "stati cattivi". Ad esempio, una tessera non visibile può contenere un flag.
Leggevo questo post e molti utenti " bash "usando getter / setter; con buone ragioni.
La mia domanda è: prima di andare più lontano nel progettare questa classe, c'è un modo migliore di impostarlo per evitare l'uso di getter / setter generici per ogni flag privato?