Strona wykorzystuje ciasteczka by usprawnić komfort z jej korzystania. Korzystając ze strony akceptujesz naszą Politykę Ciasteczek. X

Debugowanie po stronie użytkownika [podstawowy]

Debugowanie to potoczna nazwa procesu usuwania błędów (lub po prostu nie pożądanego działania) z kodu źródłowego. Programując w Flash Professional lub FlashDevelop mamy dostęp do narzędzie debuggera które swoją rolę sprawuje całkiem nieźle i na pewno nie jednej osobie pomogło już usunąć błędy we własnych projektach. Niestety debugger jest narzędziem dostępnym jedynie twórcom aplikacji którzy jednak nie zawsze są w stanie przewidzieć (i sprawdzić) wszystkie możliwe scenariusze działania które podejmie docelowy odbiorca. Dlatego dla pewności zawsze warto zaimplementować system wyłapywania błędów od strony korzystających z aplikacji użytkowników - w tym celu przyjrzymy się kilku najpopularniejszym mechanizmom.

1. Główna pętla.
Ten, zdawać by się mogło, trywialny element powinien być częścią każdej szanującej się aplikacji i to nie tylko dlatego, że ułatwia debugowanie ale również czyni kod przejrzystszym i mniej podatnym na wycieki pamięci. Ale czym właściwie jest "główna pętla"? We Flash'u sprowadza się do posiadania tylko JEDNEGO zdarzenia "ENTER_FRAME" w całej aplikacji, co oznacza, że wszystkie inny wykonywane funkcja będą wywodzić się bezpośrednio (lub pośrednio) z głównej pętli. Takie podejście ułatwia wyłapywanie błędów w nieporównywalnym stopniu bo wystarczy, że kod głównej pętli obejmiemy słowami kluczowymi try i catch, a już żaden wyrzucony Error nie umknie naszej uwadze. Główna pętla z try i catch może wyglądać na przykład tak:

public function render(e:Event):void {
	try {
		processPlayer();
		processEnemy();
		processMap();
	} catch(e:Error) {
		trace("Error!");
	}
}

2. Dziennik.
Chociaż wyłapywanie błędów jest bardzo ważne, to jednak samo w sobie może okazać się mniej istotne niż na przykład okoliczności w których doszło do wyrzucenia wyjątku, dlatego drugim bardzo ważnym elementem każdej aplikacji powinien być dziennik zapisujący wykonywanie wszystkich kluczowych funkcji przez użytkownika - w jakim stanie rozpoczął korzystanie z aplikacji (wersja Flash, system operacyjny itd.), jakich przycisków używał, przez jakie okienka przeszedł itp. A jeśli będzie to gra, to na pewno na jakiej jest mapie, w jakiej jest pozycji i z czym miał już do czynienia. Przechowując wszystkie te informacji łatwiej będzie nam odtworzyć warunki w jakich użytkownik otrzymał błąd.
Klasa dziennika jest zawsze najprostszym elementem do zaimplementowania:

public class Log {
	private static var log:String = "";
	public function Log() {}
	public static function add(s:String):void {
		log += s+"n";
	}
	public static function toClipboard():void {
		System.setClipboard(log);
	}
}

3. Konsola.
Chyba każdy gracz chociaż raz korzystał z konsoli w grach PC, choćby po to żeby sobie wpisać "kody na nieśmiertelność". Konsola to potoczne określenie (zwykle ukrytej) linii komend w aplikacji, pozwalająca użytkownikowi wymusić działanie pewnych, z góry ustalonych funkcji. Zaimplementowanie dobrej konsoli to już nieco roboty, na szczęście w Internecie można znaleźć sporo gotowych rozwiązań, jak na przykład: Flash Console. Zdecydowanie każdy powinien mieć linie komend w swojej aplikacji - jeden raz wystarczy by już na zawsze się w niech zakochać.

Na koniec gdy nasza aplikacja jest już gotowa, warto w głównej pętli pozbyć się funkcji trace i zastąpić ją czymś co pozwoli nam otrzymać informacje o ewentualnych błędach, na przykład wysyłając je sobie na e-mail.


Imię:
Komentarz:
Potwierdz kod z obrazka:confirm image