Я пытаюсь разработать интерфейс, который будет использоваться внутри моего приложения. Следуя примеру Google, я стремлюсь уменьшить беспорядок в общедоступных API. Однако есть некоторые удобные методы, которые определяются в терминах минимальных методов. Какие факторы следует учитывать при поиске баланса между удобством и аккуратностью?
Пример Google: в HashBiMap
(doc а>):
Почему у BiMap нет метода getKeyForValue()?
Мы думали об этом (Даг Ли даже полушутя предложил назвать его teg()!). Но на самом деле вам это не нужно; просто позвоните inverse().get().
Часто задаваемые вопросы о коллекциях Google
Пример этого на интерфейсе Set
: add()
и remove()
— это минимальные методы, а addAll()
и removeAll()
— для удобства. addAll()
может быть реализован в терминах add()
, так что на самом деле это не дает клиенту новых возможностей для работы с Set
. Но он очищает клиентский код.
Я подумал о создании класса Utility
, который включал бы больше удобных методов. Но тогда я ухожу от ООП, и мне приходится включать объект, над которым выполняется операция, в качестве аргумента при каждом вызове. Хотя я предполагаю, что это следует примеру класса Java Collections
.