Jak nazywasz funkcje / zmienne / etc, kiedy nie możesz wymyślić dobrego imienia? [Zamknięte]


13

Kiedy definiujesz funkcję / zmienną / etc i nie jesteś pewien, jak ją nazwać, jak ją nazwiesz? Jak wymyślić imię?

Jeśli użyjesz nazwy tymczasowej jako karty miejsca, dopóki nie nadasz jej prawdziwej nazwy, jakiej nazwy tymczasowej używasz?


aktualizacja

I zostały z wykorzystaniem takich rzeczy WILL_NAME_LATER, NEEDS_NAMEalbo TO_BE_NAMED. Miałem nadzieję, że istnieje przyjęta konwencja, tak naprawdę miałem nadzieję, że jeśli użyję tej przyjętej konwencji, moje IDE podświetli nazwę, dopóki jej nie zmienię.


Ostrożnie używaj wszystkich wielkich liter w nazwach zmiennych. Według popularnej konwencji oznacza to zmienną globalną.
gąbka

@sunpech, wiem, używam tej konwencji nazewnictwa również dla stałych. Ale myślę, że wielkie litery wyróżniają ją, więc nie zapomnę zmienić jej nazwy. Nie zostawiam tego tak długo nazywanego.
JD Isaacks

3
Dla wszystkich, którzy mówią, nigdy nie powinieneś mieć problemu z wymyśleniem nazwy ... Nawet Jon Skeet czasami nie może: stackoverflow.com/questions/521893/…
JD Isaacks

@JohnIsaacks Myślę, że powinieneś odważyć się chwilowo . Zbyt wielu ludzi czyta to pytanie i zamienia kod w coś świętego. Szczerze mówiąc, tak, możesz pisać niechlujny kod SZCZEGÓLNIE, kiedy próbujesz przejść do czegoś ważniejszego. Nie wytrawiamy tutaj kodu w kamień.
gąbka

1
Myślę, że konwencją dla czegoś takiego byłoby dodanie TODO do kodu wraz z wyjaśnieniem, dlaczego musisz go zaktualizować. Wiele narzędzi może analizować te TODO i wyświetlać listę wszystkich rzeczy do zrobienia.
Eduardo Scoz

Odpowiedzi:


29

Niemożliwe jest wymyślenie nazwy artefaktu, który chcesz zaprojektować. Być może nie podoba ci się nazwa, którą wymyślisz, ponieważ nie jest zwięzła ani seksowna, ale jeśli będziesz się nad tym zastanawiał, skończysz z źle nazwanym artefaktem.

Załóżmy, że masz coś, co pomaga konstruować obiekty, ale nie wiesz, że zwykle nazywa się to fabryką. Po prostu nazwij to ObjectCreator. To brzmi tępo, ale przynajmniej jest jasne.

Załóżmy, że masz słownik konwertujący nazwy hostów na adresy IP. Po prostu śmiało i nazwij to HostnamesToIpAddresses. Jasne, że jest długi, ale mówi dokładnie, co robi.

Niemożność wymyślenia nazwy czegoś oznacza, że ​​nie wiesz, co on robi, co oznacza również, że masz przed sobą większy problem.


8
Zawsze chcę spoliczkować osoby, które narzekają na to, że identyfikatory są zbyt długie (gdy są to tylko trzy lub cztery słowa). Nasza szybkość pisania nie powinna nas ograniczać, a jeśli tak, powinniśmy spojrzeć na ABCD i nauczyć się pisać!
dash-tom-bang

1
+1 z powodu "The inability to come up with a name for something means you don't know what it is doing". Myślę, że to naprawdę ważna kwestia. Uświadomienie sobie tego pomaga znaleźć dwuznaczności i niejasności w kodzie.
BiAiB,

34

Zawsze staram się nadawać moim zmiennym i funkcjom świetne nazwy .

Jeśli nie mogę wymyślić dobrego imienia, zadowolę się dobrym .

Jeśli nie mogę wymyślić dobrego imienia, użyję dobrego imienia .

Nigdy przez 15 lat profesjonalnego programowania nie byłem w stanie wymyślić przyzwoitego nazwiska.


