Kötelező és deklaratív programozás - a különbség magyarázata egyszerű

Kódolási oktatóként kötelességem a programozókat új módon gondolkodni. A gondolkodás jelentős elmozdulása akkor következik be, amikor az imperatívról a deklaratív programozásra váltunk.

Miután tanítványaim megtanulták az alapvető JavaScript-et, áttekintjük a funkcionális programozást és a deklaratív kódolási stílusban használt tömb módszereket. Itt kezdődik az agyuk pattogása, sistergése és olvadása, mint a pillecukor a tűz felett.

Mi az elengedhetetlen programozás?

Kezdőként valószínűleg többnyire imperatív stílusban kódoltál: megadod a számítógépnek a követendő utasításokat, és a számítógép könnyen követhető sorrendben megteszi, amit akar.

Képzelje el, hogy van egy listánk a világon leggyakrabban használt jelszavakról:

const passwords = [ "123456", "password", "admin", "freecodecamp", "mypassword123", ];

Alkalmazásunk ellenőrizni fogja a felhasználó jelszavát a regisztráció során, és nem engedi meg nekik, hogy ebből a listából származó jelszót hozzanak létre.

De mielőtt ezt megtennénk, finomítani szeretnénk ezt a listát. Már rendelkezünk olyan kóddal, amely nem teszi lehetővé a felhasználó számára, hogy 9 karakternél rövidebb jelszóval regisztráljon. Tehát ezt a listát csak 9 karakteres vagy annál hosszabb jelszavakra csökkenthetjük, hogy felgyorsítsuk az ellenőrzésünket.

Feltétlenül azt írnánk:

// using the passwords constant from above let longPasswords = []; for (let i = 0; i = 9) { longPasswords.push(password); } } console.log(longPasswords); // logs ["freecodecamp", "mypassword123"];
  1. Létrehozunk egy üres listát longPasswords.
  2. Ezután írunk egy ciklust, amely annyiszor fog futni, ahány jelszó van az eredeti passwordslistában.
  3. Ezután megkapjuk a jelszót abban a ciklus-iterációban, amelyen jelenleg vagyunk.
  4. Ezután ellenőrizzük, hogy ez a jelszó nagyobb-e vagy egyenlő-e 9 karakterrel.
  5. Ha igen, akkor felvesszük a longPasswordslistába.

A programozás egyik elengedhetetlen tényezője az a tény, hogy könnyen érvelni lehet vele. A számítógéphez hasonlóan lépésről lépésre követhetjük végig.

Mi az a deklaratív programozás?

De van egy másik gondolkodásmód is a kódolásról - mint arról, hogy folyamatosan meghatározzuk a dolgokat. Ezt deklaratív programozásnak nevezzük.

Az imperatív és deklaratív programozás ugyanazokat a célokat éri el. Csak különböző módon gondolkodnak a kódról. Vannak előnyeik és hátrányaik, és van alkalom mindkettő használatára.

Bár az imperatív programozás a kezdők számára könnyebben indokolható, a deklaratív programozás lehetővé teszi számunkra, hogy olvashatóbb kódot írjunk, amely tükrözi azt, amit pontosan látni akarunk. Jó változónevekkel kombinálva hatékony eszköz lehet.

Tehát ahelyett, hogy lépésről lépésre adnánk a számítógépet, kijelentjük, hogy mit akarunk, és ezt hozzárendeljük valamilyen folyamat eredményéhez.

// using the passwords constant from above const longPasswords = passwords.filter(password => password.length >= 9); console.log(longPasswords); // logs ["freecodecamp", "mypassword123"];

A listát csak 9 karakternél nagyobb vagy azzal egyenlő jelszavak szűrt longPasswordslistájaként definiálják (vagy deklarálják) passwords.

A JavaScript funkcionális programozási módszerei lehetővé teszik a dolgok tiszta deklarálását.

  • Ez a jelszavak listája.
  • Ez csak a hosszú jelszavak listája. (Futás után filter.)
  • Ez egy azonosítókkal ellátott jelszavak listája. (Futás után map.)
  • Ez egyetlen jelszó. (Futás után find.)

A deklaratív programozás egyik erőssége, hogy arra kényszerít minket, hogy először kérdezzük meg, mit akarunk. Ezeknek az új dolgoknak a megnevezésében válik kódunk kifejezővé és egyértelművé.

És amikor fejlesztőtársaink jönnek és megnézik a kódunkat, könnyebben megtalálhatják a hibákat:

"Ezt a változót" indexnek "hívod, ami számomra számít, de úgy látom, ennek az eredménye filteregy tömb. Mi van ezzel?

Arra biztatom a tanulókat, hogy a lehető leggyakrabban írják meg a deklaratív kódot, folyamatosan meghatározva (és újrafogalmazva az újradefiniálást), hogy mi a helyzet.

Ahelyett, hogy egy teljes imperatív folyamatot tartana a fejében, kézzelfoghatóbb dolgot tarthat a fejében, világos meghatározással.

Mike Zetlow a 10x Code Camp vezető oktatója .