Dynamische talen (vervolg)

Een voordeel van static typed languages is dat de IDE je makkelijker kan helpen met autocomplete. Je bent minder lang bezig met het zoeken naar de methode die je wilt gebruiken. En als de methode nog niet bestaat wil de IDE wel een stub voor je genereren op de juiste plek. Je kunt dus vrij snel code schrijven.

Code moet je echter ook lezen en dat doen we eigenlijk veel meer dan code schrijven. Als de code makkelijker te lezen is en dus makkelijker te begrijpen kunnen we ook sneller programmeren.

Wat voorbeelden van moeilijk leesbare code zien we in Java met generics:

1
Map <Long, CompanyDataInt> companiesMap = new HashMap <Long, CompanyDataInt>();

Het kan nog erger als je een collectie van een collectie typesafe wilt maken. De zelfde code nu in Smalltalk:

1
companiesMap := MappedCollection new.

Een stuk minder code en veel sneller te lezen en te begrijpen. Een voorbeeld waar extra code wel toegevoegde waarde heeft zien we bij named arguments.

In onderstaande Java code moet je de methode definitie kennen om te weten wat de rol van de argumenten is.

1
companiesMap.put(company.getCompanyId(), company);

Smalltalk bevat named arguments:

1
companiesMap at: (company companyID) put: company.

Nu net zo veel code, maar de named arguments geven beter weer wat de rollen van de argumenten zijn. Het is extra informatie voor de lezer en niet voor de compiler.

Share/Save/Bookmark

1 comment to Dynamische talen (vervolg)

  • Met generics geef je explicit aan welke data types je waardes moeten voldoen binnen een collectie. Je bent imperatief bezig en is trouwens, volgens mij, makkelijker te lezen omdat je weet wat voor types er in die collectie voorkomen. De code van smalltalk (dynamisch) is inderdaad korter maar is wel voor de developer te raden of uitzoeken welke data types er in die collectie voorkomen. En het is gevoelig voor excepties.

Leave a Reply

 

 

 

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>