Dlaczego używamy nieopisowych wewnętrznych nazw kodowych? [Zamknięte]

16

Myślę, że używanie nazw kodowych jest dość powszechne. Nasza firma też z nich korzysta.

Ale moim głównym zmartwieniem jest to, że nazwy te zwykle nie są nigdzie udokumentowane. A znaczenie przekazuje się ustnie. A nazwy nie mają nic wspólnego z funkcją narzędzia lub encji, którą się nazywa.

Widzę wzorzec, że wewnętrzne maszyny testowe są nazwane po konstelacjach, a publiczne serwery są nazwane po greckich bogach. A projekty są nazwane na podstawie miejsc lub nazwy losowo wybranej gwiazdy filmowej lub nazwy postaci. Ale nie ma bezpośrednio dostępnych informacji z nazwy, czy maszyny są Windows czy Linux; Serwery 32 lub 64-bitowe. Lub o czym jest projekt.

Po prostu mam złe przeczucie, kiedy widzę komunikat zatwierdzenia VCS, że ktoś właśnie rozgałęził projekt „Gandalf”, projekt „Callanish” lub jakikolwiek inny projekt. Z tego samego powodu generalnie nie nazywasz takich funkcji i zmiennych.

Zaproponowałem, abyśmy używali bardziej opisowych nazw, przynajmniej dla nowych bytów, ale spotkałem się z bardzo silnym sprzeciwem. Najwyraźniej wszyscy w organizacji oprócz mnie uwielbiają nazywać takie rzeczy.

Dlaczego więc używamy nieopisowych nazw kodowych?

Nie zrozumcie mnie źle. Nie mam problemów z nazwaniem wersji programu i kamieni milowych ani z dobrą nazwą produktu ze względów marketingowych. Ale we wszystkich innych miejscach chciałbym zobaczyć opisowe nazwy.

EDYTOWAĆ:

Aby dać ci kontekst: Gandalf to projekt, który przenosi kod 64-bitowy. Callanish jest tym, który przenosi go na Androida ... Wolę nazwać pierwszy oddział 64-bitowym, a drugi Androidporting. Być może dołączony do niego sufiks oznacza wersję docelową, którą planujemy wysłać. Więc każdy wiedziałby z nazwy, co to jest.

Wspomniane serwery to obrazy maszyn wirtualnych, na których testujemy produkt ... Nie znam jednak fizycznej maszyny, na której on faktycznie działa. Tak więc nazywanie ich windowsxp_32, windows7_64, debian_32 lub solaris_64 jest w porządku.

Calmarius
źródło
6
To, co jest dla ciebie opisowe, może nie być wystarczająco opisowe (lub sumienne) dla kogoś innego. Imię to imię to imię. Bez zamieszania i nieporozumień.
Robbie Dee,
1
Tak wiele odpowiedzi, a jednak jeśli zadacie pytanie „Czy powinienem nazywać moje serwery celowo, czy przez greckich bogów?”, Podejrzewam / mam nadzieję, że cel zostanie wskazany. I tak, fileserver4 jest łatwiejszy do zapamiętania niż Aphrodita, jeśli chodzi o zapamiętywanie, które serwery mają ftp.
Vorac,
2
To pytanie wydaje się nie na temat, ponieważ nie ma związku z tworzeniem oprogramowania.
Mike Partridge
4
Co jest w imieniu? To, co jakimkolwiek słowem nazywamy różą, pachnie słodko.
Caleb
3
Mam nadzieję, że gałąź Gandalfa nie jest kryptonimem struktury testów jednostkowych. Cokolwiek przez to przepłynie NIE MUSI BYĆ!
corsiKa

Odpowiedzi:

25

Nie odwołujemy się do ludzi po ich cechach, ponieważ spisanie ich na tyle szczegółowo, aby były jednoznaczne, może się zmieniać. Co jeśli dostaną fryzurę? Zamiast tego nadajemy imiona. Ponadto ludzie lepiej zapamiętują słowa niż strumienie losowych symboli.

Oświadczenie: Będzie zawierało pewne opinie i anegdotyczne opowieści związane z pytaniem.

W miejscu, w którym pracowałem kilka lat temu, wszystkie nasze serwery zostały nazwane po księżycach i częściach ciała. „Rhea”, „Miranda”, „płuco”, „nerka” itp.

