Wpis z mikrobloga

12/100 dni z książką

“W wielu przypadkach kod mógłby zupełnie obejść się bez komentarzy [...] Co wolelibyśmy zobaczyć? To:

if((employee.flags & HOURLY_FLAG) && (employee.age > 65))
czy to:

if(employee.isEligibleForFullBenefits())


#feaoftruss #czystykod #programowanie #programista15k #webdev #gamedev

Podobało się? To zaplusuj i zapisz się do wołania (link w stopce)

************

[Chcesz być wołany?]
  • 30
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@wykop_hejter: kluczowe jest chyba to co napisałeś "większość osób tak nie robi"( ͡° ͜ʖ ͡°) Wydaje mi się, że ten przykład przedstawia pewną dobrą praktykę, której często nie widziałem w swoim jak i czyimś kodzie
  • Odpowiedz
@FEAofTruss: A mi się wydaje, że to:

if((employee.flags & HOURLY_FLAG) && (employee.age > 65))

może być ciałem metody employee.isEligibleForFullBenefits()

Można też nie bawić się w takie rzeczy, że klasa employee która przechowuje zapewne informacje o pracownikach jest odpowiedzialna też za sprawdzanie ich, a napisać zgrabny interfejs który będzie się zajmował takimi rzeczami ( ͡º ͜ʖ͡º)
  • Odpowiedz
@FEAofTruss: ostatnio w jednej z klas miałem zmienna EE_Serial i ktos tam wcisnął zupełnie cos innego niż nazwa by mówiła a zeby było śmieszniej to "po drugiej stronie tez tak było.
  • Odpowiedz
@FEAofTruss: Do tego w takim wypadku employee.flags oraz employee.age mogą być zadeklarowane jako pola prywatne gdyby miały być pobierane tylko i wyłącznie przez metodę isEligibleForFullBenefits lub inne metody publiczne tej klasy ()
  • Odpowiedz
@bi-tek: te prefixy to zlo. Lepiej już chyba wtedy intelisense wylaczyc...

Z długością bym tez nie przeszadzal ;-) a inna sprawa że wolał bym zwrocic tutaj flage Benefits. ALL która by w sobie wszystko miała. Łatwiej wtedy sprawdzac czy dany obiekt ma prawo do jednej rzeczy. Bo nie będzie if konkretna lub if all
  • Odpowiedz
@FEAofTruss. Jesli chodzi o mnie to zalezy czy potrzebujesz takiego warunku w aplikacji raz czy wiecej razy jak jest potrzebny tylko raz to nie tworzylbym ekstra metody na takie fanaberie. W moich apkach czesto potrzebuje globalne booleany i wtedy robienie metod to bardziej obowiązek. Trzeba sobie zawsze zadac k.rewsko wazne pytanie. Czy jest potrzebna jest lokalna zmenna czy wyzszego levelu. Moim zdaniem to nie kwestia elegancji tylko potrzeb.
  • Odpowiedz
@ameliniummm: Globalne booleany to raczej nie jest potrzeba =] No i przykład jest taki mało życiowy, ale chodzi o przekaz pewnej idei - taka nazwa metody nie wymaga dokumentacji ani znajomości 'reguł biznesowych' tak naprawdę. Wchodzisz w taki kod i już to rozumiesz, a jak jesteś ciekawy tych reguł to możesz wejść w środek - tam będzi to co było pokazane jako 'mniej czytelne' - Zresztą, zapomnij o tym jak
  • Odpowiedz
@nilphilus jaj juz wczesniej napisalem. Wszystko zalezy od potrzeb a nie milosci do konkretnego rodzaju rozwiazania. Dobra..inaczej ( ͡ ͜ʖ ͡)Jak potrzebuje globalny boolean to robie interfejs wywolywany metoda w stylu jak wyzej. IsSomethingOn. I tak..nie trzeba sie produkowac opisow wtedy. Globalne zmienne sa fuj( ͡° ͜ʖ ͡°)-
  • Odpowiedz