No cóż, pozostaje nam się nie zgodzić :) Ty masz prawo być przekonany o swojej racji, jak i ja- na bazie doświadczeń i konsensusu. Dodam tylko że przykład z index nie jest odpowiedni, bo jeśli ktoś nie wie co to oznacza to brak mu po prostu wiedzy technicznej. Nijak ma się to do nazewnictwa metod czy zmiennych określających konkretne funkcje (nie w sensie matematycznym)
Patrz, tak to wyłumaczę.
Powiedzmy że masz grę, w której są zwierzęta Animal
(wilk, lis i prosiaki, WolfAnimal
, FoxAnimal
i PigAnimal
). Wilk może gryźć i zabić wolf.bite()
, wolf.kill()
. Lis może tylko ugryść fox.bite()
.
Chcę teraz dodać funkcję, która mi sprawdzi czy jakieś zwierzę zazwyczaj goni inne zwierzęta (jeśli tak, to np pomaluję go na czerwono). Nazwę tą funkcję animal.chasesAnimals()
(mimo że żadne ze zwierząt nie ma funkcji .chase()
). Nie dlatego że faktycznie sprawdzam czy ona może wykonać funkcję .chase()
(bo wtedy pewnie nazwałbym ją .canChaseAnimals()
, tylko dlatego że taki jest requirement biznesowy - pomaluję na czerwono te zwierzęta które gonią inne - .chasesAnimals()
.
.chasesAnimals()
jest w mojej opinii podobne do .resetsFlags()
. Według naszej rozmowy nie powinienem nazywać tej funkcji animal.chasesAnimals()
, tylko jakoś inaczej, animal.shouldChaseAnimals()
, animal.isAnimalCnsideredChased()
, etc; z czym się nie zgadzam. W mojej opinii zarówno .chasesAnimals()
jak i .resetsFlags()
są okej.
Mogę przyznać, że mogliście tego nie widzieć w swoich projektach i możecie nie być zaznajomieni z takim sposobem nazywania funkcji, ale to nie czyni ich zaraz niepoprawnymi albo mniej czytelnymi.