jacob og bjarke

Uptimes IT-arkitekt: Forståelse af funktionel programmering skader ingen udvikler

Det mest almindelige udviklingsparadigme i moderne udviklingsmiljøer er objektorienteret programmering (OOP). Et alternativ til OOP er funktionel programmering. Den funktionelle programmering har sine egne fordele, og selvom den funktionelle tilgang ikke passer til enhver løsning, hjælper viden om dens kerneprincipper til at skrive bedre kode.

Det mener Uptimes .NET-udvikler og IT-arkitekt Tanel Hiob.

– I funktionel programmering beskriver vi processen, mens vi i OOP definerer objekter, der gør bestemte ting. Den funktionelle tilgang har fokus på, hvad der skal til for at gennemføre processen, og hvad konsekvenserne er, forklarer han.

Filosofisk er det en ret anderledes tilgang og kræver noget øvelse, men ikke desto mindre er det investeringen værd. For funktionel programmering har på flere områder fordele sammenlignet med OOP, mens det på andre områder halter bagud.

– Typisk resulterer den funktionelle tilgang i en betydelig kortere kode, der kan skrives hurtigere og mere effektivt. Oftest er der færre bugs, fordi du fanger fejlene i udviklingsprocessen, inden softwareløsningen sendes på gaden, forklarer Tanel Hiob, mens han understreger, at OOP stadig skal foretrækkes i til løsninger, der kræver højeste performance.

– Læsbarheden og den mere logiske struktur i funktionel programmering har sin pris målt på ydeevne og hastighed. Derfor anbefaler vi at bruge den funktionelle tilgang til forretningsapplikationer og andre mindre intensive applikationer, mens objektorienteret programmering sættes i spil til højtydende løsninger som for eksempel brugergrænseflader, understreger Tanel Hiob.

Ronni og Nick arbejder

Et perfekt kompromis

Mens OOP og funktionel programmering tidligere blev behandlet som to separate tilgange til IT-udvikling, kan vi se flere og flere tegn på, at den ene påvirker den anden. Du kan allerede i dag se tilgange, der stammer fra funktionel programmering i mange udvikleres arbejde. Tag for eksempel brugen af ​​konstante variabler, lambdaer og rene funktioner.

– I dag er funktionelle programmeringssprog og OOP-sprog ret tydeligt at skelne, men som tiden går, påvirker det ene det andet, og grænserne udviskes en smule, mener Tanel Hiob og kommer med et eksempel.

– Mange af byggestenene i funktionel programmering har fundet vej til JavaScript i form af kort- og filterfunktioner eller endda i form af funktionelle komponenter i React, mens det nye .NET introducerede non-nullable, tuple og record til C#, forklarer IT-arkitekten.

Som udvikler kan du naturligvis også bruge både OOP og funktionelle programmeringsparadigmer i det samme projekt. Den funktionelle tilgang er let at anvende, når du bygger løsninger fra bunden, men du kan selvsagt også bygge en hel tjeneste baseret kun på OOP-principperne og bruge den funktionelle tilgang til en undertjeneste. Her er der en gevinst at hente, hvis du anvender .NET, C# og F#, der fungerer flydende sammen side og side.

– Det er værd at huske på, at selvom flere OOP-sprog langsomt begynder at anvende de muligheder, funktionel programmering giver, så omfatter de sprog, der er skabt specifikt til den tilgang, såsom F#, Clojure eller Haskell en række muligheder, der ikke findes andre steder, forklarer Tanel Hiob.

For eksempel kan F# allerede hente tabeller eller data fra en database, når koden skrives. Det gør autofuldførelse til en leg, ligesom optionstyper, delvis anvendelse af funktioner og afhængighedsinjektion under kompilering også er stærke fordele.

– Bedre læsbarhed, færre potentielle fejl, bedre udviklingshastighed og forbedret kodekvalitet er hovedargumenterne for funktionel programmering sammen med alle bekvemmelighedsfunktionerne, understreger Tanel Hiob.

johan og ronni

Begge paradigmer har deres fordele

Moderne udviklingsmiljøer er styret af OOP, og det vil sandsynligvis fortsætte i nogen tid. Det betyder dog ikke, at udviklere skal lægge den funktionelle tilgang op på hattehylden.

Du bør i stedet forsørge at blive fortrolige med den funktionelle tilgang og om muligt gøre brug af den i nogle af dine projekter, mener Tanel Hiob.

– Juniorudviklere bør helt sikkert starte med at lære OOP, finde et job, omsætte deres viden i praksis og derefter gå på jagt i den funktionel programmering. Erfarne udviklere bør lære dets principper at kende og prøve at tage disse i brug hist og her, indtil der åbner sig mulighed for at udvikle en løsning udelukkende baseret på principperne for funktionel programmering, lyder rådet fra Tanel Hiob.

Han fremhæver, at selvom du ikke kan bruge det funktionelle programmeringsparadigme i dit daglige arbejde, vil det at holde principperne i tankerne også bidrage til at skabe bedre OOP-baserede applikationer.

– Det får dig til at tænke anderledes og være mere opmærksom på forskellige vigtige detaljer, understreger Tanel Hiob.