Wpis z mikrobloga

Mirki możecie ocenić mi jakość kodu? Wiem, że pewne zadania mają wiele rozwiązań ale wole nie karmić złych nawyków. To jest dla mnie stresujące jak udaje mi się rozwiązać problem a okazuje się, że można to było zrobić inaczej ( ͡° ʖ̯ ͡°)

Given a string, return true if it ends in "ly".
http://codingbat.com/prob/p103895
Moja wersja:

public boolean endsLy(String str) {

if (str.length() >= 2 &&str.substring(str.length()-2).equals("ly")) {
return true;
}

return false;
}

inna wersja:

public boolean endsLy(String str) {
return(str.length()>=2 && str.substring(str.length()-2).equals(“ly”));
}

#java #pytaniedoeksperta #programowanie
  • 19
@pottymouth:

Ja mam po prostu tak jak w tej innej wersji

public boolean endsLy(String str) {

return str.length() >= 2 && str.substring(str.length() - 2).equals("ly");

}

nie ma co rozmyślać specjalnie nad takim zadaniem, generalnie chodzi o to żeby był nawyk porównywania stringów metodą .equals bo to porównuje wartość Stringa w przeciwieństwie do == które porównuje czy dany string jest w tym samym miejscu w pamięci co inny.
`public boolean endsLy(String str) {

return(str.length()>=2 && str.substring(str.length()-2).equals(“ly”));

}


@pottymouth: zdecydowanie ten styl, z tym, że:
1. popraw formatowanie bo średnio czytelne (chyba, że wykop Ci popsuł)
2. nawias tuż po return (okalający) Ci nie jest potrzebny
3. nie sprawdzasz tu nullowego przypadku
@Viters: My możemy tak pisać. Też jestem za tym, poniekąd.
Ale co jak ktoś korzysta z Twojego API? Dasz mu info żeby nulli nie wrzucał w dokumentacji? Ale jego zespół pisze inaczej, bo nie narzucisz im tego, już nie Twój zespół niestety. Czyli zwrócisz NPE jeśli jednak wrzucą nulla. Teraz gościu wywołuje Twoją metodę 500 razy i 500 razy musi robić if(CośUtil.isNotEmpty(value)) {callYourMethod(value);} Albo catcha () na
@Sarseth: Zgadzam się, API faktycznie możemy dodatkowo zabezpieczać. Jednak z drugiej strony, przyjęcie jakiejś zasady nieodpowiadającej innemu zespołowi nie oznacza, że jest on skazany na męczarnie podczas implementacji. Można zastosować adapter, co jest dosyć dobrą praktyką. Nawet, gdy api w większości nam odpowiada.