Witam
Podczas tworzenia pewnego kodu zaczęła mnie irytować jego obszerność w związku z czym postanowiłem go troszkę uprościć.
Napotkałem się przy tym jak dla mnie, na ciekawą zagwozdkę. Mam kila różnych klas, z których każda ma metodę
o nazwie
Move ( PoinF p ); i wiele innych metod o tej samej nazwie.
Na początku, kod do przemieszczania obiektów wyglądał tak:
UWAGA! "ify" są pod komentarzem ponieważ wcześniej ich nie było.
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Duży, tłusty i rozlazły, jak się wydawało niepotrzebnego kodu. Pomyślałem sobie, że skoro każda z tych klas ma nazwe
Move ( PoinF p ); to pyknę ją i resztę wspólnych metod do interfejsu. Całość o identycznym działaniu zawarłem w takim kodzie:
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
I tu niespodzianka. Program zaczął klatkować podczas przemieszczania obiektów. Moje pytanie brzmi, dlaczego?
Tak wygląda metoda GetAllGridObiects ( ); - Też źle napisana wiem. Zmienię to, mimo wszystko nie jest tak obszerna, żeby w takim stopniu
zwalniać procek. Jaka jest różnica czasu wykonywania kodu? Za pomocą klasy Stopwatch zmierzyłem, że wykonywanie się długiego, obrzydliwego
i przerażającego kodu wynosi mniej niż 1 ms. Zaś czas wykonywania krótkiego foreach trwa nawet 10ms!?!?!?! Czy metoda FindAll jest tak prockożerna?
język csharp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Pozdrawiam, Maciek.