Tak wysoko, jak ty, postanowiłeś, że to wszystko jest trochę głupie i powinniśmy zmienić je na bardziej „opisowe” nazwy, takie jak „arc-sql-w-4” lub „lon-web-lin-2”. Spotkało się to z dużym sprzeciwem. Ale to przeszło. Zmieniliśmy nazwę wszystkiego.

Co poszło nie tak?

Wcześniej od początku wiedzieliśmy, które maszyny były podstawowymi bazami danych, a które niewolnikami, ponieważ mogliśmy zapamiętać „głowę” sterowaną „sercem” lub że „Tarvos” był serwerem aplikacji dla X. Cokolwiek. Teraz musieliśmy pamiętać o niejasnym stosie symboli, który częściowo, ale nie w pełni opisał maszynę, której szukaliśmy. Musieliśmy wiedzieć za pomocą tabeli przeglądowej w naszych głowach, że „lon-web-lin-1” to serwer aplikacji dla produktu A i „lon-web-lin-2” dla produktu B.

Jest to podobne do powodów, dla których powinieneś używać haseł, takich jak FartDownTrousersForALivingDoYou? zamiast 43gH5 # 1 €. Ludzie dobrze pamiętają słowa, a nie przypadkowe stosy śmieci. Słowa to symbole odnoszące się do rzeczy.

Innym (prawdopodobnie bardziej praktycznym) problemem jest to, że wiążesz nazwy DNS i serwerów z ich funkcjami. Co oznacza, że ​​nie można zmienić funkcji bez zmiany nazwy. Dla nas dotyczyło to również fizycznej lokalizacji i systemu operacyjnego. Co jest ogromnym bólem w dupie.

I to jest ostatni punkt. Imiona są znacznie przyjemniejsze.

Co z nazwami projektów?

Cóż, zamiast „Project Gandalf”, co proponujesz? „Projektuj prototypową funkcję X i zobacz, czy możemy ją przekształcić w produkt”? Co się stanie, jeśli zmieni się zakres projektu, czy wówczas zmienimy nazwę projektu? Ponownie, nazwy są skrótowymi symbolami odnoszącymi się do rzeczy.

Tomek
źródło
5
Wygląda na to, że zmieniłeś opisowe metafory hieroglifów nieopisowych. Powinieneś wymusić wzorzec nazewnictwa, który wyjaśnia, który produkt działa na którym serwerze. Na tym polega bycie „opisowym”;)
back2dos,
9
@ back2dos - A kiedy nowa aplikacja zostanie wdrożona na serwerze lub istniejąca aplikacja zostanie przeniesiona na inny serwer, czy zmieniasz nazwy wszystkich serwerów, których dotyczy problem? Co się stanie, gdy nazwa produktu A zostanie zmieniona (ponieważ nie używamy nazw kodowych)? Czy zamierzasz zmienić wszędzie, gdzie nazwa jest przechowywana na kliencie? Czy pozostawisz wprowadzające w błąd aliasy DNS, aby zminimalizować zakres zmiany?
Justin Cave
5
@ back2dos - Zmiana nazw serwerów (i aktualizacja wszystkich klientów) za każdym razem, gdy wdrażana jest nowa aplikacja, staje się dość bolesna bardzo szybko. Co dzieje się po wdrożeniu 10. aplikacji na określonym serwerze? Co dzieje się, gdy masz setki komputerów klienckich, które mają odniesienia do konkretnej nazwy serwera? db3.todoappma więcej informacji, jeśli serwer obsługuje tylko todoapp. Jeśli marketing zdecyduje się nazywać aplikację „Organizer Pro”, a na serwerze jest 8 innych aplikacji, zarządzanie nazwami staje się dość skomplikowane.
Justin Cave
4
Co się stanie, gdy maszyny będą miały więcej niż jedną funkcję? Nazwy albo stają się zbyt duże, albo nie potrafią dokładnie opisać.
tom
3
Trudno nie zgodzić się z back2dos. „nieopisowe hieroglify” to dokładnie to, o czym myślałem, czytając twoje przykłady. Rozróżnienie między rolą a tożsamością sprawia, że ​​back2dos jest szczególnie istotne. W mojej firmie serwery są nazywane zgodnie z ich rolami, a nazwa taka jak „http-blog-db-failover” wydaje się być o wiele bardziej wyraźna niż „Hermione”, a nazwa nie zmieni się, kiedy przejdę z MongoDB na CouchDB lub gdy marketing postanawia zmienić nazwę handlową strony, na której znajdują się blogi.
Arseni Mourzenko
10

