Страница 2 из 2

Тогда непонятно, в чем фишка

Добавлено: 19 фев 2003, 08:16
Tania
int f(int x)
{
if (x==2) return 3;
if (x==3) return 2;
return x;
}

Това-арищ Циник, откро-ой тайну

Добавлено: 19 фев 2003, 08:18
Tania
Това-арищ Циник, откро-ой тайну - чего надо-то было? А то ты как тот студент из анекдота - всё понимаешь, а сказать (так, чтоб мы поняли) не можешь...

Re: Тогда непонятно, в чем фишка

Добавлено: 19 фев 2003, 08:21
Циник
Tania писал(а):int f(int x)
{
if (x==2) return 3;
if (x==3) return 2;
return x;
}
Подсказка, уж совсем открытым текстом:
Кто просил возвращать 10, если введено 10?
Если никто не просил, зачем мы возвращаем?
Что нужно вместо этого сделать тому, кто ввел 10?

Re: Тогда непонятно, в чем фишка

Добавлено: 19 фев 2003, 08:58
Гленливет
Циник писал(а):Подсказка, уж совсем открытым текстом:
Кто просил возвращать 10, если введено 10?
Если никто не просил, зачем мы возвращаем?
Что нужно вместо этого сделать тому, кто ввел 10?
Никто не просил НЕ возвращать 10, и вообще как-то реагировать. Опытный разработчик в таком случае начинает уточнять спецификации - что, собственно, народ и сделал почти сразу же. А ты вместо ответа на вопрос начинаешь загадками говорить. Имитируешь особо трудного заказчика? :)

Re: Тогда непонятно, в чем фишка

Добавлено: 19 фев 2003, 09:01
Tania
Гленливет писал(а):Никто не просил НЕ возвращать 10, и вообще как-то реагировать. Опытный разработчик в таком случае начинает уточнять спецификации - что, собственно, народ и сделал почти сразу же. А ты вместо ответа на вопрос начинаешь загадками говорить. Имитируешь особо трудного заказчика? :)
Именно, именно!
(Швыряет в Циника гнилым помидором.)

Re: Тогда непонятно, в чем фишка

Добавлено: 19 фев 2003, 09:29
Гленливет
Tania писал(а):(Швыряет в Циника гнилым помидором.)
Э, э, погодь швыряться-то.

В принципе, конечно, это сакраментальный вопрос: что делать в ситуациях, не предусмотренных спецификацией? Есть, очевидно, два подхода: 1) никак не реагировать; 2) реагировать сообщениями об ошибке и прочей паникой. Какой подход выбрать - зависит от конкретного случая. Может статься так, что не вмешиваться - гораздо правильнее, чем вмешиваться, ибо услужливый дурак опаснее врага. Хотя, видимо, в большинстве случаев нужно реагировать.

Re: Тогда непонятно, в чем фишка

Добавлено: 19 фев 2003, 09:34
Marmot
Так мы тут о чём базарим, о программизме или о product managemente...? :-)
Девелопер должен спросить в любом случае, а вот product manager пускай думает, спросить клиента или нет...

Re: Тогда непонятно, в чем фишка

Добавлено: 19 фев 2003, 16:15
Циник
Э, э, погодь швыряться-то.
Вот именно, товарищ.
В принципе, конечно, это сакраментальный вопрос: что делать в ситуациях, не предусмотренных спецификацией? Есть, очевидно, два подхода: 1) никак не реагировать; 2) реагировать сообщениями об ошибке и прочей паникой. Какой подход выбрать - зависит от конкретного случая. Может статься так, что не вмешиваться - гораздо правильнее, чем вмешиваться, ибо услужливый дурак опаснее врага. Хотя, видимо, в большинстве случаев нужно реагировать.
Серьезные, взвешенные слова не-мальчика.

Я считаю, что правильный ответ в том виде, в котором задача дана, таков:

1. Если х не 2 и не 3, то просигнализировать исключением куда следует, иначе - пойти на п.3
2. Пойти на п.5
3. Возвратить значение (5 - х)
5. Всё.


Разумеется, в реальных условиях надо попытаться уточнить задание. Если же уточнить его невозможно, или известно, что условия полны и корректны, то необходимо проверять входной параметр на допустимость. Если это не то, что желал увидеть кастомер вашего кода, ему это будет просигнализировано исключением тотчас же, а уж он просигнализирует вам, а уж вы исправите код. В обратной ситуации (вы понадеялись, что ничего проверять не надо, а на самом деле надо) кастомер может ничего не заметить на первый взгляд, что может привести к более серьезным последствиям. Мы, конечно, здесь уходим уже в область software development из чистого программирования. Ну так жизнь она такая - ничего чистого не бывает.

Спасибо всем подискутировавшим.