Wpis z mikrobloga

Ciekawi mnie jak to wygląda u was w firmach i technologiach, stosujecie suffix/prefix w nazwach interfejsu? #programowanie #php #java #cpp #csharp #javascript #typescript #nodejs #python #programista15k #programista25k #programista30k

Czy stosujecie prefixy/suffixy dla interfejsów?

  • Interface suffix 13.3% (22)
  • I prefix 32.1% (53)
  • Nie stosujsę prefixów/suffixów 51.5% (85)
  • Jeszcze inaczej 3.0% (5)

Oddanych głosów: 165

  • 41
@WyjmijKija: gdzie odpisałeś? nie widzę za bardzo gdzie to odpisałeś, po prostu ciekawi mnie czemu ludzie stosują notacje węgierską tylko częściowo i jakie mają za tym argumenty, poza tym że ktoś kiedyś dawno temu tak sobie wymyślił, co dla mnie osobiście jest kiepskim argumentem
@WyjmijKija: xD czyli po prostu nie myśli samodzielnie i idzie utartymi ścieżkami bo tak ktoś kiedyś sobie wymyślił, czyli takie juniorskie myślenie który robi tak a nie inaczej, spoko, szanuję takie zdanie, ale polecam się rozwijać i zacząć kwestionować kiepskie rozwiązania
@Jurigag: polecam pisać kod w taki sposób, że inni nie będą musieli się zastanawiać co tu się #!$%@?ło i czemu ktoś #!$%@? manianę. W większości przypadków gdy widzę jakieś niestandardowe rozwiązania to cały projekt jest zakodowany jak gówno. Dla mnie próby łamania czegoś co jest utarte w języku byle było inaczej gdy daje to niemal zerowe benefity to jest kwintesencja juniorstwa
@WyjmijKija: przecież to daje benefity dosyć spore - dużo sensowniejsze nazewnictwo - które wskazałem w przykładzie wyżej, a z mojego doświadczenia klepanie kodu jak wszyscy i zgodnie ze standardami które są #!$%@? właśnie prowadzi do gówna i to dla mnie jest kwitesencja juniorstwa, ale spoko, może za 5 czy 10 lat i programiści c# przejdą do normalności
@Jurigag: Takie konwencje nazewnicze są jak gramatyka albo ortografia - używa się głównie dlatego, że tak robi większość albo dlatego że taka jest "tradycja", a to że inny sposób jest bardziej logiczny albo spójny nie ma większego znaczenia. Porównaj sobie z tym ile zamieszania wprowadził pomysł aby zamiast "na Ukrainie" mówić "w Ukrainie" - jest logicznie i spójnie bo przecież dla większości krajów używamy "w" ale jednak robi się dziwnie jak
@Jurigag: taka jest konwencja w .net i należy się jej trzymać. Tak samo jak prefix T dla typów genetycznych. W

CA1715: Identifiers should have correct prefix

Naming conventions provide a common look for libraries that target the common language runtime. This reduces the learning curve that is required for new software libraries, and increases customer confidence that the library was developed by someone who has expertise in developing managed code.


A
@Priya: no spoko, ale nadal - overall się po prostu z nią nie zgadzam, tak po prostu sobie wymyślili lata temu i tyle - ale czy jest to poprawne podejście? mocno dyskusyjna kwestia
@Jurigag: Używam I na początku nazwy interfejsu z kilku powodów:
1. Interfejsy z BCL i tak się tak nazywają, więc po co się z tej konwencji wyłamywać?
2. Gdy patrzę na przykład na zadeklarowany typ pola lub property od razu widzę, że to interfejs, a to niesie ze sobą konkretne informacje.
3. Przy definicji klasy od razu widać, czy implementuje ona interfejs, czy dziedziczy po jakiejś klasie.

Nie używam CKlasa,
@Priya: zauważ do tego lata temu że ludzie mieli różne podejścia do nazewnictwa klas czy właśnie wcięć jak piszesz - dopiero potem to wyszło bo właśnie byli ludzie którzy kwestionowali jakieś podejścia, poza tym ja nigdzie nie napisałem że mam zamiar pisać klasy z małej litery - tylko że to podejście z I na początku interfejsów jest zwyczajnie kiepskie i tyle - ale pewnie jakbym miał pisać w csharpie to już
@Jurigag: można sobie przyjmować różne podejścia, w każdym projekcie inne - ba, w każdej klasie inne. Problem tylko w tym, że brak jakiejkolwiek konwencji kończy się niesamowitym burdelem.

Niedawno cieszyłem się ze swojego małego zwycięstwa bo udało mi się zakończyć pozytywnie dość ciężką walkę o unifikację konwencji nazwenictwa we wszystkich projektach/teamach w firmie. Był z tym taki cyrk że nie raz widziałem 4 konkurujące ze sobą style nazewnictwa - żodyn #!$%@?
No ma całkiem znaczne. Jeśli konstruktor przyjmuje interfejs to możesz utworzyć instancję konstruowanej klasy przy użyciu dowolnej jego implementacji. Jeśli natomiast przyjmuje klasę to jesteś ograniczony do tej klasy lub klas dziedziczących po niej. To bardzo poważna różnica.
@Rhodium: no tak, ale idąc z zasadami solid - to powinieneś zawsze mieć interfejs praktycznie, jak dla mnie to nie powinno cię interesować imho, po prostu ma się zgadzać typ i tyle, a czy to interfejs czy nie to jest tylko szczegół implementacyjny