Nazywanie rzeczy według ich właściwości jest zasadniczo złym pomysłem. Powodem jest to, że właściwości są z definicji zmiennymi zjawiskami, a tożsamość rzeczy pozostaje taka sama, nawet jeśli właściwości zostaną zmienione.

Ktoś decyduje, że serwer plików powinien zostać zmigrowany do systemu Linux? Jeśli nazywa się „Apollo”, nie stanowi to problemu. Gdyby nazwa odnosiła się do „okien”, wówczas stałaby się myląca lub musiałaby zostać zmieniona wszędzie kosztem lub ryzykiem. Wprowadzasz nowy format wyjściowy? Na miłość boską, nie nazywaj tego „nowym formatem”! To będzie ostatecznie zostać zastąpione jeszcze raz, i jeszcze nowszy format będzie potrzebować jeszcze bardziej opisowe nazwy, aby je rozróżnić. Nazwij go „3”, abyś mógł później zwiększyć go do „4” lub „złoty”, aby móc ulepszyć do „platyny”.

(Dodatkowym powodem jest to, że nazwy złożone z bryłek informacji są brzydkie). Nikt nie chce pracować na komputerze o nazwie „PC-Marketing-Windows7-143” - przejmie to „Apollo”, a nawet „Bacchus” każdego dnia. Ale głównym punktem jest podział tożsamości / własności.)

Kilian Foth
źródło
5
Nazwy opisowe nie opisują właściwości, ale cele . Jeśli wywołasz funkcję, która wyświetla wynik, Hermesto tak, jest bardziej rozpoznawalna niż functionWithTenLinesOfCode. Osobiście nazwałbym to print.
back2dos
@ back2dos Przykłady podane przez OP wydają się opisywać odpowiednikprint_left_aligned_to_CRT_monitor()
Izkata,
@Izkata: Musisz przyznać, że jest o wiele lepiej niż Cathy(). Uwaga: Osobiście widziałem kod produkcyjny z nazwami funkcji i zmiennych cytujących teksty Guns & Roses i jestem winny napisania kodu produkcyjnego z nazwami zmiennych i funkcji odwołujących się do Buffy.
slebetman
10

Z mojego doświadczenia wynikają 3 powody:

  1. Kiedy trzeba wymienić wiele podobnych rzeczy, może być trudno znaleźć unikalne nazwy opisowe dla wszystkich z nich. Ludzie potrzebują krótkiego, unikalnego sposobu odwoływania się do tego, a my lepiej posługujemy się nazwami niż liczbami (chyba że liczba jest bardzo krótka). Kiedy nadasz mu nazwę, nabiera ona charakteru w twoim umyśle, więc pamiętasz, że serwer Gandalf jest tym, który ma luźne złącze zasilania lepiej niż SERWIN15AB23. Jest również mniej prawdopodobne, że pomylisz dwa z literówką.

  2. Proces nazywania może być zabawny. Niektóre firmy robią to z głosem. Inni ludzie lubią wymyślać unikalne nazwy. Zapytaj dowolnego rodzica.

  3. W przypadku projektów zewnętrznych zwykle marketing decyduje o nazwie i zwykle robią to tuż przed wysyłką. Kiedy Microsoft zdecydował się nazwać najnowszy system operacyjny „Windows 10”? Wątpię, by zawsze tak to się nazywało. Projekt może być jeszcze opracowywany przez długi czas, aw niektórych przypadkach chcesz go zaciemnić, aby ludzie spoza firmy nie wiedzieli o czym mówisz.

