Показать сообщение отдельно
Старый 05.07.2017, 11:44   #12  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Наследование не позволит вам сделать то, что делает CoC, на статических методах.

Наследование не позволит нормально сосуществовать двум различным имплементациям которые одновременно должны влиять на выполнение кода.
А как расшифровывается CoC?

Дык.
Механизм extensions в Аксапте - это механизм плугинов у нормальных людей.
механизм плугинов позволяет вызвать все методы с одинаковыми сигнатурами, которые находятся в разных местах.

В этом смысле наследование и плугины - да, ортогональны друг-другу.

Но опять же - майкрософт ведут себя как пионеры-первопроходцы, как будто не было нескольких десятилетий после изобретения плугинов, отважно наступая на все грабли.

=========================
Я о чем:
  1. то, что они сделали как наследование - аллилуя! только чего же сразу так не сделали?
  2. то, что они задействовали новое ключевое слово next - отвратительно. Это отдаляет X++ от других языков.
  3. то, что они не использовали ключевое слово для перегрузки (типа overload, virtual или подобное) - по современным меркам хорошо. Но см. аргументацию Страустрапа в пользу явного указания этих ключевых слов
  4. то, что они по сути сделали 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
__________________
полезное на axForum, github, vk, coub.