Inne odpowiedzi są już bardzo dobre i wiem, że twój przykład jest tylko przykładem, ale chcę wskazać dużą część tego procesu, który nie został jeszcze omówiony:
Musisz zidentyfikować swoje założenia, a następnie przetestować je na podstawie przypadków narożnych.
Patrząc na twój przykład, widzę kilka założeń:
- Podejście rekurencyjne ostatecznie spowoduje błąd.
- Nikt nie zobaczy tego błędu, ponieważ odtwarzanie filmów trwa zbyt długo, aby osiągnąć limit stosu.
Inni ludzie dyskutowali o pierwszym założeniu, ale spójrz na drugie: co jeśli moje wideo ma ułamek sekundy?
I pewnie, może nie jest to bardzo częsty przypadek użycia. Ale czy naprawdę jesteś pewien, że nikt nie załaduje bardzo krótkiego filmu? Zakładasz, że filmy mają minimalny czas trwania i prawdopodobnie nawet nie zdałeś sobie sprawy, że coś zakładałeś! Czy to założenie może powodować inne błędy w innych miejscach Twojej aplikacji?
Niezidentyfikowane założenia są ogromnym źródłem błędów.
Tak jak powiedziałem, wiem, że twój przykład jest tylko przykładem, ale ten proces identyfikacji twoich założeń (który jest często trudniejszy niż się wydaje), a następnie wymyślenie wyjątków od tych założeń jest ogromnym czynnikiem przy podejmowaniu decyzji, gdzie spędzić czas.
Więc jeśli pomyślisz, że „nie powinienem był tego programować, ponieważ to się nigdy nie wydarzy”, powinieneś poświęcić trochę czasu, aby naprawdę zbadać to założenie. Często będziesz myśleć o narożnych przypadkach, które mogą być bardziej powszechne niż początkowo sądziłeś.
To powiedziawszy, jest moment, w którym staje się to ćwiczeniem daremności. Prawdopodobnie nie obchodzi Cię, czy Twoja aplikacja JavaScript działa idealnie na kalkulatorze TI-89, więc poświęcenie na to jakiejkolwiek ilości czasu jest po prostu zmarnowane.
Inne odpowiedzi już to omówiły, ale zaproponowanie granicy między „to jest ważne” a „to strata czasu” nie jest nauką ścisłą i zależy od wielu czynników, które mogą być całkowicie różne od jednego osoba lub firma do innej osoby.
Ale ogromną częścią tego procesu jest najpierw identyfikacja twoich założeń, a następnie próba rozpoznania wyjątków od tych założeń.