Доброе время суток уважаемые Коллеги,
Предлагаю рассмотреть возможность отказаться от ключевого слово final при разработке классов и методов. Для БУС это не так актуально как для Б24, но все же полезно.
Дело в том, что Вы изобретаете ПРОДУКТ, которые другие программисты ДОЛЖНЫ расширять(дополнять) и ИЗМЕНЯТЬ.
Когда Вы используете ключевое слово final при разработке класса, это означает что НИКТО другой не может больше изменить его поведение и он должен скопировать его и затем уже изменить логику. Получается ситуация - для изменения поведения.
Не буду указывать конкретные места - их много и grep'ом находятся спокойно, но случаются ситуации, когда нужно внести небольшое исправление.
Реальный кейс одного из клиентов: дать группе пользователей, без доступа к административному режиму, возможность видеть все задачи компании.
Как это, казалось бы, можно было бы решить БЕЗ изменения ядра? Отнаследоваться от класса компонента, сделать наследника для класса задач и исправить пару методов. Долго? Нет. Эффективно? Да. А что с обновлением? Если поменяются методы, то придется поработать, но в обозримом будущем ничего координально не изменится, а то что поменяется легко будет поправить.
Как это сейчас предлагает сделать битрикс: копировать ВЕСЬ код модуля в свое пространство/local, изменить необходимые методы и работать. Долго? Да. Не эффективно? Да. Работы по обновлению модуля? Крайне сложны.
Как это было реализовано? Правка в ядре битрикса. Долго? Нет. Эффективно? Да. Работы по обновлению? Рука-лицо.
Клиент НЕ видит этих изменений и ему кажется, что работы тут на 5-10 минут, а по факту - геморроя в предлагаемом битриксе варианте намного больше.
ПРОШУ!!! НИКОГДА НЕ ИСПОЛЬЗУЙТЕ В ОТЧУЖДАЕМОМ КОДЕ СЛОВО FINAL!!!
Было бы понятно, если бы вы как Мегаплан предоставляли закрытую коробку без возможности кастомизации - только модули, но анонсировано то совсем другое.