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
BrakWolnegoLoginu - Hej Mirki, od kilku dni uczę się #java i mam pytanie, skąd uczyć ...

źródło: comment_1621445241uQbLipx0pdXmGZ0cq2IHLR.jpg

Pobierz
  • 15
  • Odpowiedz
@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.
  • Odpowiedz
@BrakWolnegoLoginu: a myslisz ze w pracy jak bedziesz robil xD?
irl praca programisty to nie wynajdowanie od nowa algorytmow sortowania jak na studiach xD tylko korzystanie z gotowych bibliotek ktore maja wszystkie te funkcje zaimplementowane xD
  • Odpowiedz
@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 ( ͡° ͜ʖ ͡°)
  • Odpowiedz
@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 = Set.of('a','e','i','o','u');

i następnie zastąpić wewnętrzne przeszukanie przy użyciu
  • Odpowiedz
@wycior_maly: Jak już chcesz kogoś uczyć to chociaż z czegoś o czym masz pojęcie. Nic w tym przypadku nie liczy się wiele razy bo tu nic liczone nie jest. Tablice mają zmienną gdzie jest trzymana ich długość...
  • Odpowiedz
@wycior_maly: Nie mąć koledze w głowie. Zgodnie ze specyfikacją jvm atrybut length jest stały i w żadnym wypadku nie jest wyliczany w trakcie wywołania. Tak więc wyciąganie tego do zmiennej z powodów wydajnościowych nie ma sensu.
  • Odpowiedz