Разве проще спать возле вызова функции в цикле или в самом вызове функции? - PullRequest
1 голос
/ 29 декабря 2011

Проще ли спать возле вызова функции в цикле или в самом вызове функции?Лично я склоняюсь к сну рядом с вызовом, а не в вызове, потому что в getApple () нет ничего, что подразумевает, что он должен поспать некоторое время, прежде чем вернуть яблоко.Я думаю, было бы яснее иметь:

for ( int i = 0; i < 10; ++i ) {
    getApple();
    sleep()
}

чем ...

for ( int i = 0; i < 10; ++i ) {
    getApple();
}

Apple getApple() {
    sleep(1);
    return new Apple();
}

Конечно, это было бы иначе, если бы метод был getAppleSlowly () или что-то.

Пожалуйста, дайте мне знать, что вы думаете.

Некоторая дополнительная информация (также в комментариях ниже, см. комментарии):

Ожидание не требуется, чтобы получитьяблоко.Ожидание состоит в том, чтобы избежать ограничения скорости запросов в минуту к API, но нет необходимости спать, если вы получаете только одно яблоко.Спящий способ не позволяет получить яблоко без сна, даже если в этом нет необходимости.Тем не менее, он имеет преимущество в том, что независимо от того, что, методы могут вызывать его, не беспокоясь о превышении ограничения скорости.Но это похоже на аргумент для переименования в getAppleSlowly ().

Ответы [ 4 ]

4 голосов
/ 29 декабря 2011

Идеально для одного метода сделать одну вещь. Поскольку получать яблоки и спать - это разные вещи, я согласен с вами, что было бы лучше, если бы они были двумя разными методами.

2 голосов
/ 29 декабря 2011

Я бы не стал помещать sleep в саму функцию, если имя функции не предполагает задержки.

Возможно, в будущем появятся другие абоненты этой функции, которые не ожидают ее отключения.

1 голос
/ 29 декабря 2011

Это очень интересный вопрос, и я думаю, что оба ваших решения несколько ошибочны."GetApple (); sleep ();"Решение страдает от того, чтобы заставить каждый getApple () делать паузу перед обработкой, даже если мы никогда больше не будем делать getApple ().«Сон (); вернуть новый Apple ();»Решение имеет аналогичные накладные расходы на первом Apple, которую мы получаем.Оптимальное решение - это что-то вроде.

1 голос
/ 29 декабря 2011

Я думаю, что это справедливый вопрос, и очень плохо помещать в метод, в котором вы, возможно, не знаете, что он там есть (представьте, что вы пытаетесь отладить медлительность вашего приложения через несколько месяцев когда вы забыли, что сделали. Сон должен быть только тогда, когда вы понимаете, почему он спит (и, вероятно, у вас есть на то веские основания для этого).

...