6
+1 za bycie poetyckim.
gąbka

1
... jednak 15 lat i 6 miesięcy temu urodził się Microsoft Bob.
VirtuosiMedia,

12

Jeśli nie możesz wymyślić dobrego imienia dla zmiennej lub funkcji, albo nie rozumiesz, co robisz, albo masz kiepski projekt. Tak czy inaczej, uderzenie jakiejkolwiek arbitralnej nazwy, takiej jak „x” (chyba że masz do czynienia ze współrzędnymi), nie rozwiąże twojego dylematu; tylko pogorszy to sytuację, a ból będzie większy.


8
Nie zgadzam się. Deweloperzy nie zawsze rozumieją terminologię firmy. Heck, nawet klient może nie być w stanie przekazać terminologii podczas zbierania wymagań - nie mówiąc już o zrozumieniu własnej firmy! Ale to nie powstrzymuje produkcji oprogramowania. Nie powstrzymuje to tworzenia prototypów. Lub nawet kod jest wyrzucany z powodu braku zrozumienia. Ale kod w takich sytuacjach nadal musi zostać wyprodukowany i dostarczony.
gąbka

3
@ sunpech Przepraszam, ale to trochę przerażające. Czy próbujesz nam powiedzieć, że pisanie kodu losowego często nie wie, co właściwie robi? Jeśli czegoś nie wiesz, włóż trochę wysiłku, aby się dowiedzieć, a unikniesz problemów w przyszłości.
Adam Byrtek,

@AdamByrtek Nie, nie mam na myśli tego. Mówię o tym, że programista i zespół nie zawsze mają najlepszą wiedzę o tym, czego chce klient. Niektórym klientom trudno jest wyjaśnić, czego chcą lub nie wiedzą, czego chcą. Zdarza się zły kod. W projektach pojawiają się problemy, od złych wymagań po nierealne terminy. To jest rzeczywistość. Nie ma idealnego świata, w którym deweloper rozwiązałby wszystkie niewiadome, w którym klienci są idealni, a terminy są dokładne. Kod wygenerowany dla prototypów ma zostać wyrzucony. Ale kodowanie wciąż musi się zdarzyć.
gąbka

ciąg dalszy ... Nie mówimy o tworzeniu kodu produkcyjnego ani kodu końcowego tuż przed odprawą. Mówimy o tym, jak nazwać coś, czego jeszcze nie rozumiemy w pełni - aby zacząć od czegoś, co jest niejasne z prawdopodobnie dobrego powodu (na przykład: nikt w zespole jeszcze tego nie rozumie, może nie nawet klient). Ale rzeczy muszą iść do przodu w oparciu o to, co wiadomo.
gąbka

1
@sunpech: Jedynym miejscem, które widziałem fooi barktórego używam w kodzie, są małe fragmenty kodu używane do przedstawienia koncepcji. Jasne, też się potykam, kiedy wymyślam nazwiska, ale nigdy nie znalazłem się w tak złej pozycji, w której foobyła to jedyna rozsądna opcja. Gdyby tak się stało, to tak naprawdę nie wiem, co do diabła robię, i muszę wrócić do tablicy kreślarskiej i pseudokodu, dopóki nie będę wiedział, co robić.
gablin

5

To pytanie, a zwłaszcza odpowiedzi, przerażają mnie bezsensownie. Wiesz, ktoś będzie musiał zachować kod, w którym właśnie nadałeś zmiennej „Puchar”. Jeśli nie masz szczęścia, to ktoś będzie tobą!

Masz zmienną. To jest coś. W każdym razie reprezentuje coś. I rzeczy mają nazwy. W ten sposób wiesz, że to są rzeczy! Czy naprawdę mówisz mi, że musisz nazwać rzecz po innej rzeczy, ponieważ nie możesz wymyślić nazwy rzeczy samej?

Iteratory należy nazwać I. Zagnieżdżone iteratory są prawdopodobnie błędem, ale jeśli ich potrzebujesz, przejdź przez resztę samogłosek, w kolejności (a, e, o, u i bóg, pomóż mi, tak, czasami y).

Poza tym po prostu nazwij to, co to jest i gotowe!


