Studium przypadku – tropienie buga

Aplikacja zaczynała już mieć sens – użytkownik mógł stworzyć listy tyle ile chciał, nazywać je jak tylko chciał, a gdy się mu znudziło – skasować dowolną z nich. Na każdej, oczywiście, można było dodać zadania, oznaczyć jako wykonane, oraz usunąć.

Jeszcze, co prawda, nie napisałem ani linijki kodu związanej ze sztuczną inteligencją (a – gdyby nieco tylko naciągnąć fakty – uczenie się przez aplikację gdzie którą listę wyświetlić jest jakąś formą SI), a program już sprawiał wrażenie złośliwego i humorzastego. Mianowicie po usunięciu jednej listy i obróceniu telefonu do pozycji poziomej, nagle znikały wszystkie.Po powrocie do pozycji wertykalnej – a czasem dopiero po ponownym wejściu w horyzontalną – listy się pojawiały.

Czytaj dalej

Usuwanie listy – refaktoring w praktyce

Aplikacja pozwalała już na dodawanie nowych list zadań i wybór którą z nich wyświetlić. Była doskonała dla kogoś kto, gdy już coś stworzy, nigdy tego nie usuwa. Jednak ja, będąc zwykłym użytkownikiem i nie mając możliwości skasowania listy, skorzystałbym z możliwości skasowania aplikacji.

Usunięcie listy wydarzyć musi się na dwóch frontach:

  • na ekranie
  • w bazie danych

Dziś zajmiemy się frontem pierwszym. Pokażę Wam jak szybko i łatwo przerobiłem kod tak, aby był łatwiejszy w utrzymaniu i dalszym rozwoju aplikacji.

Czytaj dalej

Kiedy trzeba zaciągnąć dług techniczny?

Dług pieniężny to takie finansowe kalesony – nikt ich nie lubi nosić, są niewygodne i każdy chce jak najszybciej zdjąć, ale niekiedy wyjście na zewnątrz bez nich byłoby bardzo ciężkie. Czasem trzeba wziąć kredyt na inwestycje, bo bez niego realizacja pomysłu zajęłaby 40 lat.

Ale czy dług można mieć tylko wobec banku, rodziny czy znajomych? Nie, dług można mieć też wobec własnego kodu! Taki dług nazywa się długiem technicznym. I ja go właśnie zaciągnąłem.

Czytaj dalej

Kilka list na ekranie – zakładki

Dzisiejszy post opisuje w jaki sposób sprawiłem, że moja aplikacja wyświetla więcej niż jedną listę zadań. Napiszę więc dziś o jednym z ważniejszych kroków w rozwoju programu – wprowadzeniu do widoku zakładek.

Blog zaliczył ostatnio lekką desynchronizację z kodem, ponieważ będę dziś odnosił się  do komitu z przed dwóch tygodni. Zmiany które w nim zaszły to wyrzucenie listy zadań i dodanie w zamian dwóch ekranów z napisami Tab 1 i Tab 2. Opiszę jak to zrobiłem krok po kroku, jako tutorial.

Czytaj dalej

Aktywność podzielona na fragmenty

Wszystko co związane z interfejsem użytkownika zawarte dotychczas było w jednej aktywności o niezbyt wyszukanej nazwie: MainActivity. Zlecała ona liście zadań wyświetlenie się na utworzonym wcześniej obiekcie typu TaskListViewImpl. Obiekt ten, co prawda, obsługiwał komunikacje z klasami SqlTask i SqlTaskList, ale faktyczne wyświetlenie danych działo się w MainActivity

Tego, że w mojej aplikacji takie rozwiązanie się nie sprawdzi, dowiedziałem się próbując utworzyć w widoku zakładki, które umożliwią przełączanie się pomiędzy różnymi listami. A zwiększać liczbę list planuję już niedługo.

Czytaj dalej

Wzorzec projektowy „polecenie”, vol. 2

Zaraz po publikacji wpisu, w którym stwierdziłem, że użyłem wzorca projektowego „polecenie”, rozdzwonił się telefon. Kilka pierwszych osób zwróciło mi uwagę, że się pomyliłem. Jednak z minuty na minutę emocje były coraz gorętsze, kolejni już krzyczeli, że to co napisałem nie ma nic wspólnego z tym wzorcem, aż na końcu jakiś Erich Gamma zagroził mi swoją bandą…

Czytaj dalej

Zastosowanie wzorca „polecenie”

Pisałem już, że nie chcę stosować w swojej aplikacji wzorca: kiedy trzeba będzie wyświetlić Twoje dane, ktoś Ci zaglądnie do środa, a Ty nawet tego nie poczujesz. Z tego powodu klasy SqlTaskList oraz SqlTask zawierają metody showOn, za pomocą których można je poprosić o wyświetlenie się na podanym widoku; oczywiście kwestiami technicznymi – jak wyświetlić – zajmuje się sam widok.

Czytaj dalej

Aplikacja jest eksperymentem

Dzisiaj przedstawię Wam jedno z głównych założeń aplikacji o której na tym blogu piszę.

Kto nie programuje obiektowo?

Pisałem już o unikaniu getterów. Chcę żebyście wiedzieli, że jest to częścią filozofii, którą ostatnio jestem zafascynowany: programowania obiektowego. O co chodzi? Przecież dzisiaj wszyscy programują obiektowo! Hm… no właśnie nie do końca. W moim przekonaniu, zdecydowana większość powstającego na świecie kodu, pomimo użycia obiektowych języków: Javy, C#, JavaScriptu itd., nie jest w 100% obiektowa; jest hybrydą obiektowości i programowania proceduralnego.

Czytaj dalej