@malyTrochę nie jarzę, jeśli miałbym się trzymać zasady pojedynczej odpowiedzialności to czym byłaby klasa o nazwie WikiPage? |
WikiPage to przykład wyrażenia rzeczownikowego, a ten wątek na forum nie jest o SRP, więc radzę poszukać informacji w Internecie. Ogólnie mówiąc: odpowiedzialność WikiPage zależy od tego, czym
dokładnie zarządza, więc jak chcesz sobie odpowiedzieć na to pytanie, to zaprojektuj sobie dokładnie kod.
@DejaVuNie zgodzę się z Tobą odnośnie unikania notacji węgierskiej, czy jakiejkolwiek innej. |
Tak jak już to podkreślił @Alueril, post był konkretnie o notacji węgierskiej i innych konwencji nie skreślam. Ba, napisałem nawet, by mieć dokładnie jedną konwencję w całym projekcie i jej się trzymać:
Jedna konwencja nazewnictwa – jeśli pisząc w Pythonie w pewnym miejscu dla nazw klasy zastosujesz PascalCase'a, dla zmiennych lokalnych camelCase'a, a dla metod snake_case'a – zachowaj tę konwencję w całym projekcie. |
Inne duże projekty również mają jakąś notację, więc Twoja sugestia, że IDE w czymś pomaga i tym samym nie należy stosować notacji jest błędna, bo IDE nie zawsze radzi sobie z projektem, a poza tym czytając kod deweloper nie ma ochoty najeżdżać co i rusz na dymek, aby stwierdzić jaka jest to de-facto zmienna (lokalna/argument metody/pole klasy itp). |
1. Odnośnie konwencji - patrz wyżej.
2. Nigdy nie pracowałem nad ogromnymi projektami, więc to jest cenna uwaga - nie wiem jak sobie IDE wtedy radzą, ale myślę, że raczej są one tak napisane, by takie funkcjonalności jak podpowiadanie nazw czy kolorowanie argumentów funkcji działało.
3. Skoro IDE sobie nie radzi, by np. pokolorować daną zmienną jako argument metody, to skąd ma wziąć informacje do dymka? Wiem, że może wtedy przeszukać projekt, ale sądzę, że raczej środowiska są na tyle inteligentne, by trzymać gdzieś w cache'u sparsowany projekt i ładować do RAM-u te informacje, z których się aktualnie korzysta (np. otwarte pliki z kodem w edytorze).
Poza tym jak są mechanizmy do robienia codereview, to nie są one zintegrowane z IDE. Jak robisz diff-a zmian to również nie widzisz czy zmienna należy do klasy czy nie. Jak przeglądasz zmiany w SVN-ie czy w GIT to również nie masz IDE, które podpowiadałoby jakiego typu jest dana zmienna i w jakim zasięgu się znajduje. |
Prawda. IDE ma bowiem wspomagać pisanie kodu. Dobra nazwa powinna sama sugerować jakiego jest typu, a określenia zasięgu też nie powinno być trudne - metody powinny być krótkie, więc czytając kod powinieneś pamiętać które z tych, prawdopodobnie kilku, zmiennych są lokalne. Choć mówiąc o długości metod wykraczamy poza nazewnictwo zmiennych, ale jak widać jest to ze sobą powiązane, więc zależy od preferencji konkretnego programisty.
@akwesKilkanaście stron w Kodzie Doskonałym oraz kolejne kilka o nazwach funkcji ;) również kilka stron w Programming: Principles and Practice Using C++. |
Jeśli mnie pamięć nie myli, to te książki nie uczą programowania od zera, a są dedykowane osobom, które te wiedzę posiadają.
Eee? Nie używaj komentarzy bo nie każdy ma IDE, unikaj notacji węgierskiej bo każdy ma IDE :) |
Mieszasz konteksty. Kod czyta się nie tylko w IDE (więc utwórz bardziej opisową nazwę tak, by można było usunąć komentarz bez utraty informacji), ale pisze się go tylko w IDE, a przynajmniej roztropniejsi tak robią, więc lepiej sobie nie utrudniać pracy z IDE. Poza tym napisałem, że
w razie niepewności, bowiem dobra nazwa sama Ci powie, jakie typu jest dana zmienna, a IDE ma
w ostateczności przypomnieć Tobie typ (co raczej często zdarzać się nie będzie).
Też się nie zgodzę. Nazwa powinna być tym krótsza im mniejszy ma zasięg. |
Przeczytałeś to, co było pod zacytowanym przez Ciebie nagłówkiem? Jest tam napisane, by mając wymyślonych kilka dobrych nazw, wybrać jedną z tych krótszych. Z kolei w zacytowanych słowach Roberta Martina (i później także przeze mnie opisanych) było wyjaśnione, że dobra nazwa, to taka, która zawiera wystarczająco dużo informacji, by
jednoznacznie określić wszystko, co można powiedzieć o danej zmiennej, klasie tudzież metodzie.
A tak poza tym - krótki to pojęcie względne ;)
Ogólnie rzecz biorąc po ogólnych 'oględzinach' przykładowych kodów, porady są słuszne odnośnie tego jak nazywać zmienne. |
A tak w ogóle to generalnie fajny wpis :) |
Miło mi to przeczytać i dziękuję za Wasze uwagi oraz opinie. Jak ktoś ma jeszcze coś do powiedzenia, to czekam :)
Ogólnie rzecz biorąc, jak napisałem na początku postu, nie wszyscy muszą zgodzić się ze wszystkimi radami, które zostały w tym poście zawarte. Posiadam relatywnie mało doświadczenia i cały czas się uczę. Poza tym kwestia nazewnictwa jest zależna w dużym stopniu od programisty, a każdy ma swoje ulubione konwencje, co z resztą @Alueril już zaznaczył podając przykłady :)