Co to jest nieosiągalny kod?
Nieosiągalny kod to kod programowania, którego nie można wykonać w żadnym kontekście. Istnieje wiele powodów, a wiele języków komputerowych nie pozwala na wykonanie programu, jeśli sekcja kodu jest nieosiągalna. Problemy wygenerowane przez nieosiągalne kod można naprawić przez usunięcie problematycznej sekcji kodu lub przepisanie części kodu, aby sekcja była rejestracyjna.
Podczas oprogramowania inżynieryjnego może być stosunkowo łatwe do nieumyślnego utworzenia nieosiągalnego kodu. Wszelkie znaczące zakłócenia przepływu programu mogą potencjalnie spowodować nieosiągalną sekcję kodu. Na przykład przypadkowe tworzenie nieskończonej pętli może uczynić cały kod, który pojawia się po niej nieosiągalnym, ponieważ nie byłoby sposobu, aby wyrwać się z pętli i kontynuować program. Innym sposobem, w jaki może się to zdarzyć, jest kodowanie funkcji, aby zwrócić przed wykonaniem całego kodu. W takim przypadku kod po oświadczeniu zwrotnym byłby nieosiągalny.
Istnieją dwa sposoby wygenerowania nieosiągalnego kodu. Po pierwsze, niewłaściwe obsługa struktur sterowania podczas pisania kodu RAW może skutkować sekcjami kodu, które są nieosiągalne. Po drugie, błędy w strukturach kontroli, które nie są oczywiste podczas procesu kodowania, ale pokazują się, gdy program jest uruchamiany, mogą również powodować nieosiągalny kod. Pierwszy typ błędu przechodzi różne nazwy, w tym błąd kodowania lub błąd składniowy, a drugi typ błędu jest błąd środowiska wykonawczego. Błędy kodowania są zwykle łapane przez parsery lub kompilatory, ale błędy czasu wykonawczego można wykryć tylko poprzez testowanie i uruchomienie programu po zakończeniu.
Nieosiągalny kod jest często mylony z martwym kodem, ale oba są znacząco różnymi rzeczami. Martwy kod to kod, który wykonuje określone obliczenia, ale potem nic nie robi z wynikiem obliczeń. To nie jest to samo, co kod, który jest nieosiągalny, który nigdy nie jest exew ogóle cięte. Zarówno nieosiągalny, jak i martwy kod można często usunąć z programu bez szkód, lub można je zintegrować z powrotem do programu, zwracając szczególną uwagę na przepływ kontroli programu. 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 problem z przepływem kontrolnym, więc staranna analiza przepływu kontroli programu zwykle określa kod przestępstwa w krótkim czasie. Jeśli przepływ kontroli programu jest starannie monitorowany przez cały proces kodowania, prawdopodobieństwo generowania nieosiągalnego kodu jest bardzo niskie.