Nigdy nie używaj długiego słowa, jeśli wystarczy zdrobnienie.
Nie wydaje mi się, żeby twoja teza o „długości nazwy metody jest proporcjonalna do długości metody” naprawdę ma sens.
Weź podany przykład: „getNumberOfSkinCareElitableItemsWithinTransaction”. Wydaje mi się, że to robi tylko jedną rzecz: liczy liczbę pozycji w transakcji, które należą do określonej kategorii. Oczywiście nie mogę oceniać, nie widząc właściwego kodu metody, ale wydaje mi się to dobrą metodą.
Z drugiej strony widziałem wiele metod o bardzo krótkich i zwięzłych nazwach, które wykonują dużo pracy, na przykład „processSale” lub zawsze popularny „doStuff”.
Myślę, że trudno byłoby podać sztywną regułę dotyczącą długości nazwy metody, ale cel powinien być: wystarczająco długi, aby przekazać, co robi funkcja, wystarczająco krótki, aby był czytelny. W tym przykładzie myślę, że „getSkinCareCount” prawdopodobnie byłoby wystarczające. Pytanie brzmi, co musisz odróżnić. Jeśli masz jedną funkcję, która zlicza w transakcjach przedmioty kwalifikujące się do pielęgnacji skóry, a drugą, która liczy pozycje kwalifikujące się do pielęgnacji skóry w czymś innym, wówczas funkcja „withinTransactions” dodaje wartości. Ale jeśli mówienie o takich przedmiotach poza transakcją nie ma żadnego znaczenia, to nie ma sensu zaśmiecać nazwy tak zbędnymi informacjami.
Po drugie, myślę, że jest szalenie nierealistyczne przypuszczenie, że nazwa o dowolnej możliwej do zarządzania długości powie ci dokładnie, co robi funkcja we wszystkich, z wyjątkiem najbardziej trywialnych przypadków. Realistycznym celem jest stworzenie nazwy, która daje czytelnikowi wskazówkę, którą można później zapamiętać. Na przykład, jeśli próbuję znaleźć kod, który oblicza, ile antymaterii potrzebujemy, aby osiągnąć prędkość warp, jeśli spojrzę na nazwy funkcji i zobaczę „calibrateTransporter”, „firePhasers” i „calcAntimatterBurn”, jest całkiem jasne, że pierwsze dwa to nie to, ale trzeci może być. Jeśli sprawdzę i stwierdzę, że to jest właśnie ten, którego szukam, łatwo będzie mi to zapamiętać, kiedy jutro wrócę, aby popracować nad tym problemem. To wystarczy.
Trzy długie imiona, które są podobne, są bardziej zagmatwane niż nazwy krótkie. Jeśli mam dwie funkcje o nazwie „calcSalesmanPay” i „calcGeekPay”, mogę szybko zgadnąć, która z nich jest tym, do czego. Ale jeśli nazywane są one „calculatorMonthlyCheckAmountForSalesmanForExportToAccountingSystemAndReconciliation” i „calculatorMonthlyCheckAmountForProgrammersForExportToAccountingSystemAndReconciliation”, muszę przestudiować nazwy, aby zobaczyć, która jest która. Dodatkowe informacje w nazwie prawdopodobnie przyniosą skutki odwrotne do zamierzonych w takich przypadkach. Zmienia myślenie trwające pół sekundy w myślenie trwające 30 sekund.