@FunctionalInterface
может помечать только типы (классы, интерфейсы, аннотации, перечисления).
Чтобы назвать тип, вы должны использовать существительное, а для метода нужен глагол.
Классы
Имена классов должны быть существительными в смешанном регистре с заглавной первой буквой каждого внутреннего слова. Постарайтесь, чтобы названия ваших классов были простыми и наглядными. Используйте целые слова, избегайте сокращений и аббревиатур (если только аббревиатура не используется гораздо шире, чем полная форма, такая как URL или HTML).
class Raster;
class ImageSprite;
Методы
Методы должны быть глаголами, в смешанном регистре с первой буквой в нижнем регистре, причем первая буква каждого внутреннего слова пишется с большой буквы.
run();
runFast();
getBackground();
Соглашения об именах, Oracle
Вот пример того, как я бы определил функциональный интерфейс.
@FunctionalInterface
interface Decorator {
void decorate();
}
В коде это выглядит читабельно.
Decorator decorator = () -> {};
decorator.decorate();
Мои мысли о "декоратор против украшения":
"Decoration"
больше относится к описанию процесса / результата, тогда как "Decorator"
- это механизм / инструмент / средство для запуска этого процесса / для получения этого результата.
Если бы я увидел класс Decoration
в коде, я бы подумал о коллекции декоративных элементов (например, орнаменты, краски, обои), а не о человеке, который на самом деле украшает.
Если бы я увидел Decorator
или Painter
, я бы ожидал такие методы, как decorate()
или paint()
, потому что это то, что они могут / должны делать.
Сравните suppliance/supplier -> get()
и consumption/consumer -> accept(t)
.