Blog Ben Meijs | Discussies over de toegevoegde waarde van objectgeoriënteerd programmeren met ABAP

Aan het begin van de 21e eeuw introduceerde SAP object georiënteerd (ObjectOriented of OO) programmeren met ABAP. Vanaf release R/3 4.6C werd het mogelijk gebruik te maken van globale klassen en interfaces en principes als overerving en ‘encapsulation’ toe te passen. ABAP werd hierdoor een hybride programmeertaal: een mix van oude en nieuwe concepten en technieken. De officiële naam van de programmeertaal veranderde in ABAP Objects.

Het is 2017 en nog steeds krijg ik bij tijd en wijle de vraag: waarom zou je klassen en methoden gebruiken als het ook simpeler kan met routines en functies? Deze vraag kan afkomstig zijn van een projectleider, die bang is dat objectgeoriënteerd programmeren meer tijd kost dan 'gewoon' programmeren. Functionele consultants, vooral als ze in een grijs verleden zelf ABAP-programmeur zijn geweest, vinden het soms wel veel gedoe, vooral als ze de code niet meer zo goed kunnen lezen. Sommige programmeurs hebben moeite hun weg te vinden in complexe code en geven objectoriëntatie hiervan de schuld.

Je zou bovenstaande ook als volgt kunnen samenvatten: Hoewel mobiele en webapplicaties, die bijna iedereen dagelijks gebruikt, gebaseerd zijn op objectgeoriënteerde concepten en programmeertalen en OO-Design en OO-Programmeren de facto industriestandaard zijn, twijfelen nog te veel mensen aan de toegevoegde waarde van OO als het over SAP en ABAP gaat. Volgens hen wegen de voordelen van objectoriëntatie niet op tegen de hierboven genoemde nadelen. Deze twijfel wil ik in deze blog wegnemen.

Het is niet de OO-programmeertaal maar het OO-concept dat telt

Goede software voldoet aan een aantal kenmerken, zoals onderhoudbaarheid, stabiliteit en goede performance (ISO25010). De ‘IT-geleerden’ hebben op basis daarvan objectgeoriënteerde principes gedefinieerd zoals SRP (Single Responsibility Principle) en DRY (Don’t Repeat Yourself) en ontwikkelmethodieken en architecturen ontwikkeld die tot de best mogelijke software leiden. OO-talen zoals Java, C#, JavaScript en dus ook ABAP sluiten hier het beste bij aan, omdat zij concepten als ‘Encapsulation’, ‘Inheritance’ en ‘Interface Segregation’ in meerdere of mindere mate ondersteunen. Het is mogelijk om OO-principes (deels) te realiseren met niet-objectgeoriënteerde programmeertalen, zoals je ook een plank kunt doorzagen met een vijl. Het kan wel, maar het is niet handig. Voor een leuke discussie hierover, zie “Do we really need OO languages to manage software complexity?”.

Objectgeoriënteerd ABAP-programmeren is dus een middel, niet een doel. Het gaat bij ABAP-objects niet over het gebruik van klassen en van statements zoals CALL METHOD, maar over het correct toepassen van OO-concepten. Een goed ontwerp van je software, gebaseerd op OO-principes, is hierbij van cruciaal belang. Het ligt voor de hand om zo’n ontwerp vervolgens te realiseren met een objectgeoriënteerde programmeertaal.

De vlakke leercurve – is objectoriëntatie een te dure hobby?

Het argument dat objectgeoriënteerd programmeren meer tijd kost dan procedureel programmeren is soms valide. Echter, de oorzaak hiervan is niet objectoriëntatie zelf, maar het feit dat het veel tijd kost om deze nieuwe manier van denken onder de knie te krijgen. Deze vlakke leercurve heeft een aantal oorzaken:

  • Objectgeoriënteerd ontwerpen en bouwen is wezenlijk anders dan procedureel programmeren. Veel ABAP-programmeurs die ik ken hebben geen formele IT-opleiding gehad en moeten hun OO-kennis opbouwen met behulp van cursussen en veel vallen en opstaan. Ik val zelf ook in die categorie.
  • Er is geen technische noodzaak om de stap te zetten: de ABAP-taal is een hybride taal, die anno 2017 nagenoeg alle procedurele concepten en statements uit 1992 nog steeds ondersteunt.
  • ABAP-programmeurs krijgen geen kans om de stap te zetten: veel ABAP-ontwikkelaars zijn vooral bezig met het aanpassen van bestaande, procedureel opgezette programma’s. Het heeft dan meestal geen zin om objectgeoriënteerde concepten te introduceren.
  • Er is geen tijd voor coaching: om de OO-stap te kunnen zetten is inhoudelijke coaching noodzakelijk. Dat kost niet alleen tijd maar er moet ook iemand beschikbaar zijn.

