Показать сообщение отдельно
Старый 21.06.2017, 08:22   #124  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от mazzy Посмотреть сообщение
Тут у меня такое соображение. По мотивам выступления Макса Белугина.

Может разница в восприятии сложности диктуется namespace'ами?
Кошелек Миллера - чтобы чем-то комфортно оперировать надо иметь это в количестве 7+-2.

Чтобы иметь это в таком количестве надо делать крупные кусочки из мелких. Причем кусочки люого уровня должны иметь "снаружи" и "внутри" и снаружи быть проще чем внутри.

PHP код:
PS E:\RainMain\Source\AppIL\Metadata\ApplicationSuitels -Recurse -Include *.xml |  measure

Count    
78843 
Это количество объектов в ApplicationSuite чтобы их равномерно разбить на кусочки по 8 надо
X++:
[Math]::Log(78843, 8)
5.42223168398599 уровня. НАД уже существующими объектами приложения.

Но существующие объекты тоже достаточно жирные. Если посчитать строчки кода, то:

X++:
PS E:\RainMain\Source\AppIL\Metadata\ApplicationSuite> ls -Recurse -Include *.xml | %{ (gc $_.FullName).Length }|  measure -sum | % sum
24284376

PS E:\RainMain\Source\AppIL\Metadata\ApplicationSuite> [Math]::Log(24284376, 8)
8.17784169341017

Цитата:
получается, что в неймспейсах класс - это что-то вроде группы свойств и методов, которые предназначены делать какую-то одну задачу.
Это называется Single Responsibility Principle

Цитата:
в традиционной аксапте нет возможности группировать методы, а список классов бесконечный...
В традиционной аксапте можно использовать префиксы для того, чтобы отделять модули. В 2012 появились модели, в 7 появились модули.

То есть у нас есть объекты приложения, модели, модули, причем отличить внутренне от внешнего можно только на уровне объектов приложения (да и то не всех). У модулей есть ключевое слово internal, но оно не работало для нас, например год назад полностью - не поддерживалось в VS и не было InternalsVisibleTo (что надо для юниттестов).

Под классами есть методы, функции (которые не рекомендуется использовать).

То есть нужно ~9 уровней а есть пять, причем, последние два воявились в 2012 и 7 и внутренности нельзя спрятать выше уровня класса.

На уровне модуля хотя бы контроллируются зависимости и их нецикличность.

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