Ja w użyciu jestem bardziej przy imperatywnym, choć deklaratywne mi się podoba.
Ale popatrzmy na takie 2 przykłady, które robią dokładnie to samo:
public int findOddStream(int[] A) {
return Arrays.stream(A).reduce(0, (a, b) -> a ^ b);
}
public int findOddImperative(int[] A) {
int n = 0;
for (int i:A) n^=i;
return n;
}
Obie metody robią to samo, czyli znajdują nieparzystą liczbę w tablicy A.
Nie wiem czemu, pewnie przez lata praktyki, ale to drugie rozwiązanie wydaje mi się bardziej czytelne.
Fakt, że wersja deklaratywna ze strumieniami jest krótsza jeśli liczyć linie, ale w znakach jest dłuższa.
No i w wersji deklaratywnej trzeba wiedzieć, że 0 w reduce to identity redukcji, czyli taka "wartość startowa".
Szczerze nie wiem która wersja wydaje mi się bardziej czytelna.
PS.
Na Google+ w komentarzach wyszło, że dobrze by było podać linka do treści zadania, które tu jest rozwiązywane ;-)
Stąd link https://codility.com/programmers/lessons/2-arrays/odd_occurrences_in_array/
Podobne postybeta
Dziwne te ludzie ;-) - pazerność2
Miejsca gdzie nie używałeś jeszcze komputera [ewentualnie miejsca, gdzie nie dopadły nas jeszcze komputery ;-)]
Go, a łatwość czytania kodu
Sudoku - rozwiązanie doskonałe ;p
Nie lubię Sparka ;-)
Brak komentarzy:
Prześlij komentarz