Co to jest nieosiągalny kod?
Kod nieosiągalny to kod programowania, którego nie można wykonać w żadnym kontekście. Może to mieć wiele przyczyn, a wiele języków komputerowych nie pozwala na wykonanie programu, jeśli część kodu jest nieosiągalna. Problemy generowane przez nieosiągalny kod można rozwiązać, usuwając problematyczną sekcję kodu lub przepisując część kodu, aby sekcja była ponownie dostępna.
Oprogramowanie inżynierskie może stosunkowo łatwo przypadkowo utworzyć nieosiągalny kod. Wszelkie znaczące zakłócenia w przebiegu programu mogą spowodować, że sekcja kodu będzie nieosiągalna. Na przykład, przypadkowe utworzenie nieskończonej pętli może sprawić, że cały kod, który nastąpi po niej, jest nieosiągalny, ponieważ nie byłoby sposobu, aby kiedykolwiek wyjść z pętli i kontynuować program. Innym sposobem może się to zdarzyć, jeśli funkcja jest kodowana w celu zwrócenia przed wykonaniem całego kodu. W takim przypadku kod po instrukcji return byłby nieosiągalny.
Istnieją dwa sposoby generowania nieosiągalnego kodu. Po pierwsze, niewłaściwa obsługa struktur kontrolnych podczas pisania surowego kodu może spowodować, że sekcje kodu będą niedostępne. Po drugie, błędy w strukturach sterujących, które nie są oczywiste podczas procesu kodowania, ale pojawiają się, gdy program jest uruchomiony, mogą również powodować niedostępność kodu. Pierwszy typ błędu ma różne nazwy, w tym błąd kodowania lub błąd składniowy, a drugim rodzajem błędu jest błąd czasu wykonywania. Błędy kodowania są zwykle wychwytywane przez analizatory składni lub kompilatory, ale błędy w czasie wykonywania można wykryć tylko poprzez przetestowanie i uruchomienie programu po zakończeniu.
Nieosiągalny kod jest często mylony z martwym kodem, ale oba są znacznie różne. Martwy kod to kod, który wykonuje określone obliczenia, ale nie robi nic z wynikiem obliczeń. To nie to samo, co kod nieosiągalny, który nigdy nie jest w ogóle wykonywany. Zarówno nieosiągalny, jak i martwy kod można często usunąć z programu bez szkody, lub można je z powrotem zintegrować z programem, zwracając szczególną uwagę na przebieg sterowania programem. Ponadto zarówno nieosiągalny, jak i martwy kod można zwykle wykryć podczas kodowania i przed uruchomieniem programu.
Pomimo pozornie tragicznej definicji nieosiągalny kod jest często stosunkowo łatwy do naprawienia. Obecność nieosiągalnego kodu zawsze wskazuje na problem z przepływem sterowania, więc dokładna analiza przepływu sterowania przez program zwykle identyfikuje przestępczy kod w krótkiej kolejności. Jeśli przepływ kontrolny programu jest dokładnie monitorowany podczas całego procesu kodowania, prawdopodobieństwo wygenerowania nieosiągalnego kodu jest bardzo niskie.