Czy sensowne jest używanie „ys” zamiast „ies” w identyfikatorach, aby ułatwić wyszukiwanie i zamianę? [Zamknięte]

9

Chociaż gramatycznie niepoprawne, pisząc identyfikatory funkcji, zmiennych itp., Warto po prostu dodać „s” do liczby mnogiej słów kończących się na Y? Moim powodem jest to, że jeśli potrzebujesz znaleźć i zastąpić, na przykład, zastępując „firma” słowem „sprzedawca”, „firma” pasowałaby zarówno do formy pojedynczej, jak i mnogiej („ firma i” firma ”), podczas gdy jeśli liczba mnoga została zapisana poprawnie, należy wykonać dwa osobne wyszukiwania.

SHNC
źródło
8
Co z dziećmi, myszami, nożami, wilkami, mansami, kobietami, żonami i zębami? Wszystko jest ważne, aby uniknąć przerażającego „dwóch oddzielnych wyszukiwań” .
Tulains Córdova
3
Jestem stronniczy od wilków, a nie od wilków ...
Jimmy Hoffa
2
Czy naprawdę planujesz często zmieniać nazwy identyfikatorów w swoim przepływie pracy? Wydaje się nieco przesadne przyjmowanie całej niedorzeczności poznawczej błędnie napisanych nazw w kodzie tylko po to, by obsługiwać funkcję, która może nigdy nie zostać użyta.
Kent A.
10
Uwierz mi, nie chcesz stosować operacji znajdowania i zamiany na dużej bazie kodu dla słowa takiego jak „firma” bez ograniczenia „tylko pełne słowa”. Dlatego będziesz musiał użyć dwóch oddzielnych wyszukiwań.
Doc Brown
2
Dwa. Oddzielny. Wyszukiwania
Tulains Córdova

Odpowiedzi:

24

Każde takie wyszukiwanie i zamiana powinny być wykonywane ostrożnie, a każda zmiana ręcznie sprawdzana, aby np. Uniknąć „towarzyszenia” w komentarzu, stając się „acvendor” wraz ze zmianą firmy / dostawcy. W związku z tym dwa oddzielne wyszukiwania wyrażeń „firma” i „firmy” nie powinny powodować znacznych kosztów ogólnych w porównaniu z czasem poświęconym na sprawdzanie i zatwierdzanie każdej zmiany.

Tak więc błędy pisowni w celu osiągnięcia tylko jednego wyszukiwania mają negatywne strony, które wyglądają źle i są trudniejsze do odczytania niż to konieczne, bez żadnych oczywistych korzyści.

David Arno
źródło
11
Ponieważ narzędzia refaktoryzacyjne stają się coraz lepsze, globalne wyszukiwanie i zamiana oparte tylko na tekście stają się najmniej niezawodnym sposobem zmiany nazwy identyfikatora.
Kent A.
Nie byłoby to problemem przy wyszukiwaniu „całe słowa”, jak wspomniał Doc Brown.
SHNC
6
@ user3047082, wyszukiwanie całego słowa też nie pasuje do „firmy”, przez co całe pytanie jest raczej bezcelowe ...
David Arno
6

Zakładam, że mówisz o zmianie nazwy w plikach kodu źródłowego. W przypadku dzisiejszych IDE zawsze powinno się to odbywać za pomocą narzędzi refaktoryzujących IDE. Jeśli twoje IDE tego nie ma, rozważ przejście na inne IDE. Większość narzędzi refaktoryzujących IDE również przechowuje historię refaktoryzacji, co daje możliwość szybkiego „cofnięcia”, jeśli nie podobają Ci się wyniki refaktora. Korzystając z wyszukiwania / zamiany, możesz nie mieć możliwości cofnięcia całego zestawu zmian (chyba że możesz użyć narzędzi kontroli wersji i powrócić do poprzednio zatwierdzonej wersji). Ponadto, korzystając z narzędzi refaktoryzacyjnych, jesteś bezpieczniejszy od przypadkowej zmiany czegoś, czego nie zamierzałeś zmienić.

javabeano
źródło
3
Ktokolwiek oznaczył tę odpowiedź jako niską jakość: chociaż nie odpowiada ona dokładnie na zadane pytanie, odpowiada na szerszy obraz tego, dlaczego ktoś chciałby zastosować taki schemat nazewnictwa i lepszy sposób na wykonanie tego samego zadania. Głosowałem „wygląda OK” na recenzję flagi i dodałem opinię.
Dzięki, @Snowman. Ludzką naturą jest przebywanie w nieznanym obszarze, aby sformułować pytanie w oparciu o własny (niedoświadczony) sposób myślenia. Tak, chociaż nie odpowiedziałem na rzeczywiste pytanie, moje założenie o tym, o co tak naprawdę pytano, opierało się na innych wskazówkach w pytaniu. Liczba mnoga, z którą się najczęściej spotkałem, pochodzi z narzędzi do generowania kodu, np. XSD-to-POJO, Hibernate / JPA reverse engineering z bazy danych itp. Zasadniczo, jeśli te liczby mnogie są w kodzie, a autorowi nie spodobał się wybór liczby mnogie, wówczas najprawdopodobniej nie zostały napisane przez autora i były bardziej prawdopodobne, że zostały wygenerowane automatycznie.
javabeano
-9

Tak! Tak! Tak! Ma to sens. I robię to od lat.

Ujawnienie 1: Angielski nie jest moim językiem ojczystym.

