Реализация векторного класса в Delphi?
-
18-09-2019 - |
Вопрос
Как бы вы создали векторный класс в Delphi?Я бы предпочел поместить все, что связано с математикой, в DLL.Должен ли я использовать запись или класс, реализующий интерфейс?
Плюсы рекордного подхода:
- Быстрый и легкий
- Тип значения
- Перегрузка оператора
Минусы рекордного подхода:
- Реализация не может быть скрыта в DLL (нет наследования, поэтому невозможен абстрактный базовый класс для интерфейса DLL).
- Проблемы с записями как свойствами классов (
Class.VectorProp.X := 42
)
Что вы думаете?
Решение
Это зависит от ваших приоритетов.
Если производительность является главным приоритетом, стремитесь к рекордам.Но если сокрытие реализации — лучший вариант, выбирайте интерфейсы.
Но почему бы не использовать пакет, чтобы вы могли использовать как статическую, так и динамическую компоновку, если хотите.Конечно, DLL предпочтительнее, если код будет использоваться на других языках, DLL — лучший подход.
В конечном итоге, требования и их относительный приоритет определяют реализацию.
Другие советы
Я не использовал ни один из них, но они могут сэкономить вам время.
- Математический пакет SDL - не уверен, что вам придется за это платить
- Джедайская математика - похоже, проект заброшен, но проверить его все равно стоит.Если вы не делаете ничего сумасшедшего, это, вероятно, сработает для вас.