Разница реализации между статическим методом и методом экземпляра
Описание
Немного абстрактный вопрос, решение которого я не могу точно найти уже долгое время.
У вас есть класс для работы с координатами, который включает метод расчета дистанции между двумя точками:
class Point2D {
static getDistanceBetween(point1: Point2D, point2: Point2D): number {
return Math.hypot(point1.x - point2.x, point1.y - point2.y);
}
getDistanceFrom(other: Point2D): number {
return Point2D.getDistanceBetween(this, other);
}
}
Вопрос
Правильно ли иметь этот метод как статический и как метод экземпляра?
Применимо ли это к другим методам, например, к методу клонирования?
Насколько это логично?
Насколько оптимизировано?
В общем я бы хотел, чтобы вы сказали все сильные и слабые стороны данного контекста и как бы вы посоветовали поступить в подобных ситуациях.
Дополнительно
Вопрос подписал как typescript, но язык в данном контексте имеет очень малую разницу.