Ujawnienie 2: Moja znajomość gramatyki języka angielskiego jest znacznie lepsza niż przeciętnego native speakera.

Ujawnienie 3: Jeśli chodzi o komunikację z ludźmi, jestem gwałtowną gramatyką nazistowską.

A teraz, gdy ujawnienia te są już na uboczu, pozwólcie, że stwierdzę, że w gramatyce angielskiej nie ma miejsca w kodzie. Widzisz, dlatego nazywa się to kodem, a nie prozą . Ma on przypominać język rozumiany przez ludzi w celu czytelności, ale poza tym, czego najbardziej potrzebujemy od kodu, nie są cechy prozy; to inne, bardziej techniczne cechy, takie jak precyzja , jednoznaczność i zwięzłość . Dlatego składnia C if( x != y ) y++;jest o wiele lepsza niż IF X IS NOT EQUAL TO Y THEN ADD 1 TO Y END-IF.składnia Cobola. Rzekoma celowość kompilatorów, które rozumieją język naturalny, jest błędem i nie wierz mi na słowo, zobacz, co ol'Edsger ma do powiedzenia na ten temat:Edsger W. Dijkstra, O głupocie „programowania w języku naturalnym” .

Kolejną ważną cechą jest możliwość obliczania identyfikatorów . Fakt, że wywoływana właściwość Colorzawsze może być odczytana za pomocą metody wywoływanej getColor()i zapisywanej za pomocą metody nazywanej, setColor()ma ogromne znaczenie. Te identyfikatory są obliczalne na podstawie nazwy nieruchomości, więc nie musisz ich znać na pamięć. Gdyby programista wybrał parę metod wywoływanych getColor()z jednej strony, ale colorize()z drugiej strony, ich koledzy słusznie rozważyliby ten sabotaż. Tak ważna jest obliczalność identyfikatora.

Można także napisać narzędzia programistyczne (a napisano ich wiele, na przykład Hibernacja ), które potrafią obliczyć te nazwy. Bez możliwości obliczenia nazwy identyfikatora musiałbyś zastosować dodatkową składnię (np. W Hibernacji, dodatkowe adnotacje), aby dokładnie określić dla każdego narzędzia, jak utworzyć każdą nazwę identyfikatora lub dokładnie, jaką nazwę ad hoc nadałeś każdej jednostce.

Tak więc obliczalność identyfikatora jest ważna, a jednocześnie gramatyka angielska jest nieistotna (ponieważ nie zajmujemy się programowaniem w języku naturalnym), aby móc obliczyć nazwę zbioru bytów, zawsze dodając „s” do nazwy pojedynczego wystąpienia ma doskonały sens, nie wspominając o tym, że narusza wrażliwość większości ludzi (w tym mojej) na język angielski.

I czy nam się to podoba, czy nie, to trend przyszłości. Językiem ojczystym większości programistów na naszej planecie nie jest już angielski, a trend jest bardzo silny w tym kierunku. (Nie chciałbym nawet postawić pieniędzy na sugestię, że angielski jest językiem ojczystym większości programistów pracujących obecnie w USA.) Są to ludzie, którzy w dużej mierze próbują obliczyć nazwę kolekcji z nazwą pojedynczego wystąpienia „firma”, po prostu doda „s”, a forma „firmy” nawet nie przyszło im do głowy. Dla ogromnego i wciąż rosnącego odsetka programistów na świecie znajomość specyfiki języka angielskiego nie wnosi żadnej wartości do ich pracy, a jedynie czyni ją nieco trudniejszą.

Mike Nakis
źródło
7
1. Zarówno indeksy, jak i indeksy są poprawnymi liczbami mnogimi indeksu. Mylisz się w przekonaniu, że tylko jedna jest poprawna, np . Odwiedź oxforddictionaries.com/definition/english/index . 2. Prywatny X, który można odczytać przez getX i zapisać przez setX, nie jest prywatny; to wartość publiczna. 3. Kod jest dokumentem projektowym. Informuje kompilator o tym, jak wygenerować „kod maszynowy”, ale co ważniejsze, opisuje ten projekt w sposób, który inni ludzie mogą łatwo odczytać. Czytelność jest jednym z dwóch najważniejszych aspektów kodu (drugim jest testowalność).
David Arno
3
Kod jest napisany z dwóch powodów: dla ludzi do czytania i dla komputerów do wykonania. Niektórzy twierdzą, że kod źródłowy jest pisany przede wszystkim do czytania przez ludzi, ponieważ większość z nich jest natychmiast kompilowana w kod bajtowy, zanim komputer go wykona. Tak więc, chociaż komputery mogą nie dbać o właściwą gramatykę, ludzie na pewno to robią.
Eric King,
3
Chociaż angielski może nie być Twoim językiem ojczystym, może być następną osobą, która czyta Twój kod. Prawdopodobnie wprowadzi to także zamieszanie w Twoim języku ojczystym, którzy nauczyli się angielskiego.
Andy
2
albo skrzywdzisz tylko tych, którzy podwójnie sobie radzą, Companyskiedy powinien Companies. W końcu cały punkt kodu, który zwykle piszemy, ma na celu przybliżenie go do języka naturalnego.
Andy
2
Cokolwiek, uważam ten papier za gówno. Kod znajduje się między językiem naturalnym a kodem bajtowym. Gdyby nie ułatwienie zrozumienia kodu przez człowieka, nie byłoby żadnego powodu, aby nie wprowadzać kodu bajtowego bezpośrednio.
Andy,