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?” »

Google Science Fair – konkurs młodych naukowców i wynalazców

Google Science Fair to konkurs dla ludzi w wieku 13-18 lat, w którym należy coś zbadać albo wynaleźć. Oficjalny czas trwania konkursu wyniósł 3 miesiące – od 12 lutego do 12 maja, niemniej jednak można było zgłosić projekty, nad którymi prace rozpoczęto wcześniej. Po nieosiągnięciu wyznaczonego przeze mnie celu – zwyciężeniu Google Code-In 2013 – postanowiłem spróbować swoich sił w tym konkursie (tak, jak to zadeklarowałem w poście o GCI).

Pomysł

To była poniekąd ciekawa historia. Od dłuższego czasu myślałem nad zabezpieczeniem smartfonów przed kradzieżą. Po pewnej rozmowie ze znajomym, kiedy to wracałem z nim autobusem i opowiedział mi, jak to skradziono mu jego smartfon, bardziej utwierdziłem się w swoim przekonaniu o potrzebie stworzenia takiego zabezpieczenia. Już od dłuższego czasu wtedy szukałem pomysłu na GSF-a (Google Science Fair), jednakże nic nie mogłem wymyślić. Dopiero po dłuższym czasie skojarzyłem fakty 🙂 . Taki więc miałem cel: stworzyć zabezpieczenie zapobiegające kradzieży smartfonów. Miałem już wstępne pomysły, jak to zrealizować, ale pewien kolega, Arek, który koniecznie chciał ze mną wykonywać projekt, zmienił „nieco” moją koncepcję… i to o duże „nieco”. Nowy projekt ma za zadanie wykrywać obecność człowieka wykorzystując pole magnetyczne. W rezultacie stworzyliśmy „Nowoczesny System Zabezpieczeń”.

Continue reading “Google Science Fair – konkurs młodych naukowców i wynalazców” »

Piękny, grudniowy czas – Poznań i MWPZ-ty

To był piękny grudniowy dzień. W tym czasie normalni ludzie przebywali w ciepłych domach i cieszyli się swoimi mikołajkowymi prezentami, ale nie oni. Oni byli inni. Spędzili ten czas na poznańskich uczelniach zmagając się z zadaniami przygotowanymi przez specjalistów IT.
W dniach 5-6 grudnia odbyły się Mistrzostwa Wielkopolski w Programowaniu Zawodowym, w których miałem możliwość uczestniczyć. Zawody te są jednym z najbardziej prestiżowych konkursów tego typu w Polsce. Ponadto są darmowe i otwarte, co oznacza, iż każdy może w nich wziąć udział bez względu na wiek czy narodowość. Zawody składają się z dwóch kategorii – dla licealistów oraz kategoria otwarta. Należy tu zwrócić uwagę, iż licealiści zaliczają się do obu grup. Continue reading “Piękny, grudniowy czas – Poznań i MWPZ-ty” »

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” »

13Milówka09 – „krótki” opis

W zeszłym tygodniu, a dokładniej w dniach 22-28.09.2013 odbył się obóz informatyczny w Milówce, którego byłem uczestnikiem. Został zorganizowany przez Stowarzyszenie Talent i różnił się nieco od tego wakacyjnego. Do napisania tego postu zostałem „zachęcony” przez pewnego znajomego (mam wiernych czytelników, jakby to wyraziła Fluttershy – yay!).

Ten post w sumie będzie dużo krótszy od poprzedniego – po prostu nie ma wiele co opisywać (albo mi się nie chce :P). Poprawka: jednakże wyszło zdecydowanie więcej niż podejrzewałem 😛

Rekrutacja

Rekrutacja, a raczej ocena wniosków, była przeprowadzona w nieco dziwny sposób. Aby dostać się za darmo należało się pochwalić w kilku kryteriach, takich jak szczególne osiągnięcia w olimpiadach, umiejętności artystyczne oraz udokumentowany wolontariat. Wraz ze mną zgłosiło się trzech znajomych – jeden w sumie tylko po to, by nie iść do szkoły (pozostawił nawet puste pola w formularzu), więc nic dziwnego, iż go nie przyjęli. Ku mojemu zaskoczeniu inny znajomy – Admixior – który w sumie miał bardzo podobne preferencje do moich nie dostał się na obóz. Co dziwniejsze – jeden z laureatów pewnego ogólnoświatowego konkursu organizowanego przez Google także nie został zakwalifikowany do obozu… Jedni mówią, że to random, inni że wytyczne MEN (finansowało obóz) – no cóż, pozostaje się tylko cieszyć, że to ja zostałem wybrany 🙂

Continue reading “13Milówka09 – „krótki” opis” »

Quinto – prymitywna symulacja posiedzeń ONZ

Wieczorem 11 września br. zostałem poproszony przez znajomego o napisanie aplikacji dla Olsztyn Model United Nations. Miała ona za zadanie sprawdzać obecność i przeprowadzać głosowania, ot taka symulacja posiedzeń ONZ. Z powodu dość krótkiego czasu, bowiem niecałego tygodnia, zdecydowałem się na bibliotekę/framework Qt, bowiem wiedziałem, iż tworzenie aplikacji przy jego pomocy jest szybkie i wygodne. Sytuacja była podobna do wcześniejszej z pisaniem bota w Pythonie – zero doświadczenia.

Statystyki

Statystyki w programie Quinto

Wyniki głosowania

Wyniki głosowania w programie Quinto

Continue reading “Quinto – prymitywna symulacja posiedzeń ONZ” »

13Milówka08 – wspomnienia i wrażenia

(Post współdzielony z Mrowqą i m4txem)

W dniach 5-15.08.2013 odbył się obóz informatyczny organizowany przez Stowarzyszenie Talent w malowniczej miejscowości zwanej Milówką. Oprócz jednak samych nerdów była jeszcze grupa matematyczna, choć mało liczna, bo licząca 11 dusz. Z kolei fanów fizyki rzekomo znalazło się tylko dwóch.

Obóz został zorganizowany w proporcjach 2:1 (dni naukowe – dni turystyczne). Jak więc nietrudno policzyć, odbyły się trzy takie „sekwencje”. Zwolennicy informatyki zostali podzieleni na dwie grupy – konkursową oraz warsztatową. W tej pierwszej najpierw odbywały się zawody, a następnie omówienie zadań, a w drugiej z kolei było na odwrót. My oczywiście przynależeliśmy do tej elitarnej części społeczeństwa obozu 🙂 Grupy były nazywane jak grzyby. Grupa konkursowa z informatyki nazwana została borowikami (bo rzekomo silne i samodzielne), warsztatowa – opieńkami (bo nie dają rady samemu i trzymają się w kupach), matematyczna zaś – maślakami (powód nadania takiej nazwy nieustalony). Continue reading “13Milówka08 – wspomnienia i wrażenia” »

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?” »

Potyczki algorytmiczne 2013 – zmagania

Potyczki algorytmiczne

Potyczki algorytmiczne


W dniach 21-28 maja odbyły się Potyczki Algorytmiczne. Jest to otwarty ogólnopolski konkurs algorytmiczny, co oznacza, iż każdy obywatel naszego kraju może w nim wystartować. W tym roku wystartowałem w drużynie z Admixiorem oraz jego bratem Łukaszem. Cała olimpiada rok rocznie przebiega w dość specyficzny sposób – codziennie (z wyjątkiem niedzieli) pojawiają się zadania, na których rozwiązanie ma się określony czas – w większości przypadków do końca dnia następnego. Continue reading “Potyczki algorytmiczne 2013 – zmagania” »