Когда я принимал CS в колледже (середина 80-х), одна из идей, которые постоянно повторялись, заключалась в том, чтобы всегда писать циклы, которые проверяются сверху (хотя ...), а не внизу (do ... while) цикла. Эти понятия часто подтверждались ссылками на исследования, в которых показано, что циклы, которые были опробованы в верхней части, статистически гораздо более правильны, чем их сравнительные результаты.Проверьте петли сверху или снизу? (в то время как vs. do while)
В результате я почти всегда пишу петли, которые проверяют вверху. Я не делаю этого, если он вводит дополнительную сложность в коде, но этот случай кажется редким. Я замечаю, что некоторые программисты склонны почти исключительно писать петли, которые проверяют внизу. Когда я вижу, как конструкты:
if (condition)
{
do
{
...
} while (same condition);
}
или обратное (if
внутри while
), это заставляет меня задаться вопросом, если они на самом деле написал это таким образом, или если они добавили if
заявление, когда они поняли, что петля не отрегулировали нулевой случай.
Я сделал несколько поисковых запросов, но не смог найти литературы по этому вопросу. Как вы, ребята (и девочки), пишете свои петли?
«статистически более вероятно, будет правильно» Забудьте статистику. Доказательство условия сверху цикла является простым. Доказательство условия нижнего цикла намного сложнее. – 2008-10-22 00:35:00
Вопрос: http://stackoverflow.com/questions/224138/infinite-loops-top-or-bottom – CesarB 2008-10-22 01:16:44
У меня был профессор CS около 1997 года, провозглашающий, что ваши два выбора в программировании были C или Pascal, и что вы должны выбрать Pascal, потому что он не позволял вам увеличивать счетчики циклов внутри цикла. Возможно, он был прав, но мальчик был неправ. – MusiGenesis 2008-10-22 02:23:20