„A”, „an” i „the” w nazwach metod i funkcji: Jakie masz zdanie? [Zamknięte]

16

Jestem pewien, że wielu z nas widziało kiedyś takie nazwy metod:

  • UploadTheFileToTheServerPlease
  • CreateATemporaryFile
  • WriteTheRecordToTheDatabase
  • ResetTheSystemClock

Oznacza to, że nazwy metod są również poprawnymi gramatycznie zdaniami angielskimi i zawierają dodatkowe słowa, które czynią je jak prozą. Osobiście nie jestem wielkim fanem takich „dosłownych” nazw metod i wolę być pomocny, a jednocześnie być tak jasny, jak to możliwe. Dla mnie słowa takie jak „a”, „an” i „the” wyglądają po prostu niezręcznie w nazwach metod i sprawia, że ​​nazwy metod są niepotrzebnie długie, bez dodawania niczego użytecznego. Wolę następujące nazwy metod dla poprzednich przykładów:

  • UploadFileToServer
  • CreateTemporaryFile
  • WriteOutRecord
  • ResetSystemClock

Z mojego doświadczenia wynika, że ​​jest to znacznie częstsze niż inne podejście polegające na pisaniu dłuższych nazw, ale widziałem oba style i byłem ciekawy, co myślą inni ludzie na temat tych dwóch podejść.

Czy jesteś w obozie „nazwy metod, które brzmią jak proza”, czy „nazwy metod, które mówią, co mam na myśli, ale czytają na głos, jak zły obóz tłumaczenia z języka obcego na angielski”?

Mike Spross
źródło
7
Nigdy nie widziałem metod o takich nazwach WriteTheRecordToTheDatabase. Gdyby ktoś to sprawdził, rozmawiałby poważnie.
Tim Robinson
13
Please”? Wow
konfigurator
3
Chciałbym tylko dodać, że wordpress ma funkcje pomocnicze w szablonach, takie jak „the_contents (),” „get_the_post () itp.”. To mnie boli.
Carson Myers,
1
@Carson Myers Hah, to doskonały przykład tego w świecie rzeczywistym. Musiałem stłumić wspomnienia z ostatniego razu, gdy patrzyłem na kod WordPress :-)
Mike Spross

Odpowiedzi:

21

Zgadzam się, że metody prozy są do kitu z jednym wyjątkiem:

Przypadki testu jednostkowego

Zazwyczaj nigdy nie są one wywoływane w kodzie i pojawiają się w raportach z testów. W związku z tym przydatne są odczyty z nieco większą prozą:

  • AddacACustomerOrderFailWhenCustomersIdIsInvalid: nie powiodło się
  • OutOfBoundsPriceReturnsAnError: Passed
  • CanDeleteAnEventFromASeason: zaliczony

Nawet tego należy robić oszczędnie, ale widzę to jako co najmniej jeden przypadek, w którym dodatki gramatyczne mogą nieco ułatwić wyrażenie tego, co minęło, a co nie. Dzieje się tak, chyba że Twój język / framework zapewnia dobry mechanizm opisów testów w odczycie testu innym niż nazwy metod, w którym to przypadku zignoruj ​​również ten.

Fishtoaster
źródło
1
+1 za dobry przykład tego, gdzie nazwy metod prozy mogą być rzeczywiście korzystne. To zabawne, bo teraz o tym wspomniałeś, że nie zrobił tego specjalnie przy pisaniu nazwy testów jednostkowych, a konkretnie, więc wiedziałem co do cholery robi test kiedy prowadził je później.
Mike Spross,
Jest to przydatne i pasuje do sugerowanej MethodUnderTest_Condition_ExpectedBehaviour konwencji Roya Osherove'a nazywania testów jednostkowych. na przykład AddOrder_WithInvalidCustomerId_Fails, CreateItem_WithOutOfBoundsPrice_ReturnsErroriDeleteEvent_EventExistsInSeason_Succeeds
StuperUser
@StuperUser dla oczekiwanego zachowania, faktycznie umieściłeś oczekiwany wynik testu, a zatem nie mam pojęcia, jaką metodę ma zwrócić.
ediblecode
@danRhul Uczciwy punkt, nie byłem wystarczająco jasny; .._AdditionFailsi .._DeletionSucceedspowinno być lepiej. Podałem wynik metody, ale jak zauważyłeś, mogą być mylone z terminologią zaliczania / niepowodzenia.
StuperUser
10

