Я как бы открываю открытый вопрос для поиска преимуществ или недостатков для создания новых классов в R. Из того, что я могу сказать, существует по существу четыре различные парадигмы, которые используются при создании классов в R, S3, S4, R5 (или RC) и R6.
S3 - это то, что используют большинство основных библиотек R, и, похоже, есть некоторые достоинства, чтобы придерживаться простой, слегка структурированной схемы использования диспетчеризации общего метода. Я бы хотел избежать использования этого по другим причинам, которые мне не совсем понятны, такие как инкапсуляция, определения методов и т.д. Например, это выглядит довольно громоздким при структурировании класса, поскольку общие методы определяются вне класса и вещей такого характера.
S4, похоже, не лучше, но у него есть плохое понятие о безопасности типа, связанное с ним, чтобы сделать очевидные ошибки, которые могут возникнуть более очевидными. Тем не менее, я все еще чувствую, что классы S4 трудно поддерживать в том смысле, что я не уверен в таких вещах, как инкапсуляция и такие, которые связаны с этими классами. Еще одна вещь, которая, кажется, меня смущает, заключается в том, что понятия пространства имен мало что известно.
R5 кажется немного более похожим на то, к чему я привык, где определения методов привязаны к классам, а не диспетчеризация функций. Здесь есть еще немного мысли, которые вступают в игру с организацией объекта в терминах класса, к которому я бы привык. Одним из возможных недостатков является то, что R5 также построен из S4.
R6, по-видимому, является переписанием R5 человеком, который добавляет в микс больше функций ООП, таких как частные и публичные функции и свойства, но я вряд ли найду поддержку для этих классов в противном случае, поскольку информация о них кажется быть редкими с помощью поиска Google.
Как вы можете сказать, я борюсь с концепциями OO в R, и я не могу понять, какие грани, которые обычно связаны с OOP:
- Тип Безопасность/Типы
- Метод/привязка объекта, инкапсуляция, переменные-члены и т.д.
- Распространение имен и организация кода
- Версии наследования.
Мне интересно, может ли кто-нибудь дать ответ, который может описать, что предпочтительная система классов находится в сообществе R, и как лучше всего думать о том, когда использовать классы.