Smalkais stils
Sendienās, kad rakstīju paskālā, manām funkcijām arvien bija tieši viens izejas punkts - funkcijas beigās. Dažādie iespējamie izpildes ceļi tika būvēti ar if-then konstrukcijām lielā dziļumā, boolean tipa karodziņiem (bija standarta nosaukumi continue, changes_done
utml.). Lai vai kā, katra funkcija tomēr tika izpildīta no sākuma līdz beigām, ar lielākiem vai mazākiem lēcieniem pāri izlaižamajiem koda gabaliem.
Function saknes(a,b,c:integer);
Var res: string;
d: integer;
Begin
If (a = 0) Then
res := 'nav kvadrātvienādojums'
Else Begin
d := b*b - 4*a*c;
If (d < 0) Then
res := 'sakņu nav';
If (d = 0) Then
res := '1 sakne';
If (d > 0) Then
res := '2 saknes';
End;
saknes := res;
End;
Citādi jau nevarēja - nebija tāda return
operatora.
Tagad apmēram vienādi daudz lietoju Python, PHP un Javascript. Ievēroju, ka manas funkcijas vairs nav tādas, kā agrāk, - tagad funkcijām ir apmēram tikpat izejas punktu, cik ir būtiski atšķirīgu izpildes ceļu. Apmēram šādi:
function saknes(a,b,c):
if (a == 0) return 'nav kvadrātvienādojums'
d = b*b - 4*a*c
if (d < 0) return 'sakņu nav'
if (d == 0) return '1 sakne'
if (d > 0) return '2 saknes'
Manuprāt, šādi ir lasāmāk - ja, piemēram, funkcijas sākumā ir 7 ievaddatu korektuma pārbaudes, nav jātaisa if-then
konstrukcijas 7 līmeņu dziļumā un/vai jālieto karodziņi.
Vienu brīdi, kad šīs stila, piegājiena un metodes izmaiņas ievēroju, palika bailīgi - vai otrais paraugs - ar daudzām izejām no funkcijas - nav slikts (līdzīgi, kā goto, break
utml.) Pagudroju, nekādi sliktumi nenāca prātā. Visā visumā, tas atgādina tādu elastīgāku switch
operatoru.
Man gadās visādas muļķības izdomāt - varbūt otrajam variantam tomēr ir kāds ievērojams trūkums?