Задача по программированию

Все, что вы хотели знать о программизме, но боялись спросить.
Аватара пользователя
Tania
Частый Гость
Сообщения: 15
Зарегистрирован: 17 фев 2003, 20:04

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

Сообщение Tania » 19 фев 2003, 08:16

int f(int x)
{
if (x==2) return 3;
if (x==3) return 2;
return x;
}

Аватара пользователя
Tania
Частый Гость
Сообщения: 15
Зарегистрирован: 17 фев 2003, 20:04

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

Сообщение Tania » 19 фев 2003, 08:18

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

Аватара пользователя
Циник
Завсегдатай
Сообщения: 442
Зарегистрирован: 17 фев 2003, 17:17

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?

Аватара пользователя
Гленливет
Частый Гость
Сообщения: 38
Зарегистрирован: 18 фев 2003, 20:41
Откуда: Оттава

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

Сообщение Гленливет » 19 фев 2003, 08:58

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

Аватара пользователя
Tania
Частый Гость
Сообщения: 15
Зарегистрирован: 17 фев 2003, 20:04

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

Сообщение Tania » 19 фев 2003, 09:01

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


Именно, именно!
(Швыряет в Циника гнилым помидором.)

Аватара пользователя
Гленливет
Частый Гость
Сообщения: 38
Зарегистрирован: 18 фев 2003, 20:41
Откуда: Оттава

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

Сообщение Гленливет » 19 фев 2003, 09:29

Tania:(Швыряет в Циника гнилым помидором.)

Э, э, погодь швыряться-то.

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

Аватара пользователя
Marmot
Графоман
Сообщения: 30644
Зарегистрирован: 17 фев 2003, 17:58
Откуда: Vancouver

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

Сообщение Marmot » 19 фев 2003, 09:34

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

Аватара пользователя
Циник
Завсегдатай
Сообщения: 442
Зарегистрирован: 17 фев 2003, 17:17

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

Сообщение Циник » 19 фев 2003, 16:15

Э, э, погодь швыряться-то.


Вот именно, товарищ.

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


Серьезные, взвешенные слова не-мальчика.

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

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


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

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


Вернуться в «Программизм»

Кто сейчас на конференции

Сейчас этот форум просматривают: LDex [Bot] и 9 гостей