9
Muszę protestować! Oczywiście wewnętrzny iterator powinien być nazwany j, a ten wewnątrz tego k . Wieloletnia tradycja matematyczna spogląda przez ramię!
Frank Shearar

Huh Nigdy nie robiłem j i k. Widzę jednak, że to rozsądne.
Dan Ray

8
Jednym z powodów, dla których Dijkstra był tak naturalny dla informatyki, było to, że jego nazwisko zawierało trzy najczęstsze zmienne iteracyjne w odpowiedniej kolejności.
glenatron

3
@glenatron: Wreszcie sposób na zapamiętanie, jak przeliterować to imię!
konfigurator

4

Jeśli nie mogę od razu wymyślić doskonałej nazwy, używam tymczasowo „dobrej” nazwy, a następnie kontynuuję kodowanie. Przynajmniej będzie to coś, co odpowiednio opisuje przedmiot, nawet jeśli nie jest idealny . Prawie zawsze, zanim skończę pisać pierwszą wersję tego fragmentu kodu, przydarzyło mi się bardziej idealne imię. Dzięki procesowi kodowania moje zamiary dotyczące tej konkretnej zmiennej stają się wyraźniejsze. (Z drugiej strony czasami przychodzi mi do głowy, że zmienna, która była początkowo źle pomyślana, usuwam na korzyść czegoś innego.)


3

Nazywam to tym, co moim zdaniem powinna zrobić funkcja - coś, co mniej więcej oddaje intencję. Po napisaniu treści funkcji uznaję za oczywiste, jak ją nazwać i w razie potrzeby wrócić i zmienić jej nazwę.


1
To nie zawsze działa, szczególnie gdy deweloper może nie znać terminologii, a nawet intencji firmy / branży. Powinno się zastosować coś bardziej ogólnego i oczywistego, aby przekazać, że należy to później zdefiniować i zmienić. OP wydaje się pytać, kiedy intencja jest nieznana i co należy początkowo wykorzystać. Jeśli nazywanie jest czymś, co mniej więcej przekazuje zamiar, to dobre imię już nie jest daleko.
gąbka

1
@ sunpech Poważnie, nawet kiedy zaczynałem pracę w dość specyficznej domenie, nie miałem problemu z wymyśleniem nazwy funkcji. Może po prostu muszę napisać więcej funkcji. :)
Adam Lear

1
@sunpech: Jak napisać funkcję, nie wiedząc, co ona robi?
konfigurator

4
@sunpech: Nie powiedziałem tego. Powiedziałem tylko, że nie możesz napisać funkcji, nie wiedząc, co ona robi. To nie jest możliwe. Nigdy nie widziałem, żeby to się stało i nie widzę, jak to się mogło stać. Może jestem głupi, ale kiedy nazwiesz funkcję DoFoo (), co do diabła umieścisz w niej?
konfigurator

2
@ sunpech: Nigdy nie mówiłem, że imiona muszą być „dobre” od samego początku. Po prostu nie widzę, jak wpadłbyś w sytuację, w której chciałbyś stworzyć funkcję, ale nie wiesz, co ona zrobi.
konfigurator

2

bla i bar . Ponieważ na razie nie ma sensu nazywanie funkcji / zmiennych, używam kombinacji Foo i / lub Bar z tym, co próbuję zdefiniować.

Ułatwia to wyszukiwanie / znajdowanie później, gdy lepiej rozumiem, jak powinien się nazywać.

Zobacz także Foobar na wikipedii .

Terminy foobar, foo, bar i baz są czasem używane jako nazwy symboli zastępczych (zwane również zmiennymi metazntaktycznymi) w programowaniu komputerowym lub dokumentacji związanej z komputerem. Zostały użyte do nazwania jednostek, takich jak zmienne, funkcje i polecenia, których cel jest nieistotny i służą jedynie do przedstawienia koncepcji. Same słowa nie mają znaczenia w tym zastosowaniu. Foobar jest czasem używany sam; foo, bar i baz są czasami używane w tej kolejności, gdy potrzebnych jest wiele jednostek.


1