Scott Whitlock
źródło
5
Warto również dodać, że nazwy można dostosować do danego zadania. Gandalf może być serwerem kompilacji „tam, gdzie dzieje się magia”, Cerberus może być zaporą ogniową, Hefajstos serwerem deweloperów itp.… Bardzo trudno jest powiązać liczby z funkcjami
Liath,
1
Nawiasem mówiąc: Wewnętrzna nazwa „Windows 10” to tak naprawdę „Windows NT 6.4”. Jednak marketing nigdy nie przyznałby, że wersja 6.0, zwana także „Vista”, była ostatnią wersją, w której jądro systemu operacyjnego zostało poważnie przeprojektowane.
Philipp,
@Filipp po prostu wpisz „ver” w wierszu polecenia komputera z systemem Windows 7 - 6.1 (vista SP1, który zawsze był żartem), nie jestem pewien, jaki system Windows 8 jest poza moim zasięgiem.
Liath,
Windows 8.1 Pro (jestem pewien, że ten komputer nie ma aktualizacji 1): 6.3.9600 msdn.microsoft.com/en-us/library/windows/desktop/…
WernerCD
@Philipp AFAIK, zrobione z powodów kompatybilności wstecznej, nie odzwierciedla to, jak bardzo zmieniło się jądro.
svick
6

Nazewnictwo opisowe jest trudne ™, jest o wiele łatwiejsze, jeśli masz już motyw, który automatycznie zawiera listę słów, których możesz użyć.

Gdy masz wielokrotność tego samego obiektu ich nazewnictwa foo1.6, foo1.2itp szybko dostaje mylące / podatne na błędy. Na przykład, gdy musisz uruchomić test Virgo, szybko zauważysz błąd, jeśli tak się dzieje Cancer.

Stanowi także rozrywkowe spotkanie, kiedy konwencje nazewnictwa są wdrażane i podejmowana jest decyzja, aby oprzeć nazwy sal konferencyjnych według gatunków muzycznych, a ty nazywasz stołówkę Salsa.

maniak zapadkowy
źródło
1
Descriptive naming is hard™, it's much easier if you already have a theme which automatically comes with a list of words you can use.Bardzo prawdziwe. Ale to, że jest łatwiejsze, nie oznacza, że ​​jest dobre na dłuższą metę. To, co mówisz, nie różni się od robienia niewłaściwego projektu API, ponieważ o wiele łatwiej jest po prostu zrezygnować z funkcjonalności.
back2dos
4

Może to być związane z kulturą o wysokim lub niskim kontekście . Każda firma, organizacja lub zespół ma własną kulturę. Kultura wysokiego lub niskiego kontekstu oznacza, ile informacji kultura lubi jawnie się odnosić i ile osób oczekuje od kontekstu.

Nazewnictwo wszystkich usług nazwami z odniesień kulturowych zapewnia pewną elastyczność, ale również nie jest jednoznaczne. Musi istnieć słowo ustne lub „wiedza plemienna”, która uzupełnia nazwy - tj. Kontekst nabożeństwa. Widziałem sytuacje, w których na przykład istnieje serwer „fizzbuzz” lub usługa „marcopolo”, w której nikt nie wie, co robią, ale dostaje ruch, więc muszą coś zrobić.

Jestem osobą o niskim kontekście, więc wybieram proste, jednoznaczne nazwy, które zapewniają kontekst dotyczący celu serwera lub usługi. Piszę również „kod samokontrujący”, w którym staram się nadawać nazwy mojemu kodowi, aby był bardziej czytelny.

Ale obecnie pracuję w sklepie o wysokim kontekście, w którym wszystkie usługi noszą nazwę Transfomers. Westchnienie. Przynajmniej używają nazw konsekwentnie.

Wygląda więc bardziej na wartość kulturową, ale praktyki techniczne dostosują się do preferencji kulturowych.

Wysoki kontekst może być zabawniejszy i ma w tym pewną wartość.

Obrabować
źródło
3

Jednym z powodów nazw kodowych jest zaciemnianie. Jeśli nazwa projektu stanie się bez znaczenia, możesz mówić o nim publicznie, bez zrozumienia, o czym dyskutujesz.

Podobnie, jeśli podasz swoje serwery pozbawione znaczenia nazwy, nikt poza upoważnionymi użytkownikami nie będzie miał pojęcia, co na nich jest.

Simon B.
źródło
2

Ważne pytanie brzmi: co jest opisowe? Inne odpowiedzi wykonały świetną robotę ilustrując to, co nie jest opisowe.

Ustalmy, że opisowość wynika z nazywania rzeczy po ich roli , celu. Przez to, co robią . Na przykład jasne jest, co robi „kuter”. Teraz może to być topór, laser lub nóż. To nie ma tak wielkiego znaczenia. Laser może być również „wskaźnikiem”, topór może być również „dekoratorem”, a nóż może być również „nakłuwaczem”.

