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

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

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

Сообщение Tania »

int f(int x)
{
if (x==2) return 3;
if (x==3) return 2;
return x;
}
Аватара пользователя
Tania
Частый Гость
Сообщения: 15
Зарегистрирован: 17 фев 2003, 20:04

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

Сообщение Tania »

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

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

Сообщение Циник »

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: Тогда непонятно, в чем фишка

Сообщение Гленливет »

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

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

Сообщение Tania »

Гленливет писал(а):Никто не просил НЕ возвращать 10, и вообще как-то реагировать. Опытный разработчик в таком случае начинает уточнять спецификации - что, собственно, народ и сделал почти сразу же. А ты вместо ответа на вопрос начинаешь загадками говорить. Имитируешь особо трудного заказчика? :)
Именно, именно!
(Швыряет в Циника гнилым помидором.)
Аватара пользователя
Гленливет
Частый Гость
Сообщения: 38
Зарегистрирован: 18 фев 2003, 20:41
Откуда: Оттава

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

Сообщение Гленливет »

Tania писал(а):(Швыряет в Циника гнилым помидором.)
Э, э, погодь швыряться-то.

В принципе, конечно, это сакраментальный вопрос: что делать в ситуациях, не предусмотренных спецификацией? Есть, очевидно, два подхода: 1) никак не реагировать; 2) реагировать сообщениями об ошибке и прочей паникой. Какой подход выбрать - зависит от конкретного случая. Может статься так, что не вмешиваться - гораздо правильнее, чем вмешиваться, ибо услужливый дурак опаснее врага. Хотя, видимо, в большинстве случаев нужно реагировать.
Аватара пользователя
Marmot
Графоман
Сообщения: 38302
Зарегистрирован: 17 фев 2003, 17:58
Откуда: Canyon Heights
Контактная информация:

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

Сообщение Marmot »

Так мы тут о чём базарим, о программизме или о product managemente...? :-)
Девелопер должен спросить в любом случае, а вот product manager пускай думает, спросить клиента или нет...
Аватара пользователя
Циник
Завсегдатай
Сообщения: 442
Зарегистрирован: 17 фев 2003, 17:17

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

Сообщение Циник »

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

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

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


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

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