Pokaż kod II – Memo Boxes

Moja pierwsza w miarę rozbudowana gra w Javie napisana parę lat temu, studium przypadku pt. Jak napisać brudny nieczytelny kod. To jest tutorial JAK NIE PISAĆ KODU. Przed czytaniem polecam zapoznanie się z grą aby wiedzieć za co odpowiedzialne są przytaczane fragmenty kodu. Google Play.


Pisanie językiem polskim w kodzie. Najgorsze co może być. Nawet jeśli masz problem z podstawowym angielskim, włącz sobie translator gdzieś w tle i alt-tabuj za każdym razem gdy potrzebujesz odpowiedniego słowa. Jak nie wiesz do końca jak nazwać zmienną aby dobrze opisała do czego służy – myśl nawet dłuższą chwilę. Wbrew pozorom, może i wygląda to głupio, ale to potrzebne. Konserwacja kodu boli, tym bardziej, jeśli ktoś to po tobie będzie czytał.

Untitled.png

Przykład 1. O co mi tu właściwie chodziło?

Z tego co pamiętam, to metoda odlicza i wypisuje sekundy w momencie wpisywania odpowiedniej kolejności kart (odsyłam do gry). Po if-ie którego sensu kompletnie już nie rozumiem następuje prawdopodobnie zmiana pozycji sprajta z odpowiednią sekundą, następnie… Wypisujemy go?
przyklad3

Przykład 2. Odpowiednik nazewnictwa po angielsku w Speechlist.

Zapominanie o OOP

Przenoś do klas co się da, przenoś do funkcji to co powtarzasz. To powinno być wkładane do głowy od pierwszego programu. Poniżej kod który min. zmienia teksturę przycisku skinu do kart który aktualnie jest wybrany – DLA POJEDYNCZEGO PRZYCISKU. Czyli powtórzyłem to dokładnie 6 razy. Dzisiaj stworzyłbym publiczną metodę dla przycisku która przyjmowałaby odpowiednie flagi (czy karta jest kupiona, czy aktualnie jest otwarte podmenu kupowania) i ją wywoływał dla każdego z przycisków (za pomocą jakiegoś prostego fora, wcześniej wrzucając je do tablicy).

2.png

Wszystko to co tutaj załatwiane jest w sposób rzemieślniczy, w skali masowej robię w klasie Screen projektu Speechlist, zamiast przejmować się ustawianiem przeźroczystości czcionki (w przejściach pomiędzy ekranami), robi to za mnie automatycznie klasa, dla każdego tekstu który do niej przypisałem:

przyklad5

Przykład 3. Odpowiednik w którym obiektowo realizuję cele.

Formatowanie i komentowanie
Tak właściwie, to jest gorsze od polskiego w kodzie. IDE SFORMATUJE ZA CIEBIE KOD JEDNYM SKRÓTEM (defaultowo InteliJ -> ctrl + shift +L, w Eclipsie zdaje się że ctrl + a żeby zaznaczyć cały plik a potem ctrl + shift + F – skróty mają to do siebie że wchodzą w pamięć mięśniową i plus minus uda ci się odpowiednio ułożyć palce ale jednocześnie możesz nie móc odpowiedzieć na pytanie jaka to kombinacja, nie mając klawiatury dosłownie pod rękami). Do tego te komentarze które niby miały coś przypomnieć, chwilowo usunąć linię kodu która coś psuła, ale właściwie to są na wieczne nieusunięcie w limbo pomiędzy żyjącym a nieżyjącym kodem.

3.png

Przykład 4. Niechlujnie sformatowany kod.

Przykład ze Speechlist, jak robić to dobrze; w zasadzie nie ma tu nawet czego komentować.

formatowanie

Przykład 5. Dobrze sformatowany kod.

Magic numbers

Ooo zapiszę sobie tutaj pozycję tego, w sumie to na chwilę, a nawet jeśli, przecież będę pamiętał co to miało oznaczać…

4.png

Przykład z kodu Speechlist jak robić to prawidłowo, w tym przypadku zadeklarowałem publiczną klasę na stałe:

przyklad

Przykład 6. Zadeklarowanie stałych czytelnymi nazwami w specjalnie do tego stworzonym pliku.

Całe repozytorium mogłoby być cytowane na jakichś wykładach, złoża przykładów są obszerne.Początkowym purystom językowym polecam ksiązkę Clean Code, przykłady w Javie ale mocno uniwersalnego zastosowania.Repozytorium z całym projektem do pobrania. Dla porównania, na odtrutkę, wrzucę prawidłowe odpowiedniki powyższych w moim ostatnim projekcie, Speechlist.

https://bitbucket.org/dbeef/speechlist


PS: Sorry za kod w postaci zdjęć, darmowy WP nie pozwala na wtyczki koloryzujące składnie, w sumie zrozumiały model biznesowy.

Bonus

Znalazłem w telefonie film pokazujący prototyp pierwszego Memo Boxes, minęło kilka miesięcy zanim wersja z filmiku stała się tą, która jest obecnie na Google Play.

Do tego parusekundowy filmik przedstawiający jakiś miesiąc przed wrzuceniem gry na Google Play, jak widać po monitorze w tle pracowałem nad cząsteczkami.

dsp2017-1

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s