Я часто использую этот код:
while(true) {
//do something
if(<some condition>) {
break;
}
}
Другой программист сказал мне, что это была плохая практика, и что я должен заменить ее более стандартным:
while(!<some condition>) {
//do something
}
Его рассуждение состояло в том, что вы могли "забыть перерыв" слишком легко и иметь бесконечную петлю. Я сказал ему, что во втором примере вы можете так же легко ввести условие, которое никогда не возвращалось истинным, и поэтому так же легко иметь бесконечный цикл, поэтому обе они одинаково допустимы.
Кроме того, я часто предпочитаю первый, поскольку он упрощает чтение кода, когда у вас есть несколько точек останова, т.е. несколько условий, которые выходят из цикла.
Может ли кто-нибудь обогатить этот аргумент, добавив доказательства для одной или другой стороны?