Правильный запрос имен - PullRequest
0 голосов
/ 18 ноября 2009

У меня проблемы с именами двух моих функций

  • у меня есть функция is_void, которая возвращает истину, если аргумент «пустой» (в некотором смысле). Как бы вы назвали противоположную функцию? isnt_void? is_set? is_not_void

  • У меня есть пара функций, первая устанавливает обработчик для отлова ошибок в последующем коде, а вторая удаляет этот обработчик. install_error_handler/remove_error_handler выглядит слишком длинным и безобразным, я бы предпочел пару коротких глаголов (например, часы / unwatch).

Любые идеи очень ценятся.

Спасибо за ответы до сих пор

ОБНОВЛЕНО: Мне нужна функция для "not void", потому что она будет использоваться как someArray.map(is_not_void)

второй нельзя просто "зарегистрировать" или "установить", потому что он используется без аргументов.

Ответы [ 5 ]

3 голосов
/ 18 ноября 2009

Я не совсем уверен, зачем вам нужна другая функция для # 1; если это не void, is_void вернет false.

Для # 2, если вы передаете обработчик ошибок в метод; Установить / удалить должно быть достаточно.

1 голос
/ 18 ноября 2009

Из вашего обновления я предполагаю, что вы имеете в виду, что вам нужен указатель на метод. Я всегда стараюсь использовать имена, чтобы они были как можно более понятными, поэтому сначала я хотел бы спросить себя, что означает is_void. Из вашего текста я бы предложил is_empty, is_not_set или is_nothing вместо is_void противоположности могут быть is_not_empty, is_set или is_something, последний звучит немного забавно, но, вероятно, будет близко к значению в вашем коде.

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

Что касается install_error_handler и uninstall_error_handler, если эти имена правильно описывают цель, я бы их сохранил. Если нет, попытайтесь описать их значение с точки зрения вашего кода (защита, защита, блокировка ...)

1 голос
/ 18 ноября 2009

В общем, попытайтесь (1) минимизировать количество интерфейсных функций и (2) предоставить точные и непротиворечивые имена.

В случае именования случая not is_void() первый принцип говорит нам, что функция вообще не должна существовать, поскольку пользователь всегда может отрицать логическое возвращение. Другими словами, is_void() - это функция проверки ограничения, вызывающий абонент должен принять решение об отмене ограничения по мере необходимости.

В случае install_... и remove_... применяется второй принцип. Проблема с короткими глаголами состоит в том, что они очень неоднозначны, но не всегда возможно устранить двусмысленность посредством именования. Что наиболее важно, так это то, что они настолько описательны, насколько это возможно, и что вы применяете какой-то последовательный метод. Если вы используете watch_... и unwatch_..., используйте их последовательно. Не иметь watch_errors рядом с observe_warnings. Несоответствие заставит пользователей искать причины различий в именах.

Лично я предпочитаю install_..._handler и uninstall_..._handler или add_observer с условием фильтра более watch_condition и unwatch_condition просто потому, что unwatch не похоже на настоящее слово в мои глаза.

1 голос
/ 18 ноября 2009

Тестовые функции - хорошая идея. Тем не менее, я бы предостерег от использования отрицательных имен, потому что это вызывает двойную (или более) отрицательную логику if (not is_not_void(a)). Достаточно простого оператора not: if (not is_void(a)).

1 голос
/ 18 ноября 2009

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

IsNotVoid( String s )

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

if ( ! IsNotVoid( s ) && ! IsNotVoid( t ) )
{
}

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

...