avva: (moose)
avva ([personal profile] avva) wrote2013-05-13 01:17 am

альтернатива физзбаззу

Цитирую из подзамочной записи с разрешения автора, который работает в американской компании и интервьюирует программистов:
Интесная закономерность выявляется. Мы начинаем интервью с того, что просим кандидата прочитать вот такой код, и сказать, что он делает. Как бы он назвал эту функцию?

private static int ok(int a, int b) {
   while (a >= b) a -= b;
   return a;
}

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

[identity profile] morfizm.livejournal.com 2013-05-13 07:53 am (UTC)(link)
Ну я имел в виду нормальный код.
Если так, то я совсем недавно видел метод get, у которого есть опциональный параметр replace, равный по умолчанию true, и в случае replace он иногда делает delete.

[identity profile] mopexod.livejournal.com 2013-05-13 10:20 am (UTC)(link)
get, который делает delete - это как раз логично: сделал get, взял себе один, больше не осталось.

[identity profile] breqwas.livejournal.com 2013-05-13 06:36 pm (UTC)(link)
...вот, скажем, перловые файловые проверки: http://perldoc.perl.org/functions/-X.html
Они все булевы в том смысле, что использовать их предлагается в духе do_something() if -f $file (и их так обычно и используют), но есть одна (-s File has nonzero size), которая возвращает не 1, а число (размер файла в байтах).

Есть в этом что-то плохое? Нет, нет ничего плохого. Кто хочет, тот пишет do_something() if -s $file. Кто слишком умный, но при этом позабыл про File::stat, тот пишет $size = sum map { -s $_ } @filelist. Все довольны, TIMTOWTDI.

Я, возможно, неправ, но вроде бы ситуация, когда "булева" функция в качестве true-значения возвращает что-то более интересное, чем единицу, вполне нормальна для языков с динамической типизацией.
Edited 2013-05-13 18:38 (UTC)