Wpis z mikrobloga

@Blade:

1. Testy automatyczne. Skąd mam wiedzieć czy Twój kod w ogóle działa?
2. Też irytuje mnie mieszanie camelCase ze snakecase
3. https://en.wikipedia.org/wiki/Single_responsibility_principle – masz widgeta, który w tej chwili wie jak robić dwie rzeczy na raz: zarządzać taskami i zapisywać swój stan. Jak rozpoznać, że się narusza SRP? Pomyśl jakie zmiany mógłbyś chcieć wprowadzić. Np mógłbyś chcieć zmienić format zapisu z JSONa. Albo w ogóle pisać do
@MacDada
Ad. 1 To jeszcze nie ten poziom chyba :P ale fakt dopisze testy jednostkowe jak poczytam o tym.
Ad. 3 Wiem o co Ci chodzi ale nie mam bladego pojęcia w jaki sposób powinienem to rozbić...
Ad. 5 Dobrze, że w ogóle wydzieliłem to jako metodę, wcześniej wszystko było w on_start :D

Ad. 2/4 OK do zmiany :)

Dzięki wielkie za poświęcony czas :)
@Blade:

try:

if labelText == '':
raise ValueError('Cannot create task from empty String!')
except ValueError as e:
print(e)
else:

łodafak ja bym zrobił:
if not isinstance(labelText, string) or not labelText:
raise ValueError('Cannot create task from empty String!') # jak kto woli, ja bym tu zwracał none albo coś
i dalej ciągniesz bez elsa
Ad. 3 Wiem o co Ci chodzi ale nie mam bladego pojęcia w jaki sposób powinienem to rozbić...


@Blade: Tam gdzie masz metodę pickle_all() zwracaj same dane. Tam, gdzie ją odpalasz, użyj obiektu, który zapisze.

Zauważ, że w TimerApp masz z kolei wczytywanie tych danych i zamianę na obiekty. Możesz z obu operacji zrobić obiekt Persistance z metodami read() i save().

Ad. 5 Dobrze, że w ogóle wydzieliłem to jako
@Blade: dodam tylko, że kod rozbity na małe metody łatwiej się testuje. Nie dość, że masz mniej przypadków do rozpatrzenia dla każdej metody, to jeszcze łatwo je mockować. Ale to jak poczytasz o testowaniu :)