Должен ли я отказаться от грамматической правильности, называя мои функции, чтобы предложить регулярность? - PullRequest
3 голосов
/ 22 марта 2019

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

void init_time();
void init_random();
void init_shapes();

Я хотел бы добавить функции для проверки, были ли они вызваны:

bool is_time_initialized();
bool is_random_initialized();
bool are_shapes_initialized();

Однако, как вы можете видеть, are_shapes_initialized выпадает из строки из-за того, что shapes является множественным числом, и поэтому имя функции должно начинаться с , равными , а не есть . Это может быть проблемой, так как библиотека довольно большая и не имеет единого способа группировки похожих функций в соответствии с тем же соглашением об именах, что может сбить с толку / расстроить.

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

IntelliSense only displaying

Они не найдут are_shapes_initialized() здесь, если не прокрутить сотни дополнительных имен функций / классов.

Просто переход с is_shapes_initialized() может дать ясность:

IntelliSense displaying now all

Теперь отображаются все функции.

Но как использование неправильной грамматики может быть хорошим подходом? Разве я не должен просто предполагать, что пользователь должен также спросить IntelliSense о "are_initialized" или просто посмотреть документацию в первую очередь? Наверное, нет, верно? Должен ли я просто отказаться от грамматической правильности?

Ответы [ 3 ]

4 голосов
/ 08 апреля 2019

Как я понимаю, переменная - это единое целое. Может быть, эта сущность представляет собой совокупность других сущностей, таких как массив или коллекция, и в этом случае имеет смысл дать ей имя во множественном числе, например, набор Shape объектов может называться shapes. Несмотря на это, это все еще один объект. Глядя на это таким образом, грамматически приемлемо называть его единственным. В конце концов, is_shapes_initialized на самом деле означает «Инициализирована переменная« формы »?»

Это та же самая причина, по которой мы говорим " Багамские острова * " или " Нидерланды - ", потому что мы имеем в виду единственную страну, а не какую-либо множественную единицу, из которой она состоит , Так что да, is_shapes_initialized можно считать грамматически правильным.

2 голосов
/ 09 апреля 2019

Вот что я бы сделал, если предположить, что вы пытаетесь избежать вызова этой функции для каждой фигуры.

void init_each_shape();

bool is_each_shape_initialized();

Также при условии, что вам нужны эти функции, кажется, что было бы более целесообразно, чтобы функции генерировали исключение, если они не выполняются успешно.

2 голосов
/ 04 апреля 2019

Это скорее вопрос личного вкуса.Я бы порекомендовал поставить "is" перед функциями, которые возвращают логическое значение.Это будет выглядеть примерно так:

bool is_time_initialized();
bool is_random_initialized();
bool is_shapes_initialized();

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

Вы можете найти функции, используя "are", чтобы показатьв множестве мест, таких как приложение DuckDuckGo, с:

areItemsTheSame(...)
areContentsTheSame(...)

В приложении DuckDuckGo также используется «is» для отображения функций, возвращающих логические и логические переменные:

val isFullScreen: Boolean = false
isAssignableFrom(...)

В OpenTK, графической библиотеке C #, я также обнаружил использование «are»:

AreTexturesResident(...)
AreProgramsResident(...)

В том же OpenTK Libary они используют «is» исключительно для функций, которые возвращают логические и логические переменные:

IsEnabledGenlock(...)
bool isControl = false;

Любое использование может работать.Использование «are» во множественном числе имело бы больше смысла грамматически, а использование «if» во множественном числе могло бы иметь больше смысла для эффективности или упрощения булевых функций.

...