Цитата:
Сообщение от
kashperuk
Наследование не позволит вам сделать то, что делает CoC, на статических методах.
Наследование не позволит нормально сосуществовать двум различным имплементациям которые одновременно должны влиять на выполнение кода.
А как расшифровывается CoC?
Дык.
Механизм extensions в Аксапте - это механизм плугинов у нормальных людей.
механизм плугинов позволяет вызвать все методы с одинаковыми сигнатурами, которые находятся в разных местах.
В этом смысле наследование и плугины - да, ортогональны друг-другу.
Но опять же - майкрософт ведут себя как пионеры-первопроходцы, как будто не было нескольких десятилетий после изобретения плугинов, отважно наступая на все грабли.
=========================
Я о чем:
- то, что они сделали как наследование - аллилуя! только чего же сразу так не сделали?
- то, что они задействовали новое ключевое слово next - отвратительно. Это отдаляет X++ от других языков.
- то, что они не использовали ключевое слово для перегрузки (типа overload, virtual или подобное) - по современным меркам хорошо. Но см. аргументацию Страустрапа в пользу явного указания этих ключевых слов
- то, что они по сути сделали friend-класс (дали доступ к внутренним переменным) - очень спорно. для extension-методов не определен порядок вызова, а внутренние переменные устанавливают статус. Поэтому ооочень будет не хватает управлением порядка вызовов extension-методов
в общем, extension-методы не новость, есть куча аналогов.
и очень хочется видеть не заклинания (cast) в стиле "This is my new favorite X++ feature", а сравнение с другими инструментами/языками. и анализ плюсов-минусов и способов минимизации минусов.
Для сравнения см. того же Страустрапа. Да, не во всем он по итогу прав (см. тот же Boost). но его доводы внушают уважение и к ним стоит прислушаться.
а тут броуновское движение какое-то.
Почему в одном случае таки расширили значение ключевого слова next, а в другом вставили какой-то атрибут? какое-нибудь ключевое слово использовать в том же месте, где "живут" extends-implements. Например, by, case, like. Да хоть тот же delegate!
https://msdn.microsoft.com/en-us/lib...or=-2147217396