Parafrazując Lawrence'a z Office Space ...

Nie, nie, człowieku, wierzę, że jeśli ktoś, z kim tu pracowałem, nazwałby funkcję „UploadTheFileToTheServerPlease”, to on…

Grandmaster B.
źródło
10

Takie „długie” nazwy nie brzmią jak proza . Gdy są sami - być może, ale wraz z resztą kodu, robią jeszcze więcej bałaganu. Sprawdź to:

bool ResultOfTheUpload
      = UploadTheFileToTheServerPlease(TheNameOfTheFile, TheServersAddress);

Yuuuuk! ..

To nie jest poprawny tekst w języku angielskim i w żadnym języku programowania nie będzie wyglądał jak jeden. Więc nie ma sensu wydawać bajtów na artykuły.

P Shved
źródło
1
Dobry przykład, dlaczego tak bardzo nie lubię tego podejścia! Kiedy pisałem pytanie, skupiałem się tylko na nazwach metod, które same w sobie brzmią jak proza, ale zgadzam się z tobą: bardzo trudno jest sprawić, by kod wywołujący był czytany jak proza, więc nie ma sensu, aby nazwy poszczególnych funkcji brzmiały jak napisane Język angielski.
Mike Spross,
3
Sugerujębool ResultOfTheGentlyUploadOfTheFileToTheServer
Wizard79
Współpracowałem z osobą, która stworzyła standardy firmy, w których należy stosować „Zmienną” i „Metodę”. Ta sama osoba lubiła też ustawiać wszystkie wiersze kodu w linii pionowo.
Chris
7

Z perspektywy programistów „UploadFileToServer” ma większy sens i jest łatwiejszy do odczytania i zrozumienia niż „UploadTheFileToTheServerPlease”.

Bardziej niż angielska gramatyka, czytelność i zrozumiałość mają większe znaczenie w programowaniu!

Gopi
źródło
Całkowicie się zgadzam .. jeśli czytam kod napisany po raz pierwszy przez kilka dni, jestem pewien, że doprowadzę mnie do szaleństwa ...
Naveen
@Naveen: Pracowałem z takim kodem i przy pierwszej okazji zmieniłem nazwy wszystkich tych metod. I nie jestem pewien, czy był to tylko programista, czy nie, ale myślę, że istnieje tendencja do tego, aby funkcje wykonywały wiele rzeczy, pisząc je jako zdania, tj. UploadTheFileAndProcessItAndEmailTheOrdersToTheCustomersChociaż mam nadzieję, że w rzeczywistości nie jest tak źle.
Mike Spross,
@Mike Następnie zmieniłbym metodę na 2 różne metody;)
Gopi
2

Biorąc pod uwagę, ile literówek ma moje życie, skończę

* UploadTehFileToTehServerPleaz
* WriteTehRecordToTehDatabase
* ResetTehSystemClock
* ICanHazTehCheezburger

Poważnie, spojrzałbym nawet na nazwę mojej klasy. Gdyby moja klasa nazywała się „Plik”, prawdopodobnie po prostu bym poszedł

*UploadToServer
*DownloadFromServer

Tak by było

   File file = new file;
   file.UploadtoServer(ServerAddress);

To tylko trywialny przykład, ale mam nadzieję, że jest to wystarczająco ilustracyjne.

MIA
źródło
Hehe W rzeczywistości widziałem, jak „Teh” wkrada się w nazwy metod zgodnie z wzorcem nazewnictwa „angielskim”. Co do twojej drugiej kwestii: całkowicie się zgadzam, redundancja w nazwach metod jest moim kolejnym wkurzeniem ( File.UploadFileToServer... ugh).
Mike Spross,
0

Osobiście mnie to nie obchodzi. Widziałem ich i nie przeszkadzają mi. Nawet o nich nie myślałem, dopóki inny programista nie zaczął o nich mówić. Uznałem za szokujące, że komuś tak bardzo zależy na czymś, co tak mało ważne. Mam na myśli, że był z tego powodu zły. Ale to było na początku mojej kariery, około 11 lat temu, i od tego czasu odkryłem, że programiści gniewający się na drobne rzeczy są w rzeczywistości dość powszechny. To dlatego menedżerowie programistów tak dobrze zarabiają. Muszą codziennie kontaktować się z programistami.

Wolałbym to zobaczyć niż „UL_FlToSrv”.

ElGringoGrande
źródło