Я пишу API для создания геометрических фигур и сталкиваюсь с некоторыми трудностями, называя свои методы.
Давайте рассмотрим простой случай: создание круга. Большинство из нас могут быть знакомы с методом, подобным graphics.drawEllipse(x, y, w, h)
. Чтобы нарисовать круг, вам нужно знать верхнюю левую координату, а также ширину и высоту круга.
Мой API предназначен для того, чтобы разработчик мог с легкостью рисовать фигуры, используя разнообразную информацию, не прибегая к математике, что тривиально для кругов, но сложнее для других фигур. Например, вы также должны иметь возможность нарисовать окружность, учитывая ее центральные координаты и радиус или верхнюю левую и нижнюю правую координаты.
Итак, у меня есть Circle
класс с фабричными методами, такими как:
Circle.createWithCenterAndRadius(cx, cy, r)
Circle.createWithBoundingBox(x1, y1, x2, y2)
Circle.createWithWidthAndHeight(x, y, w, h)
Я чувствую, что здесь может быть "запах кода", но я не уверен. С одной стороны, эти фабричные методы обязательно носят описательный характер. С другой стороны, я могу предвидеть, что названия этих методов выйдут из-под контроля. Например, как бы я назвал метод фабрики треугольника, который создает треугольник с заданной точкой, длиной одной стороны, углом и длиной другой стороны? Triangle.createWithPointSideAngleAndSide(x, y, side1, angle, side2)
? Это просто зло?
Если бы вы использовали этот API, были бы вам хороши такие имена методов? У вас есть совет, как я могу сделать имена методов более разумными?