|
|
|
Возвращаемое значение
|
|||
|---|---|---|---|
|
#18+
Негде почитать по этому вопросу, но всё как бы интуитивно понятно, но.... В общем, если метод возвращает целочисленное значение, то почему в случае неудачи он должен возвращать некоторое отрицательное значение? Просьба хотя бы пару ссылок. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2010, 16:29:54 |
|
||
|
Возвращаемое значение
|
|||
|---|---|---|---|
|
#18+
dmitriyche, 1. Метод никому ничего не должен. 2. Потому что если и при нормальном стечении обстоятельств и при ошибке он будет возвращать натуральные числа, то без костыля не узнать, чем является возвращаемое значение - кодом ошибки или результатом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2010, 16:37:46 |
|
||
|
Возвращаемое значение
|
|||
|---|---|---|---|
|
#18+
dmitriycheВ общем, если метод возвращает целочисленное значение, то почему в случае неудачи он должен возвращать некоторое отрицательное значение? Интересно, это откуда Вы такое требование взяли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2010, 16:43:09 |
|
||
|
Возвращаемое значение
|
|||
|---|---|---|---|
|
#18+
an0nym, Давайте рассмотрим этот метод Понятно, что строка это массив и в ней не может быть элемента с отрицательным индексом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2010, 16:43:33 |
|
||
|
Возвращаемое значение
|
|||
|---|---|---|---|
|
#18+
dmitriyche Понятно, что строка это массив и в ней не может быть элемента с отрицательным индексом И? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2010, 16:46:03 |
|
||
|
Возвращаемое значение
|
|||
|---|---|---|---|
|
#18+
Вот, к примеру, есть у вас метод или функция, который/ая должна добавлять запись в таблицу БД и возвращать сгенерированный автоинкрементальный id. Что вы будете возвращать в случае неудачной попытки добавить запись? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2010, 16:49:13 |
|
||
|
Возвращаемое значение
|
|||
|---|---|---|---|
|
#18+
Перефразирую В общем, если метод (в процессе выполнения которого может произойти сбой) возвращает целочисленное значение, то почему в случае неудачи он должен возвращать некоторое отрицательное значение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2010, 16:52:03 |
|
||
|
Возвращаемое значение
|
|||
|---|---|---|---|
|
#18+
dmitriyche, вот именно. Представьте, что у вас строка Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2010, 16:53:00 |
|
||
|
Возвращаемое значение
|
|||
|---|---|---|---|
|
#18+
dmitriycheВот, к примеру, есть у вас метод или функция, который/ая должна добавлять запись в таблицу БД и возвращать сгенерированный автоинкрементальный id. Что вы будете возвращать в случае неудачной попытки добавить запись? throw new Exception? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2010, 16:54:20 |
|
||
|
Возвращаемое значение
|
|||
|---|---|---|---|
|
#18+
an0nym, я не про то спрашивал, ваш ответ инвалидный *имхо ставить не буду ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2010, 16:55:46 |
|
||
|
Возвращаемое значение
|
|||
|---|---|---|---|
|
#18+
an0nymthrow new Exception? представьте что ваш метод - это метод веб-сервиса и вы никак, просто никак, отловить этот эксепшн не можете ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2010, 16:57:01 |
|
||
|
Возвращаемое значение
|
|||
|---|---|---|---|
|
#18+
dmitriychean0nym, я не про то спрашивал, ваш ответ инвалидный *имхо ставить не буду Скорее так: вы не можете нормально задать вопрос, ваш вопрос - инвалидный. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2010, 16:57:10 |
|
||
|
Возвращаемое значение
|
|||
|---|---|---|---|
|
#18+
dmitriychean0nymthrow new Exception? представьте что ваш метод - это метод веб-сервиса и вы никак, просто никак, отловить этот эксепшн не можете Ну так читайте выше, почему ответ меньше нуля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2010, 16:58:08 |
|
||
|
Возвращаемое значение
|
|||
|---|---|---|---|
|
#18+
an0nym, an0nym вот именно. Представьте, что у вас строка Код: plaintext а свой вопрос я перефразировал пару постов выше ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2010, 17:00:07 |
|
||
|
Возвращаемое значение
|
|||
|---|---|---|---|
|
#18+
an0nym throw new Exception? +1. an0nymСкорее так: вы не можете нормально задать вопрос, ваш вопрос - инвалидный. :) +1 еще раз :). Нужно просто уметь отличать неудачи от удач. Вон в WinAPI Вы вообще ни про что не узнаете, пока не вызовете GetLastError и не посмотрите код ошибки (который, кстати, может быть любым целым числом). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2010, 17:03:08 |
|
||
|
Возвращаемое значение
|
|||
|---|---|---|---|
|
#18+
an0nymНу так читайте выше, почему ответ меньше нуля. Ответ на мой вопрос по любому является паттерном, я в этом очень уверен, могу я услышать его название? дальше я у гугла спрошу. спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2010, 17:06:01 |
|
||
|
Возвращаемое значение
|
|||
|---|---|---|---|
|
#18+
dmitriycheПерефразирую В общем, если метод (в процессе выполнения которого может произойти сбой) возвращает целочисленное значение, то почему в случае неудачи он должен возвращать некоторое отрицательное значение? Конкретно по этому определению: если метод при нормальном завершении возвращает именно целочисленное значение, а не натуральное и/или ноль, то он не то что не должен возвращать некоторое отрицательное значение, ему нельзя возвращать отрицательное значение, так как в таком случае ошибку от нормального завершения не отличить. В таком случае следует возвращать два значения (произошла ли ошибка и результат метода/код ошибки) так или иначе: через массив, через in/out аргумент, через простановку флага возвращаемого значения (например, 01000001b - без ошибок, вернул -1; 11000001b - произошла ошибка с кодом -1). Если же речь идет о натуральных числах при нормальном завершении метода, то в постах выше описано, почему следует возвращать отрицательное значение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2010, 17:07:31 |
|
||
|
Возвращаемое значение
|
|||
|---|---|---|---|
|
#18+
an0nymон не то что не должен возвращать некоторое *отрицательное значение*, ему нельзя возвращать отрицательное значение, так как в таком случае ошибку от нормального завершения не отличить. *отрицательное значение в случае ошибки* ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2010, 17:08:50 |
|
||
|
Возвращаемое значение
|
|||
|---|---|---|---|
|
#18+
dmitriycheНегде почитать по этому вопросу, но всё как бы интуитивно понятно, но.... В общем, если метод возвращает целочисленное значение, то почему в случае неудачи он должен возвращать некоторое отрицательное значение?Потому что нужно вернуть какое-то значение, которое заведомо нереализуемо в случае успеха и которое в коде легко проверить. Отдать дробное значение ранее было проблематично, да и проверять его замучаешься. Поэтому изобрели два способа сообщения функции об ошибке: 1. если функция возвращает целочисленное положительное значение, то при ошибке -1. 2. если функция возвращает указатель, то возвращается указатель на начало адресуемой памяти - традиционно там хранилась операционка и указателя на начало памяти существовать в программе не должно (кроме совсем спец. случаев). Потом это соглашение распространилось повсеместно и стало удобным отраслевым стандартом. Что Вам в нём не нравится? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2010, 17:09:14 |
|
||
|
Возвращаемое значение
|
|||
|---|---|---|---|
|
#18+
an0nym, Как я уже говорил выше, есть метод который возвращает сгенерированное автоинкрементальное значение ключа вставленной записи. Т.е. работа происходит с целыми положитьными числами. Мне интуитивно понятно, что в случае неудачного добавления записи или сбоя, как ошибку необходимо вернуть некоторое отрицательное значение. Могу я услышать названеи этого паттерна, если таковой имеется? Mozok, куда вы плюсуете, я уже отписал причину невозможности отлавливания эксепшена? ВинАПИ оставте при себе, язык реализации не важен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2010, 17:13:45 |
|
||
|
Возвращаемое значение
|
|||
|---|---|---|---|
|
#18+
GrayStrannik, Благодарю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2010, 17:15:41 |
|
||
|
Возвращаемое значение
|
|||
|---|---|---|---|
|
#18+
dmitriycheМне интуитивно понятно, что в случае неудачного добавления записи или сбоя, как ошибку необходимо вернуть некоторое отрицательное значение.Никакой интуиции тут нет. Это просто традиция въевшаяся в кровь. dmitriycheМогу я услышать названеи этого паттерна, если таковой имеется?Нет, низкие языки (из которых и пошла эта традция) не заморчиваются никакими "паттернами". И вообще подгонка всего под паттерны это дурная идея. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2010, 18:40:28 |
|
||
|
Возвращаемое значение
|
|||
|---|---|---|---|
|
#18+
White Owl...И вообще подгонка всего под паттерны это дурная идея. Если без паттернов, то это как-то не по феншую выходит *шутко ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2010, 23:43:26 |
|
||
|
Возвращаемое значение
|
|||
|---|---|---|---|
|
#18+
dmitriycheНегде почитать по этому вопросу, но всё как бы интуитивно понятно, но.... В общем, если метод возвращает целочисленное значение, то почему в случае неудачи он должен возвращать некоторое отрицательное значение? Просьба хотя бы пару ссылок. Ссылок не дам потому что лень. Скажу то, что помню навскидку. Существует такая старая программистская традиция. Функции ядра возвращают целочисленный результат. Смысловая нагрузка - полностью на откуп создателю этой функции. Например fread(...) - возвращает количество прочитанных из файла элементов. Другие функции могут возвращать перечислимый набор констант (коды ошибок). Почему возвращается целове число? Ну... это удобно с точки зрения стека и экономно. Отрицательные числа - просто прихоть. Очевидно так было удобно делать тесты на корректность завершения работы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2010, 00:12:32 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=36396896&tid=1343975]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
704ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
82ms |
get tp. blocked users: |
2ms |
| others: | 230ms |
| total: | 1063ms |

| 0 / 0 |
