|
Метод нашел 0 искомых записей. Это успешное завершение ?
|
|||
---|---|---|---|
#18+
Привет. Давно мучаюсь одним вопросом. Если метод, ищущий что-то, где-то - ничего не нашел по указанному запросу, то это успешный результат выполнения или нет ? Код: c# 1.
В различных, увиденных, исходных кодах, встречал и так и так. Как это решить для каждого конкретного решения ? Есть идеи и заметки ? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2015, 14:19 |
|
Метод нашел 0 искомых записей. Это успешное завершение ?
|
|||
---|---|---|---|
#18+
ProBiotek, смотря какой метод)) Код: sql 1.
- нашёл 0 записей. Это успешно? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2015, 15:29 |
|
Метод нашел 0 искомых записей. Это успешное завершение ?
|
|||
---|---|---|---|
#18+
ProBiotek, Запрос "Найти ПЕРВУЮ запись, удовлетворяющую критериям ..." ничего не нашел - это НЕ УСПЕХ! Одна запись обязательно должна быть на выходе. Запрос "Найти записи, удовлетворяющие критериям ..." ничего не нашел - это УСПЕХ! Множество записей может быть ПУСТЫМ на выходе. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2015, 15:49 |
|
Метод нашел 0 искомых записей. Это успешное завершение ?
|
|||
---|---|---|---|
#18+
ProBiotek, Все зависит от заложенной бизнес логики в приложении и как Вы потом собираетесь result.Success обрабатывать . ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2015, 16:12 |
|
Метод нашел 0 искомых записей. Это успешное завершение ?
|
|||
---|---|---|---|
#18+
sereginsereginProBiotek, Запрос "Найти ПЕРВУЮ запись, удовлетворяющую критериям ..." ничего не нашел - это НЕ УСПЕХ! Одна запись обязательно должна быть на выходе. Запрос "Найти записи, удовлетворяющие критериям ..." ничего не нашел - это УСПЕХ! Множество записей может быть ПУСТЫМ на выходе. По сути все упирается в одно мелкое слово. Мне кажется что это какое-то хрупкое решение. Как вообще решаете этот вопрос ? Как решаете когда что нужно ? Хочу понять некую базовую логику, чтобы больше никогда вообще не задаваться этим вопросов вообще, а действовать на основании некое четкого алгоритма. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2015, 16:16 |
|
Метод нашел 0 искомых записей. Это успешное завершение ?
|
|||
---|---|---|---|
#18+
ProBiotekПривет. Давно мучаюсь одним вопросом. Если метод, ищущий что-то, где-то - ничего не нашел по указанному запросу, то это успешный результат выполнения или нет ? Если метод называется ИскатьЗапись - то НичегоНеНашел - правильный ответ. Если метод называется НайтиЗапись - то НичегоНеНашел - это исключение. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2015, 17:06 |
|
Метод нашел 0 искомых записей. Это успешное завершение ?
|
|||
---|---|---|---|
#18+
ProBiotek, ничего не поделать - требуется соглашения между всеми программистами административными мерами. Например, в списках возвращать список.Count=0. Но ни в коем случае не Null. И т.д. Возрат процедурой raise из той же области вопросов. ЗЫ. Планируется ввести в ЯП высокого уровня спец пометки(аннотации) для таких вещей (контракт). Но пока не везде и не однозначно. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2015, 17:39 |
|
Метод нашел 0 искомых записей. Это успешное завершение ?
|
|||
---|---|---|---|
#18+
F#ProBiotekПривет. Давно мучаюсь одним вопросом. Если метод, ищущий что-то, где-то - ничего не нашел по указанному запросу, то это успешный результат выполнения или нет ? Если метод называется ИскатьЗапись - то НичегоНеНашел - правильный ответ. Если метод называется НайтиЗапись - то НичегоНеНашел - это исключение. Имена методов же у нас по английски. У них какая схема в этом случае должна быть (вот эти самые Найти, Искать) ? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2015, 18:36 |
|
Метод нашел 0 искомых записей. Это успешное завершение ?
|
|||
---|---|---|---|
#18+
я видел ораклячую процедуру, возвращающую null в случае, если запись не найдена, и 0, если найдена. я офигел ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2015, 23:35 |
|
Метод нашел 0 искомых записей. Это успешное завершение ?
|
|||
---|---|---|---|
#18+
ProBioteksereginsereginProBiotek, Запрос "Найти ПЕРВУЮ запись, удовлетворяющую критериям ..." ничего не нашел - это НЕ УСПЕХ! Одна запись обязательно должна быть на выходе. Запрос "Найти записи, удовлетворяющие критериям ..." ничего не нашел - это УСПЕХ! Множество записей может быть ПУСТЫМ на выходе. По сути все упирается в одно мелкое слово. Мне кажется что это какое-то хрупкое решение. Как вообще решаете этот вопрос ? Как решаете когда что нужно ? Хочу понять некую базовую логику, чтобы больше никогда вообще не задаваться этим вопросов вообще, а действовать на основании некое четкого алгоритма. А не я решаю, пользователь решает что ему важнее: - найти первую запись - получит сообщение об ошибке - найти все записи - получит сообщение с пустым списком Моя задача предоставить инструмент - оба, или какой-то один из них. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2015, 09:09 |
|
Метод нашел 0 искомых записей. Это успешное завершение ?
|
|||
---|---|---|---|
#18+
Еще дополню: - процедура "Найти первую запись" - работает быстро, но для остальных записей пользователю необходимо повторять запуск процедуры - процедура "Найти все записи" - работает медленно, но сразу сразу дает все возможные результаты Только пользователь может решить, какой из процедур выгоднее воспользоваться ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2015, 09:21 |
|
Метод нашел 0 искомых записей. Это успешное завершение ?
|
|||
---|---|---|---|
#18+
ProBiotekНайти,Find/Search ProBiotekИскать Get ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2015, 18:52 |
|
Метод нашел 0 искомых записей. Это успешное завершение ?
|
|||
---|---|---|---|
#18+
ProBiotekДавно мучаюсь одним вопросом. Если метод, ищущий что-то, где-то - ничего не нашел по указанному запросу, то это успешный результат выполнения или нет ? Как это решить для каждого конкретного решения ? ДЛя конкретного легко очень решить, в общем решить -- невозможно. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.04.2015, 19:47 |
|
Метод нашел 0 искомых записей. Это успешное завершение ?
|
|||
---|---|---|---|
#18+
ProBiotekИмена методов же у нас по английски. У них какая схема в этом случае должна быть (вот эти самые Найти, Искать) ? Как договоритесь. Можено search и find, можно find и get ... |
|||
:
Нравится:
Не нравится:
|
|||
20.04.2015, 08:55 |
|
Метод нашел 0 искомых записей. Это успешное завершение ?
|
|||
---|---|---|---|
#18+
ProBiotekКак вообще решаете этот вопрос ? Как решаете когда что нужно ? Хочу понять некую базовую логику, чтобы больше никогда вообще не задаваться этим вопросов вообще, а действовать на основании некое четкого алгоритма. Лично я лет десять как пришёл к следующей системе: По умолчанию пишется и используется метод getSomething(). Он возвращает something, которое существует и единственно. Если вдруг не существует - возбуждается исключение. Когда в каком-то месте кода по бизнес-логике имеет смысл ситуация "something не существует", добавляется метод findSomething(). Его отличие в том, что он может вернуть null, и его результат обязательно проверяется в вызывающем коде. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2015, 16:45 |
|
Метод нашел 0 искомых записей. Это успешное завершение ?
|
|||
---|---|---|---|
#18+
softwarer, Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.04.2015, 20:11 |
|
Метод нашел 0 искомых записей. Это успешное завершение ?
|
|||
---|---|---|---|
#18+
ProBiotek... По сути все упирается в одно мелкое слово. Мне кажется что это какое-то хрупкое решение. ... Хрупкое. Конечно, название метода должно быть информативным. Но если при переименовании метода должно меняться его поведение - это как-то странно. :) Для функциональных языков такой проблемы вообще нет - там для разных случаев возвращаются разные типы: MyStruct getStructByKey(...) - возвращается только конкретная структура; а если не найдено - будет исключение Option[MyStruct] getStructByKey(...) - явно указано, что результат опционален - может вернуться структура (точнее, обертка Some(MyStruct) ), а может None - признак отсутствия значения. В нынешних мейнстримовых языках проблема в существовании NULL - значения, совместимого по типу с любыми классами, т.е. нетипизированного по сути. Сам его изобретатель признался в своей ошибке: "Billion dollars mistake" Но паттерны Maybe/Option/Nullable реализовать можно в любом языке; где-то проще, где-то сложнее... Посмотрите в этом направлении, может пригодится. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2015, 12:09 |
|
Метод нашел 0 искомых записей. Это успешное завершение ?
|
|||
---|---|---|---|
#18+
ДиезНо если при переименовании метода должно меняться его поведение - это как-то странно. :) Давайте рассмотрим переименование метода giveMoney() в takeMoney() ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2015, 12:42 |
|
Метод нашел 0 искомых записей. Это успешное завершение ?
|
|||
---|---|---|---|
#18+
softwarerДиезНо если при переименовании метода должно меняться его поведение - это как-то странно. :) Давайте рассмотрим переименование метода giveMoney() в takeMoney() Давайте еще рассмотрим переименование giveMoneyToRecipient() в takeMoneyFromPayer() ? Переименование идентификаторов - обычный процесс рефакторинга. Можно вообще называть методы m1() m2() итд, в качестве естественного обсфуцирования кода )) Так что мое мнение: привязывать поведение методов к правилу написания имени - решение возможное, но "хрупкое". ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2015, 13:31 |
|
Метод нашел 0 искомых записей. Это успешное завершение ?
|
|||
---|---|---|---|
#18+
Диезsoftwarerпропущено... Давайте рассмотрим переименование метода giveMoney() в takeMoney() Давайте еще рассмотрим переименование giveMoneyToRecipient() в takeMoneyFromPayer() ? Согласен, пример ровно из той же серии. ДиезПереименование идентификаторов - обычный процесс рефакторинга. Безусловно. ДиезМожно вообще называть методы m1() m2() итд, в качестве естественного обсфуцирования кода )) Можно. Собственно, Ваше предложение и сводится к тому, чтобы переменную "количество" можно было называть sum, переменную "цена" - name, а переменную "код завершения" - i. Лично я полагаю, что идентификатор таки должен соответствовать содержимому. И "переименование идентификаторов при рефакторинге" как раз и является следствием либо перестройки содержимого, либо исправления неудачных названий. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2015, 13:38 |
|
Метод нашел 0 искомых записей. Это успешное завершение ?
|
|||
---|---|---|---|
#18+
ProBiotekПривет. Давно мучаюсь одним вопросом. Если метод, ищущий что-то, где-то - ничего не нашел по указанному запросу, то это успешный результат выполнения или нет ? Код: c# 1.
В различных, увиденных, исходных кодах, встречал и так и так. Как это решить для каждого конкретного решения ? Есть идеи и заметки ? выполнение метода, в данном случае Поиска, без ошибок - это всегда УСПЕХ, независимо от того найдены ли записи или нет. А интерпретация этого УСПЕХА зависит от поставленной задачи. В любом случае "записи УСПЕШНО не найдены" ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2015, 13:41 |
|
Метод нашел 0 искомых записей. Это успешное завершение ?
|
|||
---|---|---|---|
#18+
softwarerДиезпропущено... Давайте еще рассмотрим переименование giveMoneyToRecipient() в takeMoneyFromPayer() ? Согласен, пример ровно из той же серии. Ровно наоборот. Оба эти идентификатора обозначают один и тот же процесс, поэтому имеем полное право переименовать метод, не меняя его поведения. softwarerДиезПереименование идентификаторов - обычный процесс рефакторинга. Безусловно. ДиезМожно вообще называть методы m1() m2() итд, в качестве естественного обсфуцирования кода )) Можно. Собственно, Ваше предложение и сводится к тому, чтобы переменную "количество" можно было называть sum, переменную "цена" - name, а переменную "код завершения" - i. Лично я полагаю, что идентификатор таки должен соответствовать содержимому. И "переименование идентификаторов при рефакторинге" как раз и является следствием либо перестройки содержимого, либо исправления неудачных названий. То, что идентификатор должен соответствовать содержимому - общепринятое правило самодокументированного кода. Но это лишь для удобства программиста - привязать формальный контракт метода к структуре наименования идентификатора не позволяет ни один известный мне ЯП (ну, кроме GW-бейсика, наверное, с его N$, LIMIT%, MINIMUM!, Pl#... ) Привязка к сигнатуре метода жестче с формальной точки зрения. Сравните: Код: java 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2015, 13:56 |
|
Метод нашел 0 искомых записей. Это успешное завершение ?
|
|||
---|---|---|---|
#18+
ДиезРовно наоборот. Оба эти идентификатора обозначают один и тот же процесс, Да ну правда что ли? Один обозначает "взять у плательщика и положить в кошелёк", другой обозначает "взять из кошелька и отдать получателю". У этих процессов нет почти ничего общего. Диезпоэтому имеем полное право переименовать метод, не меняя его поведения. Я бы сказал, мы никогда не имеем права переименовывать хорошо названный метод, не меняя его поведения. Просто потому, что "переименовать плохо названный в хорошо названный" - единственное разумное обоснование для этой операции. ДиезТо, что идентификатор должен соответствовать содержимому - общепринятое правило самодокументированного кода. Но это лишь для удобства программиста Именно так. И в рамках этого же "для удобства" изложенный мной подход вполне гармоничен. При подходе "называем методы M1, M2, M3" он, разумеется, неуместен. Диез привязать формальный контракт метода к структуре наименования идентификатора не позволяет ни один известный мне ЯП Ну и хорошо, ибо этого не нужно делать. ДиезПривязка к сигнатуре метода жестче с формальной точки зрения. Сравните: Код: java 1. 2.
Первое - дикий геморрой, которого избегают все кроме упёртых теоретиков-пищущих-книжки-и-не-опускающихся-до-практики. Второе - вполне возможный подход. На мой вкус, тяжеловатый, но со своими достоинствами. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2015, 14:33 |
|
Метод нашел 0 искомых записей. Это успешное завершение ?
|
|||
---|---|---|---|
#18+
softwarerДиезРовно наоборот. Оба эти идентификатора обозначают один и тот же процесс, Да ну правда что ли? Один обозначает "взять у плательщика и положить в кошелёк", другой обозначает "взять из кошелька и отдать получателю". У этих процессов нет почти ничего общего. Диезпоэтому имеем полное право переименовать метод, не меняя его поведения. Я бы сказал, мы никогда не имеем права переименовывать хорошо названный метод, не меняя его поведения. Просто потому, что "переименовать плохо названный в хорошо названный" - единственное разумное обоснование для этой операции. А в моем понимании - это всё метод transferMoneyFromPayerToRecipient() Разные разработчики могут понять смысл одного названия совершенно по-разному. Иначе не нужна была бы документация с примерами :) "Хорошо" или"плохо" назван идентификатор - это глубоко субъективное мнение. Объективным оно может быть в одном случае - если вы один работаете над всем проектом всё время. softwarer... ДиезПривязка к сигнатуре метода жестче с формальной точки зрения. Сравните: Код: java 1. 2.
Первое - дикий геморрой, которого избегают все кроме упёртых теоретиков-пищущих-книжки-и-не-опускающихся-до-практики. Второе - вполне возможный подход. На мой вкус, тяжеловатый, но со своими достоинствами. Мы, надеюсь, обсуждаем не ваши личные предпочтения, а тему топика: Эти два примера методов формально описывают два разных поведения, если не найден объект по идентификатору: Первый - неуспешный результат Второй - успешный результат ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2015, 15:02 |
|
Метод нашел 0 искомых записей. Это успешное завершение ?
|
|||
---|---|---|---|
#18+
ДиезА в моем понимании - это всё метод transferMoneyFromPayerToRecipient() Вот теперь Вы его хорошо назвали :) Именно сюда я и вёл. А теперь попробуйте его существенно переименовать, не меняя его поведения :) ДиезРазные разработчики могут понять смысл одного названия совершенно по-разному. Не должно такого быть в хорошем коде. После того, как разработчик входит в курс дела - то есть воспринимает принятую в проекте терминологию, схему именования объектов итп - подобное расхождение будет.. удивительно. ДиезИначе не нужна была бы документация с примерами :) Документация с примерами нужна для описания более глубоких особенностей, не охватываемых названием. Диез"Хорошо" или"плохо" назван идентификатор - это глубоко субъективное мнение. Не соглашусь. Хорошесть измеряется тем, насколько легко члены команды, столкнувшись, понимают смысл этого идентификатора и насколько легко потом его вспоминают (то есть могут применить без поиска). Конечно, бывают экстравагантные схемы (скажем, я на всю жизнь запомнил из одного проекта функции naref() и daref() - они расшифровывались как "на резиденцию файла" и ... да, правильно, "дай резиденцию файла") - но и это куда лучше, чем когда метод giveMoneyToRecipient() может оказаться названным takeMoneyFromPayer(). ДиезМы, надеюсь, обсуждаем не ваши личные предпочтения, а тему топика: Эти два примера методов формально описывают два разных поведения, если не найден объект по идентификатору: Формальное описание не является темой топика :) А к такому подходу мне сразу хочется спросить: а как поступать, если у объекта нужны оба этих метода? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2015, 15:17 |
|
|
start [/forum/topic.php?fid=33&fpage=12&tid=1547480]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
50ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 281ms |
total: | 431ms |
0 / 0 |