all
Business
data science
design
development
our journey
Strategy Pattern
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
Natalia Terlecka
Mariana Berga

14 marts 2023

Min Read

Hvad du skal og ikke bør gøre ved OOP

Objektorienteret programmering blev det dominerende programmeringsparadigme i 90'erne, og dets principper forbliver ekstremt værdifulde og bredt vedtaget af flere programmeringssprog (f.eks. Python, Java, TypeScript osv.). Hvis du programmerer, må du have mødt det allerede på din vej.

Konceptet er meget simpelt: forvandle alt, hvad du har brug for at arbejde med, til et objekt. Derefter er det op til dig, hvor mange og hvilken slags objekter du opretter. I dag vil jeg dele med dig, hvad jeg lærte om at adskille apparkitektur i objekter, startende med en hurtig introduktion til objektorienteret programmering (OOP).

blue arrow to the left
Imaginary Cloud logo

Hvad er objektorienteret programmering (OOP)?

Det er et programmeringsparadigme, der strukturerer et softwareprogram i henhold til objekter. Kort sagt, det opretter objekter, der indeholder funktioner og data. Dette paradigme er stærkt afhængig af begrebet klasser og objekter.

Med andre ord, i et OOP-sprog skrives kode for at definere klasserne og de respektive objekter ved at følge fire principper: indkapsling, abstraktion, arv og polymorfisme.

blue arrow to the left
Imaginary Cloud logo

Objektorienterede programmeringsprincipper

Søg andre steder på nettet, og du vil hurtigt finde en liste over principper, der er knyttet til OOP. Disse er: indkapsling, abstraktion, arv og polymorfisme. Lad os se, hvad disse principper faktisk betyder:

  • Indkapsling: en enheds attributter er indesluttet i sig selv. Med andre ord er indkapsling, når et objekt (inde i en klasse) holder sin tilstand privat og kun afslører de valgte oplysninger. Dette princip kræver evnen til at definere nogle felter som enten private eller offentlige.
  • Abstraktion: skjul vigtige oplysninger for at reducere kompleksiteten. Det er, når brugeren kun interagerer med bestemte objekts metoder og/eller attributter. Ved at skjule komplekse detaljer for brugeren reducerer abstraktion følgelig kompleksiteten.
  • Arv: som navnet antyder, kan et objekt arve attributter fra andre objekter. Mere præcist kan forældreklasser udvide deres attributter og adfærd til underklasser, hvilket også betyder, at dette princip understøtter genanvendelighed.
  • Polymorfisme: enheder kan have mere end én form. Derfor 'poly'. Sammenfattende er polymorfisme, når objekter er designet til at dele adfærd. Ved at tilsidesætte eller overbelaste kan den samme metode udføre forskellige adfærd.

The four OOP Principles

Det er dog ikke her, jeg vil fokusere på denne artikel. I det mindste ikke på den mere lærde version af de objektorienterede programmeringsprincipper. Her finder du mere praktisk viden om objektorienteret programmering og reel indsigt i, hvordan man forbedrer sig inden for kunsten at forvandle alt til et objekt. I slutningen af denne artikel vil det være helt klart, hvorfor det er relevant for alle, der programmerer derude.

blue arrow to the left
Imaginary Cloud logo

Hvad du skal og ikke bør gøre ved OOP

1. Vær ikke bange for at oprette for mange klasser

I min programmeringserfaring vil jeg altid huske den dag, hvor jeg åbnede et af de store projekter, og mængden af filer i det var simpelthen overvældende. Det er da jeg tænkte: dette er umuligt at forstå. Konceptet med at omdanne en simpel idé til en enorm mængde filer virker som en overkill, men meget ofte er det ikke.

For mig er det spørgsmål, jeg stiller mig selv mest, når jeg designer app-arkitektur, „skal jeg oprette et objekt til det?“ Og det meste af tiden er svaret ganske enkelt:

Ja, det burde jeg.

I sidste ende, det er meget lettere at læse 10 filer med forskellige objekter med navne, der repræsenterer deres funktion end 1 stor bunke kode der gør alt. Det eneste problem her er at organisere den store mængde filer, du opretter, i en struktur, der kan være let at forstå og søge igennem efter alle, der kan hente dit arbejde senere.

