🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.delphi
Article #345871

Re: Zeos Delphi XE2

#345871
From: wloochacz
Date: Tue, 11 Jul 2017 15:28
116 lines
4929 bytes
W dniu 2017-07-11 o 11:24, Roman Tyczka pisze:
> On Tue, 11 Jul 2017 10:50:31 +0200, konsul41@wp.pl wrote:
> 
>> Co ty masz jakiś gorszy dzień?
> 
> Twój kod tak działa na spokojnego człowieka.
To subiektywna opinia; ja tam do spokojnych się nie zaliczam, a na mnie 
tak nie działa ;-)

>> Ok. pokieruj mnie gdzie on jest nie czytelny? Pytam poważnie.
>> Skopiuj go do Delphi i zauważ są odpowiednie wcięcia trochę komentarzy,
>> itd.
> 
> Ok, kilka _powierzchownych_ uwag.
Wiesz, że dość mocno się czepiasz?
Po prostu.

> 1. Spacje wokół przypisania zmiennych, Zmienna := Wartość;
Ctrl+D

> 2. Spacje po przecinkach, dwukropkach itd.
Ctrl+D

> 3. Nazwy parametrów metod oznaczamy np. małą literą a z przodu, np:
>    function TMyClass.Process(aParam : TSomeType);
Chyba Ty oznaczasz.
Albo Wy.
Ale My nie.

> 4. Nie mieszj języka polskiego i angielskiego, czyli nie twórz potworków
> typu GetWartosc(), SendWiadomosc(), stosuj ALBO polski ALBO angielski
Polinglisz zawsze daje radę! :P
Pełna zgoda.

> 5. Używaj camel case do nazw zmiennych, metod, parametrów czyli np.
> DecrementThreadCount a nie pokraka typu: Decrementthereadcount (tu masz
> jeszcze literówkę!)
True.

> 6. Skoro musisz hardcodować SQL w kod to zrób to za pomocą consta lub
> resourcestringa a nie pakuj go w środek kodu:
Resourcestring?
Hmm...

>   const
>    cSQL = 'select * from tabela '  +
>           'where kolumna = ':kolumna';
Zgoda, (teraz ja się czepiam) ale to dalej pokraczne, bo:
    const
     cSQL = 'select * from tabela' + sLineBreak +
            'where kolumna = ':kolumna';

Polecam CnWizards i konfigurację wizarda "Convert to string".


>   begin
>    lQuery := TQuery.Create;
>    lQuery.SQL := cSQL;
>    ...
> 
> 7. Pola klas powinny mieć prefiks f (wszystkie! i do tego nie raz F a raz
> f, tylko tak samo!)
Ja mam F, nie f - jak w źródłach producenta...
I jak widzę fDoopa, to mnie to boli, właśnie tam... ;-)

Ale nie widzę innego, a dla mnie szalenie istotnego elementu konwencji.
Prefix dla zmiennych lokalnych.
Ja zawsze używam l
A wiec nie tak:
var
     BS        : TStream;
     fs        : TFileStream;
     BlobField : TField;
     Query     : TZQuery;

tylko tak:

var
     lBS        : TStream;
     lFS        : TFileStream;
     lBlobField : TField;
     lQuery     : TZQuery;

Dlatego tak, że w kodzie od razu widzę, że to jest zmienna lokalna, a 
nie jakaś... inna.

> 8. Poczytaj co robi const w parametrach metod i zastanów się dlaczego
> powinieneś go używać
I dlaczego nie zawsze i wszędzie jest to potrzebne ;-)

> To tylko garść porad na początek, zacznij czytać książki i zacznij CZYTAĆ
> OBCY KOD - wtedy się nauczysz pisać swój.
Te małe literki a i f mnie się nie podobają.
Poza tym, Spring4D Style Guide też nie trzyma się własnych wytycznych :P
Wiem, bo pośrednio maczałem w tym swoje brudne paluchy...

>> Niestety przesyłając kod najpiekniej sformatowany w Delphi w poczcie
>> jest rozwalane formatowanie.
> 
> 9. Publikuj kod przez wklej.org lub pastebin.com, nikt Ci nie każe wklejać
> w posta
WŁAŚNIE!

>> Co Ci się nie podoba w tym formatowaniu
>> if
>> CzyJestEmailWBazie(Query,FDaneProgram.user,IdMessage.Subject,IdMessage.From.Address,IdMessage.Date)>0
> 
> Wszystko.
Bardzo treściwa odpowiedź...
Mi się np. nie podoba, że to zwraca int zamiast bool.
Samo ciało tej funkcji tez mi się nie podoba, bo aż się prosi (jeśli 
tego w ZEOS nie ma) o ClassHelper dla Connection z metodami na wzór FireDAC:
http://docwiki.embarcadero.com/Libraries/Tokyo/en/FireDAC.Comp.Client.TFDCustomConnection.ExecSQLScalar

-- 
wloochacz
Technical Details
Message-ID: <5964eeb7$0$15204$65785112@news.neostrada.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!goblin2!goblin1!goblin.stu.neva.ru!newsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!unt-spo-a-02.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
References: <5950f43c$0$15190$65785112@news.neostrada.pl> <5950ff29$0$640$65785112@news.neostrada.pl> <5952c2f7$0$15208$65785112@news.neostrada.pl> <ok1vsm$gb2$1@portraits.wsisiz.edu.pl> <d1oytca0xw8i$.dlg@tyczka.com> <ok23gn$k5m$1@portraits.wsisiz.edu.pl> <n6gl583g0iv1$.dlg@tyczka.com>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!goblin2!goblin1!goblin.stu.neva.ru!newsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!unt-spo-a-02.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
Subject: Re: Zeos Delphi XE2
Newsgroups: pl.comp.lang.delphi
References: <5950f43c$0$15190$65785112@news.neostrada.pl> <5950ff29$0$640$65785112@news.neostrada.pl> <5952c2f7$0$15208$65785112@news.neostrada.pl> <ok1vsm$gb2$1@portraits.wsisiz.edu.pl> <d1oytca0xw8i$.dlg@tyczka.com> <ok23gn$k5m$1@portraits.wsisiz.edu.pl> <n6gl583g0iv1$.dlg@tyczka.com>
From: wloochacz <wloochacz@no.spam.gmail.com>
Date: Tue, 11 Jul 2017 17:28:54 +0200
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.2.1
MIME-Version: 1.0
In-Reply-To: <n6gl583g0iv1$.dlg@tyczka.com>
Lines: 116
Message-ID: <5964eeb7$0$15204$65785112@news.neostrada.pl>
Organization: Telekomunikacja Polska
NNTP-Posting-Host: 79.186.32.57
X-Trace: 1499786935 unt-rea-a-02.news.neostrada.pl 15204 79.186.32.57:3790
X-Complaints-To: abuse@news.neostrada.pl
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit