Postanowiłem być złym moderatorem

Przynajmniej przez pewien czas. To będzie eksperyment społeczno-programistyczny. Dotychczas Zakładałem, że każdy kiedyś się uczył i każdy ma prawo się mylić. Dlatego też nie zwracałem uwagi na drobnostki w postaci bezsensownych działań, niektórych użytkowników. Tłumaczyłem, pokazywałem, poprawiałem. Jak będzie Teraz na pewien czas nastąpi zmiana. Przede wszystkim trzy podstawowe pytania: Czy masz testy do tego […]

„Mały” polimorfizm ad hoc z rozszerzeniami w Kotlinie

Grozą powiało z tytułu. Na początek dwa słowa wyjaśnienia. Polimorfizm ad hoc jest forma polimorfizmu, która pozwala na wywołanie metody bez dokładnej wiedzy, jakiego typu jest obiekt, na którym metodę wywołujemy. W uproszczeniu można powiedzieć, że znany ze scali mechanizm implicit conversion, jest tu dobrym przykładem. Jego działanie można opisać w następujący sposób: Listing 1. […]

Funkcje w Kotlinie – podstawy

Pisząc o Kotlinie, dość często w przykładach używam funkcji. Czym jednak są funkcje i co można z nimi zrobić? Dziś wprowadzenie, a w kolejnych wpisach funkcje inline i lambdy. Funkcje, a metody oraz czym jest main Jeżeli funkcja została zdefiniowana w ramach klasy: Listing 1. Klasa z funkcją class Example(){ fun someFun(){ //… } } […]

Bez poprawnej matury z informatyki nie będzie dobrych systemów publicznych

Miało być o czymś innym, ale będzie o maturze. Wczoraj była ta z informatyki. I było nie za dobrze… Generalnie można powiedzieć, że gównoburza i w ogóle, ale po pobraniu plików ze strony CKE chyba jednak nie do końca. Dane w plikach zawierają błędy, choć według oficjalnych założeń nie powinny. Wnioski Jeżeli państwo nie jest […]

Sięgam tam gdzie wzrok nie sięga…

… a tam NullPointerException. W pierwszej pracy jeden z kolegów walcząc dość długo z jakimś kawałkiem kodu, podsumował swoje zmagania stwierdzeniem: Wszystko działa. Nawet nullpointerki lecą. null to taki wredny typ, który rozwalił już nie jeden kod. Dziś przyjrzymy się jak Kotlin radzi sobie z tym problemem. Nie możesz być null Domyślnie, zmienna nie może […]

Czego oczy nie widzą…

Oczywiście popieprzyły mi się tygodnie. Długi weekend jest w kolejnym, nie w tym. Jednak bez paniki. Mamy co robić. Wracamy do Kotlina. Dziś krótko o widoczności elementów. Kotlin ma trochę inne podejście do spraw widoczności elementów. Domyślnie – publiczne Zasada działania domyślnej widoczności w Javie jest ogólnie znana. Motywacja takiego, a nie innego rozwiązania tego […]

O czego by tu…

Zbliża się czas zaliczania programowania na studiach wszelakich. To oznacza, że i 4programmers.net jak co roku rozpocznie się festiwal próśb o pomoc. Pozytyw – od lat ilość tego typu postów spada. IMO, jest to spowodowane wzrostem liczby dobrze opisanych gotowców… ale zawsze to mniej roboty dla nas, moderatorów. I z tej okazji prośba – jak […]

Finalna wersja Lottomatu

Lottomat, który przez ostatni tydzień tworzymy, jest już praktycznie gotowy. Pozostało nam jedynie napisanie wyświetlania statystyk oraz złożenie wszystkich elementów w całość. We wczorajszym wpisie stworzyliśmy klasę Statistic, która zawiera widok pozwalający nam na pracę z mapą, zawierającą informacje ile razy dana kula została wylosowana. Wyświetlanie informacji Specyfikacja w postaci pierwszej wersji programu narzuca nam […]

Statystyka gry

By zachować funkcjonalność pierwotnej wersji Lotto, musimy teraz stworzyć jakiś mechanizm, który: Wykona N losowań. Zsumuje (jakoś) ile razy w wypadła dana kula. Wyświetli wyniki. Pierwszy jest stosunkowo prosty, a trzeci też nie odstaje od reszty. Drugi wymaga jednak dużej uwagi. We wczorajszym wpisie wspomniałem, że jednym z problemów w testowaniu oryginalnego kodu jest, sprawdzenie […]

Krótkie wprowadzenie do testów mutacyjnych

W ramach zabawy z lottomatem piszemy bardzo dużo testów. Pytanie, czy testy te są dobre. Jednym ze sposobów sprawdzenia, czy nasze testy są dobre, jest podmienienie fragmentów kodu. Jeżeli testy rzeczywiście coś testują, to taka podmiana powinna zostać wykryta. Testy nie powinny być zaliczone. To podejście nazywamy testami mutacyjnymi od zmian, jakie przeprowadzają one w […]