Poprzedź swoją funkcję czymś i nadaj jej teraz najlepszą nazwę. Na przykład funkcją, która zapisuje-wszystkie-produkty-dla-wybranego-użytkownika-do-bazy danych może być RENAME_SaveAllProductsForTheSelectedUserToTheDatabase()


Oczywiście w tym przypadku należy po prostu nazwać funkcjęSaveAllProductsForTheSelectedUserToTheDatabase()
konfigurator

1

Jakkolwiek nazywam te trudne do nazwania zmiennymi, robię //TODO find a better namekomentarz, aby móc później wrócić do zmiany jego nazwy

Zwykle, kiedy zaczynam używać zmiennej / funkcji / klasy, znajduję dla nich lepszą nazwę.


0

Najlepiej jest szybko podać dobre imię, mając na uwadze kod, niż czekać na później, kiedy będziesz żałować, że nie nazwałeś go dobrze!


0

Prawie nigdy nie mam problemu ze znalezieniem dobrych, opisowych nazw ... ale czasami nazewnictwo staje się dość zbędne, ponieważ nazwy klas i zmiennych są bardzo podobne. WebClient webclient = nowy Webclient (uri); ... i tym podobne.


0

Czasami używam zzzz tymczasowo.

Dobrą zasadą, która Ci pomoże, jest:

  • Czy zwraca wartość logiczną i nie wywołuje żadnych skutków ubocznych: Następnie użyj przymiotnika (zacznij od jest, był), ale nigdy czasu przyszłego.
  • Czy zwraca inny typ i nie wywołuje żadnych skutków ubocznych: Użyj rzeczownika.
  • Czy nic nie zwraca, tylko zrób coś: użyj czasownika.
  • Czy to klasa: użyj rzeczownika.

-1

W przeszłości używałem boba , ale byłaby to jedyna niepoprawnie nazwana zmienna w funkcji / skrypcie, ponieważ w przeciwnym razie kod szybko stałby się nieczytelny.

(Bob jest kacem z dni uni - unikanie wywoływania zmiennych Bob i Fred)

Cieszę się używać I jako licznika.

Lepiej używać znaczących nazw, nawet jeśli nie są krótkie i zgryźliwe.


Pracowałem z facetem, który używał takich nazw w swoich aplikacjach i klasach w swoich aplikacjach. Być może nie trzeba dodawać, że jego kod był ogólnie bardzo słaby.
dash-tom-bang

2
@ dash-tom-band: Myślałem, że jego kod był ogólnie bardzo bob.
konfigurator

Jeśli potrafię przekształcić moje imię w jakiś węgierski zapis do wyliczenia, zwykle robię to, nawet jeśli jest to trochę rozciągnięte. TPropertyEnhancmentTypeEditor = (PETEObtuse, PETEAwful, PETEDispicable);
Peter Turner,

-1

Jeśli absolutnie nie mam pojęcia, jak nazwać zmienną, co nie zdarzyło się od ponad dwudziestu lat ... imiona starych dziewczyn lub kobiet, które chciałbym, żeby były dziewczynami. Ostatni kod z tymi identyfikatorami został usunięty z produkcji kilka lat temu.





-3

Zwykle używam rzeczy na biurku.

  • Puchar
  • Alt
  • bla
  • b / a / c (śmieci pojedyncze litery)
  • alk (wymawiane śmieci wieloliterowe)

Skłaniam się również do nazw ogólnych (przynajmniej dla funkcji):

  • zamiana
  • proces
  • reviseVar
  • majstrować

To jest jednak tymczasowe. I przysięgam, nic nie czyni go w repozytorium, znacznie mniej produkcji.

...


Zawsze czuję się brudny, ale czasami najbardziej widoczną nazwą metody jest „Go” lub „DoIt”. Ilekroć mogę wymyślić lepszą nazwę, robię to, ale czasami tak naprawdę jest „wykonaj pracę, którą sugeruje nazwa programu”. Jest to jednak zbyt długo, aby użyć nazwy funkcji. :)
dash-tom-bang

@ dash-tom-bang: Z jakiegoś powodu runwygląda znacznie lepiej niż go. Może dlatego, że wszyscy chcielibyśmy, aby nasze programy były szybsze.
konfigurator
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.