Имена методов для получения [закрытых] данных

Предупреждение: Это - не очень серьезный вопрос/обсуждение, который я отправляю..., но я готов держать пари, что большинство разработчиков обдумало эту "проблему"...

Всегда требуемый для получения других мнений относительно соглашений о присвоении имен для методов, которые пошли и получили данные из где-нибудь и возвратил его...

Большинство имен методов несколько просто и очевидно... SaveEmployee (), DeleteOrder (), UploadDocument (). Конечно, с классами Вы, скорее всего, использовали бы краткую форму... Сохраните (), Удалите (), Загрузка () соответственно.

Однако я всегда боролся с начальным действием..., как получить данные. Кажется, что для каждого проекта я заканчиваю тем, что перешел между различными соглашениями о присвоении имен, потому что я никогда не довольно доволен последним, который я использовал. Насколько я могу сказать, что это возможности->

  • GetBooks ()
  • FetchBooks ()
  • RetrieveBooks ()
  • FindBooks ()
  • LoadBooks ()

Какова Ваша мысль?

94
задан mjv 26 January 2010 в 19:01
поделиться

5 ответов

Это все о согласованном семантике ;

В вашем вопросе вы используете Получение данных . Это крайне Генерал в том смысле, что вам нужно определить, что получение означает семантически значительно однозначный путь. Я предлагаю следующие Примеры, чтобы надеяться, поставить вас на правильный путь, когда думаете о называя вещи.

  1. GetBooks () - это когда вы получаете все книги, связанные с объект, это подразумевает критерии для набора уже определены и где они идут, - это скрытая деталь.
  2. находки (критерии) когда пытается найти подсчиты книг на основе параметров Вызов метода, это обычно быть перегруженным с другим поиском Критерии
  3. нагрузки (источник) , когда вы находитесь Загрузка от внешнего источника, как файл или дБ.
  4. Я бы не использовал Привлечь / извлекать, потому что они слишком расплывчаты и связываются с GOW , и нет однозначного семантического, связанного с терминами.

Пример: Fetch подразумевает, что какое-то сущность должна идти и получить что-то удаленное и вернуть его обратно. Собаки извлекают палку, а извлекают - это синоним PRETCH с добавленной семантической точкой, который у вас, возможно, имел владение вещью перед собой. Получить - это синоним для получения , а также подразумевает, что у вас есть единственное владение чем-то, и никто другой не может приобрести его одновременно.

семантика чрезвычайно важно:

Ветвь лингвистики и логики, связанные со значением

. Комментарии являются доказательством того, что общие термины, такие как GOOT и PRETCH нет конкретных семантических и интерпретируются по-разному по другому люди. Выберите семантику на срок, документируйте, что он предназначен для подразумевает, если семантический не понятна и соответствует его использованию.

Слова с расплывчатыми или амбидиозными значениями дают разные семантики разными людьми из-за их предъявлениями и предвзятости на основе их личных мнений, и это никогда не закончится хорошо.

118
ответ дан 24 November 2019 в 06:08
поделиться

Честно говоря, вы должны просто решить с вашей командой, которая называет кв. Но для удовольствия, давайте посмотрим, что ваш поезд мысли будет принимать решение по любому из них:

  • GetBooks ()

Этот метод принадлежит источнику данных, и нам все равно, как оно их получает, мы просто хочу получить их из источника данных.

  • Fetchbooks ()

Вы относитесь к вашему источнику данных, как Bloodhound, и это его работа, чтобы получить ваши книги. Я предполагаю, что вы должны решить, сколько он может встать во рту одновременно.

  • FindBooks ()

Ваш источник данных - библиотекарь и будет использовать десятичную систему Dewey, чтобы найти ваши книги.

  • Дополнительные книги ()

Эти книги принадлежат в какой-то «электронной книжной сумке» и должны быть загружены в него. Обязательно называйте ZipClosed () после загрузки, чтобы предотвратить терять их.

  • retretebooks ()

У меня ничего нет.

12
ответ дан 24 November 2019 в 06:08
поделиться

Это не ясно, что вы имеете в виду для «получения данных». Из базы данных? Файл? Память?

Мой взгляд о методе именования состоит в том, что его роль состоит в том, чтобы исключить любые неясности и в идеале необходимость поиска документации. Я считаю, что это должно быть сделано даже за счет более длинных имен методов. Согласно исследованиям, большинство промежуточных + разработчиков могут читать несколько слов в корпусе верблюда. С IDE и автоматическими завершениями, написание имени длинных методов также не проблема.

Таким образом, когда я вижу «Fetchbooks», если только контекст не совсем понятен (например, класс с именем BookFetcherFromDatabase), он неоднозначен. Привлечь его откуда? В чем разница между приемами и найти? Вы также рискуете проблемой, что некоторые разработчики связывают семантику с определенными ключевыми словами. Например, извлечь для базы данных (или памяти) против нагрузки (из файла) или загрузки (из веб).

Я бы предпочел увидеть что-то вроде «FetchbooksFromDatabase», «LoadBookFromfile», «FindBooksincollection» и т. Д. Это менее наглядно, но как только вы получите по длине, понятно. Все читают это, сразу же получите то, что вы пытаетесь сделать.

1
ответ дан 24 November 2019 в 06:08
поделиться

Ответ заключается в том, чтобы придерживаться того, что вам удобно, и быть последовательным.

Если у вас есть вебсайт Barnes и nobles и вы используете GetBooks(), то если у вас есть другой элемент, например, сущность Movie, то используйте GetMovies(). Так что, что бы вам и вашей команде ни нравилось и будьте последовательны.

8
ответ дан 24 November 2019 в 06:08
поделиться

В OO (C++/Java) я обычно использую getSomething и setSomething, потому что очень часто, если не всегда, я либо получаю частный атрибут из класса, представляющего этот объект данных, либо устанавливаю его - пару getter/setter. В качестве плюса, Eclipse генерирует их для вас.

Я склонен использовать Load только тогда, когда имею в виду файлы - как в случае с "загрузкой в память", и это обычно подразумевает загрузку в примитивы, структуры (C) или объекты. Я использую send/recept for web.

Как было сказано выше, последовательность - это все, что включает в себя кросс-разработчиков.

1
ответ дан 24 November 2019 в 06:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: