Wpis z mikrobloga

Hej Mirki, od kilku dni uczę się #java i mam pytanie, skąd uczyć się dobrych praktyk? Albo jak je rozpoznawać? Robię zadania na #codewars i nie chodzi o to, że sobie z nimi nie radzę tylko bardzo często moje rozwiązanie różni się bardzo od tego z oznaczeniem best practice.
Przykładowo, trzeba napisać kod który policzy liczbę samogłosek w ciągu znaków.
Ja napisałem tak jak poniżej, a w komentarzu dam to co jest najlepszym rozwiązaniem.
Oprócz tego, że mój kod jest za długi to w czym jest gorszy od tego poprawnego?
#naukaprogramowania #naukajavy
Pobierz BrakWolnegoLoginu - Hej Mirki, od kilku dni uczę się #java i mam pytanie, skąd uczyć ...
źródło: comment_1621445241uQbLipx0pdXmGZ0cq2IHLR.jpg
  • 15
@BrakWolnegoLoginu: Jest za długi ( ͡° ͜ʖ ͡°) generalnie jeśli jakieś rozwiązanie jest dostępne od ręki w języku, w którym programujesz, to jest duża szansa, że będzie wydajniejsze niż cokolwiek co byś samemu napisał. W programowaniu nie chodzi o to by wynajdywać koło od nowa.
@BrakWolnegoLoginu: Ja bym sugerował zacząć od przejścia w dokumentacji języka przez wszystkie podstawowe typy danych wraz z dostępnymi na nich metodami. Przejrzyj skrzynkę z narzędziami zanim zaczniesz robić własny młotek, bo to zadanie to raczej entry level - i jakby co, regexów też zwykle nie pisze się z palca, tylko szuka po necie najlepszego rozwiązania ( ͡° ͜ʖ ͡°)
@BrakWolnegoLoginu: Tutaj na przykład rozwiązanie podane w komentarzu jest kreatywnym wykorzystaniem regexa i raczej sam byś na nie nie wpadł. Ale raczej przeglądając inne odpowiedzi znajdziesz jakieś gdzie robione jest praktycznie to samo tylko w bardziej zwięzły sposób. Powinieneś je poprzeglądać i postarać się znaleźć jakieś przydatne rozwiązania.

Głównym problemem twojej odpowiedzi jest "robienie wszystkiego na piechotę" zamiast użyć bibliotekę standardową. Przykładowo zamiast definiować tablicę arr możesz zrobić
Set vovels =
@BrakWolnegoLoginu:
public void test() {
String dupa = "Hello word";
long len = dupa.chars().filter(x->isVovel((char) x)).count();
System.out.println(len);
}

public boolean isVovel(char c){
List vovels = Arrays.asList('a','e', 'o', 'u', 'i');
return vovels.contains(c);
}
( ͡° ͜ʖ ͡°)