Statyczna klasa

0

Witam! Czy dużym błędem jest posiadanie klasy, która przetrzymuje statyczne klasy, do których można się odwołać w każdym miejscu?
Przykład:

class Static
{
public:
	Static();
	~Static();

	static void DestroyAll();

	static Text* getText();
	static ScreenManager* getScreenMan();
	static Music *getMus();
	static FileManager* getFileMan();
private:
	static Text* text;
	static ScreenManager* SM;
	static Music *mus;
	static FileManager *file;
};

I teraz np. chce zagrać jakąś muzykę to dodaje do pliku cpp "Static.h"
i w jakiejś metodzie
Static::getMus()->PlayMusic(name);

0

Tak, jest to problem, ponieważ ukrywa to zależności w Twoim kodzie, a tym samym utrudnia jego testowanie jednostkowe.

Ukrywa zależności, ponieważ bez analizy kodu nie jesteś w stanie stwierdzić czy dana klasa X wykorzystuje klasy A oraz B czy tylko A, co byłoby oczywiste przy wykorzystaniu DI (wystarczyłoby rzucić okiem na konstruktor).

Btw, mamy terabajtowe dyski twarde praktycznie za grosze - nie próbuj oszczędzać dwóch bajtów zamieniając czytelne getMusic na enigmatyczne getMus.

1

kolego już pominę sens tego całego rozwiązania. Ale nie ty pierwszy wyśniłeś sen pod tytułem "chciałbym mieć jedną klasę dostępną z każdego miejsca". Poczytaj sobie o singelton i dlaczego jest zły. Ogólnie robienie taich trików przy TDD to problem.

0

To co robisz to zwykła zmienna globalna opakowana w klasę. Trochę lepsza czytelność, ale zachowuje wszystkie problemy zmiennych globalnych. Czasem nie do uniknięcia, ale bardzo rzadko.

1 użytkowników online, w tym zalogowanych: 0, gości: 1