🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.objects
Article #17459

Re: Propozycja nazewnictwa i oznaczeń kodu w językach obiektowych

#17459
From: sereka
Date: Sat, 25 Sep 2010 10:46
88 lines
5585 bytes
On Wed, 22 Sep 2010 08:03:44 +0200
klops <klops@klopsserver.pl> wrote:

> > wg mnie, zaproponowane nazewnictwo zmiennych, (przyrostki 'g-', 'm-', 'l-', 'a-', ...)
> > tylko zaciemniają obraz i napewno nie dążą do utworzenia prostego i przejrzystego kodu:
> 
> Może nie doążą do prostego i przejrzystego kodu, ale czynią kod prostym 
> i przejrzystym
> 
> > 1) Istnieje dodatkowa praca przy wpisywaniu odpowiednich przyrostków.
> 
> Ale robota! Jeden dodatkowy znak i wciśnięcie klawisza Shift przy 
> pisaniu reszty nazwy zmiennej.

Niestety - jestem leniwy, i przyciskanie dodatkowo klawisza Shift, oraz wprowadzanie oznaczeń
znacznie odbiegających od języka potocznego ('aValue' jeszcze by przeszło, gorzej z 'gValue',
czy też 'mValue') spowalnia prędkość wklepywania kodu. Ale znów - to tylko moje osobiste 
odczucie, i myślę, że po pewnym treningu takie przedroskti by nie przeszkadzały zbytnio.
Ale myślę, że zanim to nastąpi, to popełniłbym dużo pomyłek...



> > 2) Zastosowanie przyrostków zmniejsza potrzebę tworzenia unikalnych nazw,
> 
> Wg mnie to jest super czytelne i od razu widać co się dzieje. A jak 
> chcesz se dopisywać old i new to możesz zapisać:
>   int changeValue(int aNewValue) {
>   }
> Tle że dopisywanie new i old jest kosztowniejsze od pisania m, a, l.
Nie przeczę, że dopisywanie 'new' i 'old' nie jest kosztowniejsze. Chciałem tylko wykazać, że posiadając
już unikalne nazy (poprzez zastosowanie magicznych przyrostków) nie jesteśmy już zmuszani do tworzenia
sensowniejszych nazw.



> > 3) Rozumiem, że zastosowanie przyrostków ma ułatwić odgadnięcie rodzaju zmiennej po jej nazwie,
> >     co ma zmniejszyć liczbę potencjalnych pomyłek w dużym kodzie. W małym kodzie natomiast nie
> >     widać tego ułatwienia, gdyż na pierwszy rzut oka widać, czy zmienna jest zmienną lokalną, globalną,
> >     parametrem funkcji czy też zmienną klasy.
> 
> Akurat! Szczególnie w programach Unixowych tego za cholerę nie widać!
Tutaj się zgadzam - w większości programów Unixowych, głównie tych pisanych w C, takie oznaczenie 
ułatiwłyby czytelność i zarządzalność kodem.

Ogólnie moje myśli krążyły wokół progarmowania obiektowego (dokładniej Java ;) ), a tutaj zmiennych 
globalnych raczej się nie używa, najwyżej może być problem w rozróżnieniu zmiennych statycznych
od zmiennych klasy. Odróżnienie zmiennych lokalnych od zmiennych przekazanych w argumentach metody
nie jest problemem - metody na ogół są proste. W przypadku w którym metoda ma >100 linijek najpierw
zastanowiłbym się nad uproszczeniem jej, dopiero później wprowadzałbym ułatwiające oznaczenia.


> 
> >     Osobiście należę do szkoły w myśl której, programmy powinno się pisać jak najprościej (KISS)
> 
> Właśnie proponowany sposób oznaczania kodu jest jak najbardziej KISS. A 
> z resztą te oznaczenia nie mają żadnego związku z architekturą programu 
> czyli nie wpływają na komplikacje, czyli nie są przeciw KISS!

w tym przypadku KISS ma u mnie szersze znaczenie - w miarę możliwości stosuję ją do każdej czynności
związanej z rozwojem oprogramowania: architektury, dokumentacji, formatowania kodu itd...


> >     w związku z tym podejrzliwie patrzę na wszystkie czynności, które zbytnio ułatwiają powstawanie
> >     dużych i skomplikowanych porcji kodu.
> 
> Na obecnym etapie podejrzewam, że jeszcze nie jedno uproszczenie i 
> ułatwienie można będzie wymyśleć.

Jestem za uproszczeniami. Tylko nie za bardzo w kierunku:
"... nazwy metod statycznych zaczynamy od przyrostka 's-', a nazwy metod privatnych od przyrostka 'p-'... "
... itd ;)


> > 4) Występowanie przyrostków nieznacznie, ale utrudnia refaktoring - przy zmianie rodzaju zmiennej
> >     (np. zmienną globalną zamieniamy na zmienną klasy) musimy dodatkowo zmienić nazwę zmiennej.
> To fajowe zminiać zmienne globalne na zmienne klasy! Znaczy, że ktoś nie 
> źle spaprał projekt. A naprawa tego musi kosztować - bez cuduw!
Niestety, patrząc z perspektywy mojego doświadczenia, spapranych kodów jest zbyt dużo.

Podsumowując, Twoja propozycja nie jest zła: napewno się sprawdza w niektórych zastosowania. 
Podobie jak notacja węgierska, jest jednak nieprzydatna kiedy stosuje się ułatwiające życie edytory. 

Nasuwa mi się jeden wniosek: nie ma uniwersalnej notacji. Używana notacja zależy w dużej mierze od
wykorzystywanego języka programowania, narzędzi a także osób uczestniczących w projekcie (.. itd).


Pozdr,
SD
Technical Details
Message-ID: <20100925114620.061a7ab7@canis>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
References: <4c8e6e5a$0$22799$65785112@news.neostrada.pl> <20100915134841.18b39fed@canis> <4c99ffe8$0$22806$65785112@news.neostrada.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
From: <sereka@gazeta.pl>
Newsgroups: pl.comp.objects
Subject: Re: Propozycja nazewnictwa i oznaczeń kodu w
 językach obiektowych
Date: Sat, 25 Sep 2010 11:46:20 +0100
Organization: "Portal Gazeta.pl -> http://www.gazeta.pl"
Lines: 131
Message-ID: <20100925114620.061a7ab7@canis>
References: <4c8e6e5a$0$22799$65785112@news.neostrada.pl> <20100915134841.18b39fed@canis> <4c99ffe8$0$22806$65785112@news.neostrada.pl>
NNTP-Posting-Host: apn-77-112-82-193.dynamic.gprs.plus.pl
Mime-Version: 1.0
X-Trace: inews.gazeta.pl 1285407985 23688 77.112.82.193 (25 Sep 2010 09:46:25 GMT)
X-Complaints-To: usenet@agora.pl
NNTP-Posting-Date: Sat, 25 Sep 2010 09:46:25 +0000 (UTC)
X-Newsreader: Claws Mail 3.7.6 (GTK+ 2.20.1; i486-pc-linux-gnu)
X-User: sereka
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit