Aktywne Wpisy
kontodlabeki +137
chłop doda zdjecie klaty: ok
ja dałam kawałek kolana i to ubranego i jestem atencyjnym szonem, eh wykopki co mam powiedzieć, żałośni jesteście ogółem
ja dałam kawałek kolana i to ubranego i jestem atencyjnym szonem, eh wykopki co mam powiedzieć, żałośni jesteście ogółem
ProDziekan69 +3
Czy ktoś z was trzyma samochód o wartości 110k + pod „chmurką” ? Nie będę płacił deweloperowi 40k za parking podziemny, nie #!$%@? mnie jeszcze . #samochody #nieruchomosci #audi
Od końca maja, kiedy ogłaszałem się z tym samym (tu dzięki dla @moriturius za pomoc!), zrezygnowałem z używania TableView do wyświetlania listy zadań, na rzecz własnej kontrolki, przepracowałem też podstawowe klasy dla aplikacji - przy okazji rozpoczynając naukę JUnit i TestFX, przeniosłem projekt do Gradle'a i - long story short - próbowałem się jak najwięcej nauczyć.
Kilka przemyśleń natury ogólnej. Zbyt długa praca nad jednym projektem, szczególnie jeśli pracuje się samemu, nuży i z czasem trochę zniechęca - mam już jednak pomysły na dwa następne projekty* Testy to genialna sprawa! Zauważyłem, że klasy, które pisałem już próbując TDD wychodziły nawet o 30% krótsze niż pierwsze podejścia bez testów, jednocześnie zachowując pełną funkcjonalność. I jeszcze jedno, pisanie testów do istniejącego kodu jest uciążliwe i trochę, w moim odczuciu, jest przypinaniem kwiatka do korzucha.
JavaFX to niestety wciąż niedopracowane, średnio udokumentowane i czasem mega irytujące API. Przykład: pole tekstowe (TextField) ma domyślnie dodane menu kontekstowe, które otwiera się prawym kliknięciem. I tu parę problemów: nie można się dostać do elementów menu, żeby je np. spolszczyć, albo usunąć. A i całkiem wyłączyć menu - mi się nie udało, ale może za słabo szukałem - też nie jest je wcale prosto... Bo co taka metoda o nazwie onContextMenuRequest() może wywoływać... no cóż na pewno nie ma nic wspólnego z otwieraniem menu kontekstowego i w żaden sposób nie daje możliwości skonsumowania eventu, który menu otwiera... Takich grzybków jest niestety sporo. Niestety aplikacja wygląda też inaczej pod Windowsem a inaczej w Linuskach. Czcionki renderują się lepiej w okienkach, okno u pingwina...
* 1. Konsolowy odtwarzacz audio z filmików YT, żebym mógł sobie puszczać przez SSH muzykę z RaspberryPi podpiętego do HiFi :-) i 2. Klient i serwer czatu bez zbędnych fajerwerków (ale z bazą userów itd.).
Wołam: #programowanie #java #javafx #naukaprogramowania #odzeradodevelopera
1. - jedna metoda, jeden test, nie testuje się miliona rzeczy w jednej metodzie.
2. - testy pisz w formacie
// given - mając - warunek początkowy
// when - kiedy - działanie
// then - wtedy - rezultat
na przykład
// given albo setup
int numer1= 1;
int numer2 = 2;
int wynik = 0;
//when:
wynik = numer1 + numer2;
//then
wynik == 3
drugi przykład, załózmy że
Rozumiem. Dzięki!
@kitke: to git, ale tak jak mówię: obczaj sobie Spock, lepiej dopracowany i bardziej funkcjonalny od junita.
https://github.com/spockframework/spock-example/blob/master/build.gradle
tu masz opisane co dodać do gradla żeby użyć spocka.
i lekki wstęp:
http://thejavatar.com/testing-with-spock/
1. ściągnij i zainstaluj Git'a - link
2. odpal Git Bash i wpisz git clone https://github.com/Kitke/time-keeper.git
3. otwórz konsolę w pobranym folderze time-keeper (shift + prawy click - Otwórz wiersz poleceń tutaj, czy jakoś tak) i wpisz gradlew build jar
4. W folderze build/libs odpal plik jar. Wymaga zainstalowanej najnowszej Javy.
Wersja light: jak sobie nie poradzisz wrzucę plik jar na GitHub'a :-)
Chociaż nie jestem w żaden sposób przywiązany do JUnit (ani żadnej innej technologii), chcę ją ogarnąć ze względów praktycznych. Niemniej jednak od przybytku głowa nie boli, chętnie spojrzę na Spock'a.
Tego typu rzeczy:
if
(settings.playSounds()) {
settings.setPlaySounds(
false
);
}
else
{
settings.setPlaySounds(
true
);
}
```możesz uprościć jako:```
settings.setPlaySounds(!settings.playSounds());
-----
https://en.wikipedia.org/wiki/Dependency_injection – staraj się nie inicjować obiektów w środku innych obiektów. Tzn masz np
SettingsWindow
, w środku inicjujeszStage
,FXMLLoader
iScene
=> to zabija testowalność i konfigurowalność. Nie możesz tego zmockować, klasaSettingsWindow
robi „dużo rzeczy”, bo musi umieć tamte sobie przygotować do pracy.Powinieneś mieć jedno
Jeśli chodzi o klasę App, to faktycznie jest za duża i jej rozbicie może dobrze zrobić.
Łączenie Stringów jest niestety mało eleganckie w takiej formie, ale na tyle na ile orientuje się w API, nie ma metody, która pozwoliłaby to zrobić 'czyściej'. Można w