Som en iOS udvikler, Jeg følger, hvad de fleste iOS-udviklere bruger, hvilket er MVC model, og jeg forsøger altid at organisere filer i mapper I stedet for bare at smide dem alle sammen ét sted.

2. Brug mere underklassificering

I stedet for at oprette en klasse og give den et sæt egenskaber og enumtyper, der skal konfigureres, så tænk, om det ikke ville være bedre bare at adskille dem i elegante underklasser for lettere identifikation af hvad de rent faktisk gør, hvilket efterlader basen en generisk nok til at fortsætte med at skalere den senere.

3. Gør objekter generiske

En af skønhederne ved objektorienteret programmering er, at klasserne for objekter, du opretter, kan genbruges i andre projekter, hvilket er en enorm tidsbesparelse. Tænk over det, når du opretter objekter og gør dem generiske. Underklassingsmetoden kan helt sikkert hjælpe dig med at gøre det.

Det er bedre at adskille klassen for at styre API-opkald eller i appkøb til den generiske, som du kan bruge på tværs af dine projekter og underklasse med en bestemt, der henter dig de data, du har brug for.

4. Riv ikke genstande fra hinanden

Nogle gange er jeg nødt til at oprette en metode, der kræver, at mange egenskaber videregives. Jeg vil ikke bede om hver enkelt efter en, så jeg besluttede at lægge dem alle i en ordbog eller en matrix og videregive den.

Det virker praktisk nok, men det er det aldrig.

Jeg vender tilbage til det en måned senere, eller værre, en anden prøver at bruge det, og de har virkelig svært ved at sammensætte egenskaberne nøjagtigt som jeg gjorde, og måske endda bruge lidt tid på at fejlsøge, hvorfor en af dem opfattes som nul på deres vej.

I sidste ende, det er meget lettere at passere hele objektet hvoraf egenskaberne tilhører, selvom det har meget mere, end du har brug for. Denne løsning også skalerer bedre fordi du aldrig ved, hvornår du har brug for hele objektkonteksten, selvom du bare starter med en lille del af den.

Alle de programmeringssprog Jeg ved, at jeg er objektorienteret, og alligevel finder jeg stadig forskellige måder at besvare dette enkle spørgsmål på: hvilken slags objekter skal repræsentere dette? Mængden af muligheder kan udgøre en udfordring, når det kommer til objektorienteret programmering, men alternativet til ikke at bruge er hverken levedygtigt eller ønskeligt.

blue arrow to the left
Imaginary Cloud logo

Konklusion

Det objektorienterede programmeringsparadigme fokuserer på objekter og om, hvordan disse objekter interagerer. Det kræver, at udvikleren planlægger kodningen på forhånd, hvilket fører til bedre datastruktur og muliggør genanvendelighed.

Dette paradigme indebærer fire hovedprincipper (indkapsling, arv, polymorfisme og abstraktion), der skal følges, når man udvikler en objektorienteret software.

Når OOP implementeres, vil nogle af bedste anbefalinger udviklere kan ansøge er:


1. Opret så mange klasser som nødvendigt;

2. Brug flere underklasser;

3. Gør objekter mere generiske;

4. Riv ikke genstande fra hinanden.

Grow your revenue and user engagement by running a UX Audit! - Book a call

Fandt du denne artikel nyttig? Du kan måske også lide disse!

blue arrow to the left
Imaginary Cloud logo
blue arrow to the left
Imaginary Cloud logo
blue arrow to the left
Imaginary Cloud logo
blue arrow to the left
Imaginary Cloud logo
blue arrow to the left
Imaginary Cloud logo
blue arrow to the left
Imaginary Cloud logo
blue arrow to the left
Imaginary Cloud logo
Natalia Terlecka
Natalia Terlecka

En senior iOS-udvikler, der er en del af et fleksibelt iOS-team og giver enkeltpersoner mulighed for at nå deres drømme og mål.

Read more posts by this author
Mariana Berga
Mariana Berga

Marketing praktikant med særlig interesse for teknologi og forskning. I min fritid spiller jeg volleyball og forkæler min hund så meget som muligt.

Read more posts by this author

People who read this post, also found these interesting:

arrow left
arrow to the right
Dropdown caret icon