De vlakke leercurve veroorzaakt een kip-ei probleem; OO mag om planningsredenen niet worden toegepast als gevolg van onvoldoende kennis en ervaring, en er is onvoldoende kennis en ervaring omdat OO niet mag worden toegepast.

De stap naar OO - geen hobby maar noodzaak

Naast de algemene voordelen die verbonden zijn aan het toepassen van OO-concepten, zijn er ook andere redenen om de stap zo snel mogelijk te zetten:

  • Nieuwe functionaliteiten van SAP zijn gebaseerd op OO-concepten. Van een programmeur wordt verwacht dat debuggen van OO-programma’s geen probleem is.
  • OO-kennis is nodig om frameworks zoals BOPF en SADL snel te kunnen doorgronden.
  • Je kunt de nieuwe mogelijkheden van de ABAP-taal, zoals ‘method chaining’, ‘string templates’ en ‘inline declarations’, optimaal benutten.
  • De ABAP-programmeertaal gaat steeds meer lijken op andere OO-talen. Dat maakt het makkelijker om programma’s geschreven in andere programmeertalen in ieder geval te kunnen lezen.

Wil je als programmeur over 3 tot 5 jaar nog steeds inzetbaar zijn, dan moet je echt aan de slag! Niet alleen met HANA en FIORI, maar ook met OO. Als je een werkgever hebt die je hierbij wil helpen, grijp dan die kans met twee handen aan. Ben je op jezelf aangewezen, dan nog is het je eigen carrière, je eigen toekomst, je eigen verantwoording.

Als je na het lezen van dit stuk wel aan de slag wilt met OO, maar niet goed weet hoe heb ik nog een aantal praktische tips:

  • Pas OO slim toe en schiet niet met een kanon op een mug. Het definiëren van een domeinmodel met verkooporders, klanten, artikelen en prijzen om deze vervolgens alleen als een eenvoudige lijst weer te geven is overdreven. Zorg wel altijd voor het scheiden van User Interface en business logica. 
  • Vraag hulp aan mensen met OO-ervaring.
  • Volg een van de vele gratis cursussen die je op internet kunt volgen.
  • Lees wat anderen over OO te zeggen hebben. Er zijn talloze goede boeken en blogs.
  • En vooral: Just Do It!

 

Reacties

CialisDum schreef op :
cialis 5 mg 28 stuck preis

buy cialis online

cialis cheap

buy cialis super active+
CialisDum schreef op :
does cialis cause palpitations

cialis cheap

cialis generic

buy lady uk cialis
susirugoiwuoc schreef op :
Let's [URL=http://iidmt.com/cheap-viagra/#viagra-pills-100- … - cheap viagra[/URL - suprapubic religion, outreach re-attach verbalizing, [URL=http://jasminekabuyajardin.com/canadian-pharmacy … - propecia pharmacy[/URL - epistaxis, images look tunnel mouth- [URL=http://phanrang.net/ventolin/#ventolin-hfa-jf1 - salbutamol inhaler buy online[/URL - level, urgently: only rugby, rude [URL=http://singtothedawn.com/cialis-online/#cialis-o … - cialis[/URL - manipulation, boxes cialis flowing pulsus expanding [URL=http://space-monkeystudios.com/on-line-pharmacy/ … - canadian pharmacy cialis 20mg[/URL - bore these excellent catalyst acknowledge [URL=http://rozariatrust.net/viagra-online/#buying-vi … - cheap viagra no prescription[/URL - smooth complain articulation, hormones, vaginitis, [URL=http://mfrproductions.com/cialis-coupon/#cialis- … - lowest price cialis 20mg[/URL - post-occlusion intuitively efficiency dimpling, erratically shake?
mlbrasonx schreef op :
merck generic propecia propecia online buy generic propecia uk propecia generic
ViagraGenDum schreef op :
buy quality viagra online

buy viagra

buy viagra

viagra 50mg price in india
mlsabekom schreef op :
is viagra addictive viagra generic scary movie 4 viagra buy viagra online
mlsabekol schreef op :
is viagra addictive viagra generic scary movie 4 viagra buy viagra online
ViagraGenDum schreef op :
viagra gratuit essai

buy viagra

buy viagra

viagra commande par cheque
mlsabekot schreef op :
is viagra addictive viagra generic scary movie 4 viagra buy viagra online
ViagraGenDum schreef op :
viagra online discreetly

cheap viagra

viagra generic

sales viagra india

Plaats reactie

Even geduld a.u.b.

Meest gelezen