Wat is een onbereikbare code?
Onbereikbare code is programmeercode die in geen enkele context kan worden uitgevoerd. Er zijn verschillende redenen waarom dit zou kunnen gebeuren, en veel computertalen staan het uitvoeren van een programma niet toe als een deel van de code onbereikbaar is. Problemen die worden gegenereerd door onbereikbare code kunnen worden opgelost door het problematische gedeelte van de code te verwijderen of een deel van de code te herschrijven om het gedeelte weer bereikbaar te maken.
Bij engineering-software kan het relatief eenvoudig zijn om onbedoeld onbereikbare code te maken. Elke significante verstoring in de stroom van het programma kan een codegedeelte veroorzaken dat onbereikbaar is. Het onbedoeld maken van een oneindige lus kan bijvoorbeeld alle code die erop volgt onbereikbaar maken omdat er geen manier is om ooit uit de lus te breken en door te gaan met het programma. Een andere manier waarop dit kan gebeuren is als een functie is gecodeerd om terug te keren voordat alle code is uitgevoerd. In dit geval zou de code na de retourverklaring onbereikbaar zijn.
Er zijn twee manieren waarop onbereikbare code kan worden gegenereerd. Ten eerste kan het onjuist hanteren van besturingsstructuren bij het schrijven van onbewerkte code ertoe leiden dat delen van de code onbereikbaar zijn. Ten tweede kunnen fouten in besturingsstructuren die niet duidelijk zijn tijdens het coderingsproces, maar verschijnen wanneer een programma wordt uitgevoerd, ook code veroorzaken die onbereikbaar is. Het eerste type fout heeft verschillende namen, waaronder een coderingsfout of syntaxisfout, en het tweede type fout is een runtime-fout. Coderingsfouten worden meestal opgevangen door parsers of compilers, maar runtime-fouten kunnen alleen worden gedetecteerd door het programma te testen en uit te voeren na voltooiing.
Onbereikbare code wordt vaak verward met dode code, maar de twee zijn aanzienlijk verschillende dingen. Dode code is code die een bepaalde berekening uitvoert, maar vervolgens niets doet met het resultaat van de berekening. Dit is niet hetzelfde als onbereikbare code die helemaal niet wordt uitgevoerd. Zowel onbereikbare als dode code kunnen vaak zonder schade uit een programma worden verwijderd, of ze kunnen weer in het programma worden geïntegreerd door aandachtig te letten op de besturingsstroom van het programma. Bovendien kunnen zowel onbereikbare als dode code meestal worden gedetecteerd tijdens het coderen en voordat een programma wordt uitgevoerd.
Ondanks de ogenschijnlijk slechte definitie, is onbereikbare code vaak relatief eenvoudig te repareren. De aanwezigheid van onbereikbare code duidt altijd op een probleem met de besturingsstroom, dus een zorgvuldige analyse van de besturingsstroom van een programma zal meestal de aanstootgevende code in korte volgorde identificeren. Als de besturingsstroom van een programma tijdens het coderingsproces zorgvuldig wordt bewaakt, is de kans op het genereren van onbereikbare code zeer laag.