Tak więc, jak zauważyli inni, związek między właściwościami czegoś a zadaniem, które wypełnia, jest stosunkowo luźny. Dlatego system operacyjny będący częścią nazwy serwera nie ma charakteru opisowego , odwraca uwagę od prawdziwego celu.

Chyba że Twoim zadaniem jest praca nad tym, jak komponent DoesXosiąga X, to nie jest twoja sprawa. Jeśli to twoja praca, to i tak od razu się z nią konfrontujesz.

Jak zauważył maniak rasowy, czasami trudno jest znaleźć opisowe nazwy. Ale częściej niż nie, że jest to znak że nie zrozumiał , co zrobić rzeczy, które trzeba wymienić. Zanim to zrozumiesz, prawdopodobnie nie powinieneś się martwić, jak to robi, czego nie znasz;)

back2dos
źródło
+1, ale co z dodaniem przykładu? Możesz użyć przykładu, którego użyłem, komentując pytanie ( http-blog-db-failoverw przypadku komputera, na którym znajduje się baza danych trybu failover witryny obsługującej blogi; przejście z systemu Linux na Windows lub z MongoDB na CouchDB nie wpłynie na nazwę, ani decyzje marketingowe. )
Arseni Mourzenko
2

Pierwszym powodem jest to, że może być krótki i niezapomniany. Jeśli zastanowisz się, ile razy powiesz lub napiszesz nazwę projektu, zaoszczędzisz sporo czasu, jeśli istnieje krótka nazwa, którą wszyscy znają i rozumieją.

Drugim powodem jest to, że buduje koleżeństwo. Jeśli zespół wybierze nazwę, może wybrać tę, która im się podoba. Jest subtelny, ale zwiększa morale zespołu, gdy pracujesz nad projektem o nazwie Viper lub Gimley lub Boba lub Bugatti zamiast projektu o nazwie „Aktualizacje rachunkowości Q3”. Miałem przyjaciela, który pracował w zespole z grupą entuzjastów motoryzacji. Ich ulubionym rytuałem rozpoczynającym projekt było wybranie samochodu, którego będą używać jako kryptonimu projektu.

epotter
źródło
2

Zawsze myślałem, że to jest zrobione głównie dlatego, że bawi ludzi. Ludzie są uwarunkowani przez media, aby przywiązywać wagę do chowania się w ciemności w porównaniu do działania w świetle dziennym. W wieku 5 lat mamy „agenta specjalnego Oso”; w wieku 15 lat to James Bond. Tajemnica nadaje szczególnego znaczenia codziennym czynnościom ludzi (np. Programowaniu komputera).

W związku z tym ktoś stworzył logo dla „Longhorn”, gdy była to nazwa kodowa Microsoft ( http://en.wikipedia.org/wiki/File:Windows_Longhorn_logo.svg ). Dlaczego ktoś miałby tworzyć logo dla pseudonimu, który nigdy nie miał być częścią marketingu? Znów ludzie robią takie rzeczy, ponieważ to ich bawi. Gra w Photoshopie jest łatwiejsza / przyjemniejsza niż faktyczna praca.

użytkownik1172763
źródło
1

może istnieć system, którego po prostu nie znasz.
Jedna firma, w której pracowałem dla używanych nazwisk laureatów Nagrody Nobla dla wszystkich ich serwerów. Różne nagrody Nobla wskazywały na różne kategorie serwerów.
Serwery testowe można nazwać po zwycięzcach matematyki, serwerach baz danych po zwycięzcach literatury, serwerach pocztowych po zwycięzcach medycyny itp.
Dla kogoś, kto nie zna konwencji nazewnictwa, nazwy wydawały się całkowicie losowe (zwłaszcza, że ​​większość ludzi nie zna wszystkich setki laureatów nagrody Nobla w ciągu dziesięcioleci).

Użyłem podobnego systemu w domu, nazywając komputery myśliwcami odrzutowymi, serwery po bombowcach i woluminy dysków po wulkanach.

To samo można zrobić z oprogramowaniem, nazwami wersji produkcyjnych po drzewach, wersjami beta po kwiatach itp. Itp.

jwenting
źródło