Używam podczas prawdziwej pętli w wielu projektach. Służy mi dobrze i nie jest zbyt skomplikowana. Więc, dlaczego nie jest dobrym pomysłem, aby używać podczas prawdziwej pętli nieskończenie działa procesów w tle. Dziękuję za odpowiedzi.Dlaczego (prawda) jest zła praktyka?
Odpowiedz
Mój kierownik projektu nie pozwala na tego rodzaju pętli w kodzie, on twierdząc, że musi być zastąpiona przez
while(!exit_flag)
To bardzo wątpliwe . while (!exit_flag)
sugeruje, że pętla ma naturalny stan wyjścia, który osiągnie w pewnym określonym punkcie sam, np. coś licząc od 0 do 100, a następnie opuszczając pętlę. Jednakże, jeśli piszesz tę pętlę, aby utworzyć stałego demona lub pętlę zdarzeń, to punktem tej pętli jest utrzymywanie programu w nieskończoność. Nic nie mówi bezterminowo lepiej niż while (true)
.
Nie ma prawdziwej technicznej różnicy między obiema; to tylko kwestia czytelności i ekspresji intencji. Oczywiście musisz to zrobić z ludźmi, którzy na końcu przeczytają ten kod. Jeśli ich polityka to while (!exit_flag)
, niech tak będzie.
To nie jest zła praktyka, to po prostu oznacza, że nie pomyliłeś kodu.
Warunek jest wymagany, aby powiedzieć pętli, kiedy zakończyć pętlę. Jeśli masz punkt końcowy, dlaczego nie umieścić go jako warunek?
var i = 0;
while(true){
i++;
if(i == 100)
break;
}
Ten kod jest w porządku. Ale tak to jest:
var i = 0;
while(i != 100){
i++;
}
Obie metody są prawidłowe, ale jeśli ktoś czyta kod, jest o wiele łatwiej zobaczyć, gdy pętla zatrzyma Iteracja jeśli jest tam w stanie.
Hm, zapytaj tego, który twierdził, że to "zły pomysł".
Mogłem myśleć o tym, że jakakolwiek pętla działająca w nieskończoność musi w pewnym momencie się skończyć, chyba że, oczywiście, oczekujesz, że twój program będzie działać wiecznie.
Jeśli nie podano żadnych kryteriów do zakończenia, musiałby istnieć jakiś inny mechanizm do zakończenia pętli ukrytej gdzieś w pętli kodu, np. Powrót, przerwa lub (fuj - Podstawowy - ale to prawdopodobnie tam, gdzie początek instrukcji - instrukcja "Goto" skacząca gdzieś poza pętlą), aby zakończyć pętlę.
Kod taki jak ten może być trudny do odczytania i debugowania, a poprzednio wskazywał, że programista nie przejmował się pisaniem czystego kodu. Niemniej jednak w dzisiejszych czasach z aplikacjami sterowanymi zdarzeniami i strukturalnymi metodami obsługi błędów (zobacz try ... catch struktur) istnieją czyste i łatwe do odczytania sposoby wychodzenia z dowolnego rodzaju pętli w dowolnym momencie, więc podczas gdy (true) można używać bez kłopotów.
Greetz
Alina
- 1. Zła praktyka zachowania "ja"?
- 2. Dlaczego warto korzystać z Androida: configChanges to zła praktyka
- 3. Dobra praktyka czy zła praktyka wymuszania na HTTPS całej witryny?
- 4. ASP.NET MVC - TempData - dobra czy zła praktyka
- 5. Trailing slash przed ciągiem zapytania. Zła praktyka?
- 6. Czy to jest zła praktyka używać siebie w dekoratorów?
- 7. Używanie próbnych obiektów poza testowaniem, zła praktyka?
- 8. Czy nieskończona pętla to zła praktyka?
- 9. Dlaczego PRAWDA == "PRAWDA" ma wartość PRAWDA w R?
- 10. Dlaczego pozycja REGISTER_GLOBALS jest taka zła?
- 11. Dlaczego $ false -eq "" prawda?
- 12. Mieszanie biblioteki debugowania i wydania/binarnej - zła praktyka?
- 13. Implementacja kolejki C za pomocą void * - dobra lub zła praktyka?
- 14. Dlaczego 0 == "" prawda w JavaScript
- 15. Zła praktyka używania Nullable <T> z typami wartości?
- 16. Zła praktyka używania GOTO programu SQL Server do obsługi błędów?
- 17. Czy stosowanie wyjątków to zła praktyka w scala?
- 18. Czy jest wiele dziedziczenia zła?
- 19. var_dump (0 == "wszystkie"); // DLACZEGO PRAWDA
- 20. Importowanie mojej klasy singleton za pomocą Project_Prefix.pch - Zła praktyka?
- 21. Czy używasz char jako bool w C zła praktyka?
- 22. Anulowanie wątku za pomocą pthread_cancel: dobra praktyka lub zła
- 23. Czy to jest zła praktyka filtrowanie według identyfikatora w strukturze repozytorium
- 24. Dlaczego jest dziesiętny ("0")> 9999.0 Prawda w python?
- 25. Dlaczego prawda jest większa niż 3 w PHP
- 26. Migracja ManyToManyField null prawda, puste prawda, nie jest rozpoznawany
- 27. Flaga sonaru "Zła praktyka": użycie GetResource w XYZ może być niebezpieczne, jeśli klasa jest rozszerzona
- 28. Czy to jest zła praktyka, aby użyć zwrotu w metodzie void?
- 29. Wyjaśnij, dlaczego "+ [] == 0" wynik "prawda" w JavaScript?
- 30. Czy dataWithContentsOfURL jest zła podczas uruchamiania aplikacji?
'while (true)' nie jest złą praktyką. Pewne zastosowania 'while (true)' są złym zwyczajem, głównie zajętym-czekaniem, gdzie inne rodzaje oczekiwań byłyby bardziej odpowiednie, ale nie ma nic złego w samym 'while (true)'. – user2357112
Dlaczego mówisz, że to zły pomysł? – user2357112
Tak długo, jak wiesz, co robisz i masz czysty sposób na wydostanie się z niego, nie jest to zła praktyka. – Morb