Почему STL "пустая" функция-член не называется "isEmpty"? - PullRequest
2 голосов
/ 13 марта 2019

Пожалуйста, проверьте std::vector из cplusplus.com .

Он говорит, что имеет empty() функцию-члена:

empty
Test whether vector is empty (public member function )
http://www.cplusplus.com/reference/vector/vector/empty/
Signature : bool empty() const;

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

Почему stl не использует isEmpty() вместо этого?

1 Ответ

1 голос
/ 14 марта 2019

Чтобы оставаться в соответствии с соглашением об именах стандартной библиотеки C ++, я бы фактически крестил функцию-член, на которую вы ссылаетесь, как is_empty() вместо isEmpty().То есть, следуя соглашению об именовании змея вместо случай верблюда один.Мы можем видеть это соглашение в других функциях-членах, например, push_back() и pop_back().


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

В противном случае, если бы вместо слова "пусто" использовалось бы и слово, и запрос, глаголвероятно, было частью имени функции-члена для запроса, так как обе функции-члена не имеют параметров и, следовательно, перегрузка была бы невозможна.Функции-члены тогда, вероятно, назывались бы empty() и is_empty() для опустошения контейнера и для запроса, является ли он пустым, соответственно.

...