Jak nazywać zmienne?

Rozpoczynając naukę programowania nie skupiałem większej uwagi nazewnictwu zmiennych. Później, korzystając z różnych bibliotek, modułów czy też frameworków zwróciłem większą uwagę na konwencje nazewnictwa. To niemniej jednak jest tylko jedna z wielu kwestii, o których należy pamiętać. Jak zatem nazywać zmienne?

Raz napisany kod czyta się wiele razy. Powinno się więc zadbać o to, by jego czytanie było możliwie proste, szybkie i przyjemne. Nazwy symboli (zmiennych, klas, metod, itp.) odgrywają tu ważną rolę. Nie musisz zgadzać się ze wszystkimi wskazówkami, które są zamieszczone poniżej, niemniej jednak warto mieć je na uwadze podczas wymyślania nazw i stosować się choć do części z nich.

Twórz opisowe nazwy

Ile razy zdarzyło Ci się, że gdy czytałeś swój kod po kilku tygodniach, nie mogłeś sobie przypomnieć, co oznaczała dana zmienna? Mi to się przytrafiło nie raz i nie dwa. Nazwy zmiennych powinny zawierać tyle informacji, by móc dokładnie określić do czego jest ona wykorzystywana. Cytując Roberta Martina:

The name of a variable, function, or class, should answer all the big questions. It should tell you why it exists, what it does, and how it is used. If a name requires a comment, then the name does not reveal its intent.
Clean Code – A Handbook of Agile Software Craftsmanship

Powyżej zacytowany tekst zawiera w sobie sporo wskazówek, które zostały opisane poniżej.
Continue reading “Jak nazywać zmienne?” »

Jak postępuje profesjonalny programista?

W tym artykule zostały opisane niektóre z głównych zasad, do których osoba uważająca się za profesjonalistę powinna się stosować. Przedstawiona tu wiedza jest dość skondensowana, by nie wydłużać tego tekstu, więc po obszerniejsze opisy odsyłam książki w bibliografii. Artykuł jest kierowany głównie do osób średnio zaawansowanych i bardziej doświadczonych początkujących.

Kim jest profesjonalista?

Po pierwsze jest to osoba odpowiedzialna. Nie szkodzi ona innym, a w przypadku, gdy coś się jej nie uda, to nie ucieka, a ponosi konsekwencje swoich błędów i naprawia wyrządzone szkody nawet wtedy, gdyby były ogromne. By zminimalizować prawdopodobieństwo popełnienia błędów, profesjonalista testuje swój kod.
Po drugie jest to osoba, która zachowuje etykę pracy. Oznacza to, że zna ona swoje otoczenie. Wie, co potrafi i czego się podejmuje. Jest ona pokorna i świadoma tego, że nie zawsze ma rację, że może się mylić w pewnych kwestiach, więc powinna liczyć się także ze zdaniem innych.
Po trzecie jest to osoba świadoma tego, że rynek IT rozwija się bardzo dynamicznie, więc by pozostać wartościowym programistą ciągle się uczy, ćwiczy i doskonali.

Continue reading “Jak postępuje profesjonalny programista?” »

Wprowadzenie do biblioteki SFML – narzędzia do szybkiego, wygodnego i przyjemnego pisania gier

Jeżeli pisałeś wcześniej jakąkolwiek grę w języku C++ to zapewne spotkałeś się z takimi bibliotekami jak SDL czy Allegro. Pisząc w którejkolwiek z nich pewną niedogodnością jest to, iż są napisane w języku strukturalnym, przez co tworzenie kodu bywa czasem uciążliwe i męczące. Istnieje jednakże lepsze rozwiązanie – SFML. Jest to prosta i szybka biblioteka do obsługi multimediów zorientowana obiektowo.

Przedmowa

Artykuł został napisany dla Magazynu Programista z tego powodu, iż bardzo go polubiłem i bardzo go sobie cenię. Powstał na samym początku maja br. (tak, pół roku temu!). Włożyłem w go naprawdę sporo wysiłku, by był jak najlepszy (choć teraz wiem, jak można by napisać o wiele lepiej). Niestety, współpraca z redakcją pozostawiała wiele do życzenia – gwoli ścisłości tej współpracy prawie nie było. Kontakt z osobami wyznaczony stricte do współpracy ze mną zazwyczaj urywał się po kilku mailach. Postanowiłem więc opublikować ten artykuł, by moja ciężka praca nie poszła na marne i by inni mogli znaleźć coś wartościowego. Continue reading “Wprowadzenie do biblioteki SFML – narzędzia do szybkiego, wygodnego i przyjemnego pisania gier” »

Jak napisać własnego bota do gry przeglądarkowej?

Myślałeś kiedyś może nad napisaniem własnego bota do jakiejkolwiek gry, by otrzymywać extra bonusy lub po prostu wykonać jakąś akcję, podczas, gdy nie ma Cię przy komputerze? Jeśli tak, to właśnie w tym poście dowiesz się, jak w łatwy sposób to osiągnąć.

Na początku parę słów sprostowania – w tytule wprawdzie są gry przeglądarkowe, jednakże chodzi mi o wysyłanie zapytań do serwera HTTP i odbieranie odpowiedzi, więc nie wszystkie gry przeglądarkowe będzie dało się w poniższy sposób zautomatyzować, jednakże z drugiej strony znajdą się pewnie tytuły, które nie są przeglądarkowe, jednakże korzystają z HTTP.

Wykorzystamy Google App Engine oraz język Python w wersji 2.7 (w tej wersji jest wspierany przez GAE). GAE wprawdzie wspiera Javę, jednakże pisząc w Pythonie mamy to udogodnienie, iż kodu nie trzeba kompilować i możemy skorzystać z linii Pythona, w której to można wydawać polecenie po poleceniu zachowując bieżący stan VMki Pythona. GAE wspiera także język GO oraz całkiem niedawno dodany PHP. Continue reading “Jak napisać własnego bota do gry przeglądarkowej?” »

Dlaczego GCC? Nie lepiej MSVC?

GCC i MSVC to są dwa najpopularniejsze kompilatory* C/C++. Pierwszy, którego twórcą jest Free Software Foundation, Inc. i drugi napisany przez firmę Microsoft. Zainspirowany rozmową ze znajomym postanowiłem przeprowadzić testy optymalizacji i wydajności kodu oraz niektórych części biblioteki standardowej. Optymalizacja kodu nie jest wcale taka prosta jakby to mogło się wydawać, zwłaszcza, że konkretne przypadki trzeba z góry przewidzieć i napisać dobry algorytm – kod przecież nie jest kompilowany przez istotę inteligentną! Zdarza się wygenerować taki kod jak np.

*Niektórzy mogą się wspierać, iż gcc nie kompiluje C++. Nieprawda (flaga -lstdc++ w opcjach linkera). GCC jest skrótem od GNU Compiler Collection (najpopularniejsze polecenie to g++, choć można używać np. c++ :)). Podobnie jest z MSVC – MicroSoft Visual C++ – a polecenie – cl. Continue reading “Dlaczego GCC? Nie lepiej MSVC?” »