powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Метрика MMC введена B.Харрисоном и К.Куком
15 сообщений из 15, страница 1 из 1
Метрика MMC введена B.Харрисоном и К.Куком
    #32434341
Оценщик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Метрика MMC(макрометрика сложности) введена B.Харрисоном и К.Куком и вычисляется по следующей формуле:

MMC = сумма i=1 до n( SC(i) *V(G)(i))

где n- число подпрограмм, SC(i) – макрометрика подпрограммы i, определяемая по следующей формуле

SC(i) = G(i) *(n-1) + P(i)* (1-DI(i))

Здесь G(i) и P(i) показывают, сколько раз глобальные переменные или параметры используются в подпрограмме i; DI(i) – индекс документированности для пподпрограммы i,который находится по формуле

DI(i) = число строк комментариев (i) /общее число строк в (i)
.V(G)(i) - мера Мак-Гейна.

ВОПРОС:

Покритикуйте данную меру.


1)Чем больше глобальных переменных использует подпрограмма тем выходит хуже.
2) Если использует одну глобальную переменную, то срузу почему-то V(G)(i) умножается аж на (n-1) может надо избавится от (n-1):
SC'(i) = G(i)+ P(i)* (1-DI(i))
3) Чем больше параметров использует продпрограмма тем выходит хуже
4) Почему-то индекс документированности влияет на коэффицент при параметрах, а не например при числе вхождений глобальных переменных
...
Рейтинг: 0 / 0
Метрика MMC введена B.Харрисоном и К.Куком
    #32435202
bas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1)Чем больше глобальных переменных использует подпрограмма тем выходит хуже.

Это очень плохо, когда используются глоб. переменные - от них надо вообще избавляться


2) Если использует одну глобальную переменную, то срузу почему-то V(G)(i) умножается аж на (n-1) может надо избавится от (n-1):
SC'(i) = G(i)+ P(i)* (1-DI(i))

Это потому что ошибок может быть больше, т.е. не зная того что глобальная перемен. используется ее можно юзать в n-1 попдпрограммам.


3) Чем больше параметров использует продпрограмма тем выходит хуже

Это не хуже, просто их надо документировать.


4) Почему-то индекс документированности влияет на коэффицент при параметрах, а не например при числе вхождений глобальных переменных

потому что нет смысла в док-ции глобальных переменных, т.к. док-ий или нет, все равно не зная того, ты можешь использовать эту глоб. перемен. в нескольких подпрограммами. Чем лучше документированна вся программа, тем легче в ней разобраться и чем больше параметров, тем тчательнее надо ее документировать.
...
Рейтинг: 0 / 0
Метрика MMC введена B.Харрисоном и К.Куком
    #32435373
Lepsik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--Это очень плохо, когда используются глоб. переменные - от них надо вообще избавляться

ты в курсе про понятие сиглетон? фактически эта таже глобальная переменная. И любая серьезная программа имеет из десятки и сотни
...
Рейтинг: 0 / 0
Метрика MMC введена B.Харрисоном и К.Куком
    #32435677
Tulenev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ты в курсе про понятие сиглетон? фактически эта таже глобальная переменная. И любая серьезная программа имеет из десятки и сотни

синглетон - это всего лишь детали реализации фабрики класса
для клиента не должно быть никакого различия с чем он работает: с синглетоном или нет
синглетон не всегда реализуется путем создания глобальной переменной (например синглетон в пределах нескольких процессов)
...
Рейтинг: 0 / 0
Метрика MMC введена B.Харрисоном и К.Куком
    #32436139
Фотография babaEGA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЧем больше параметров использует продпрограмма тем выходит хуже
Не "Хуже", а "сложнее"!
Это ведь метрика для оценки сложности. а не "плохости" программы ;)

Имхо. могут появиться какие-нибудь коэффициенты, выявленные эмпирическим путем. Т.е. вместо простой зависимости больше-меньше типа "Чем больше я пью кофе и крепкого чая, тем меньше мне хочется спать", будет "5/8 * кол-во кружек кофе + 3/8 * кол-во кружек чая"....
...
Рейтинг: 0 / 0
Метрика MMC введена B.Харрисоном и К.Куком
    #32436477
Оценщик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хотелось бы классифицировать модули по этому критерию сложности:
1) простой
2) нормальной сложности
3) сложный

Видится мне это так. Число подпрограмм должно быть 7 +-2. Мера V(G) если > 10 то считается сложной. Параметров -1. Поэтому

1) Простой: < 10*5 = 50
2) Нормальной сложности < 10* 9 = 90
3) Сложный > 10*9 = 90
...
Рейтинг: 0 / 0
Метрика MMC введена B.Харрисоном и К.Куком
    #32436596
Оценщик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хотя нет. простой сложности - это когда до 5 функций в модуле в каждой до 5 параметров. И сложность функции по Мак-Гейну до 10 путей.

Итого 5*10* 5 = 250

Нормальной сложности - это когда до 9 функций в каждой до 9 параметров. и сложность до 10 путей

Итого 9 * 9* 10 = 810

Cложный - это когда добле > 810
...
Рейтинг: 0 / 0
Метрика MMC введена B.Харрисоном и К.Куком
    #32436987
Lepsik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--для клиента не должно быть никакого различия с чем он работает: с синглетоном или нет

тогда и глобальная переменная не должна вызывать сложностей.

А уж сколько глобальных переменных, типа окружения среды и параметров Windows, то и разумное использование внутренних глобальных переменных не так уж и плохо. У например есть несколько глобальных переменных, типа ссылка на xml документ, один - глобальные справочники, другой документ проекта. Есть например переменная - обьект данных, который в себе и коннект к базе держит и ряд компонент внутри и в любом месте программы есть доступ к этом. А тянуть через интерфейсы все это хозяйство - только необоснованно усложнить код. Выйгрыша точно нет.
...
Рейтинг: 0 / 0
Метрика MMC введена B.Харрисоном и К.Куком
    #32437343
Tulenev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
тогда и глобальная переменная не должна вызывать сложностей.

согласен, это вопрос скорее эстетический :)

вспоминаются некоторые java-приложения которые просто не запускаются пока им не выставишь с десяток переменных окружения

а еще вспоминается библиотека MFC которая кушает солидный такой кусок памяти независимо от того сколько функций из неё было использовано
...
Рейтинг: 0 / 0
Метрика MMC введена B.Харрисоном и К.Куком
    #32438241
bas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тогда и глобальная переменная не должна вызывать сложностей.

согласен, это вопрос скорее эстетический :)


А я не соглашусь, вот например у вас есть модуль, в кот. есть глоб. переменная А, и есть локальная переменная А, присвая в процедуре А=10, вы присваиваете значение локальной переменной и вы об этой засаде хотя бы догадываетесь. Но вот Вы заболели и другому человеку говорят, поправь что бы глобальной переменной присваивалось значение 5 в этой процедуре и он смело в процедуре пишете А=5 и в другой вызвает ее, но вот не задача глобальная переменная не равна 5, а равно хрен знает чему и с потом на лбу он ищит проблему в логике, и хорошо если Вы быстро выздроровите и получите в нос за использование глоб. переменных... А бывают и случаи посложнения, когда сам разработчик все забывает. Так что использование глоб. переменных это плохой тон, как и использование goto.
...
Рейтинг: 0 / 0
Метрика MMC введена B.Харрисоном и К.Куком
    #32438413
f2f
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
f2f
Гость
и он смело в процедуре пишете А=5

А ты прежде чем писать нажми shift-f2 ...

И действительно свойства класса - это теже глобальные переменные, только название другое
...
Рейтинг: 0 / 0
Метрика MMC введена B.Харрисоном и К.Куком
    #32438430
Tulenev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А это уже к вопросу о соглашениях по именованию переменных - по префиксу или суффиксу или по строчным/прописным буквам в имени должно быть понятно - локальная это переменная, член класса, или глобальная переменная

И действительно свойства класса - это теже глобальные переменные, только название другое

лучше использовать термин "область видимости переменной" и стараться эту область видимости минимизировать
...
Рейтинг: 0 / 0
Метрика MMC введена B.Харрисоном и К.Куком
    #32438447
bas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и он смело в процедуре пишете А=5

А ты прежде чем писать нажми shift-f2 ...

А ты сначала изучи в каких ИДЕ, есть shift-f2, а в каких нет...


И действительно свойства класса - это теже глобальные переменные, только название другое

Ну приехали, матчасть сначала выучи...
...
Рейтинг: 0 / 0
Метрика MMC введена B.Харрисоном и К.Куком
    #32438452
bas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор
лучше использовать термин "область видимости переменной" и стараться эту область видимости минимизировать

во-во, хоть кто-то поддержал..
...
Рейтинг: 0 / 0
Метрика MMC введена B.Харрисоном и К.Куком
    #32438507
f2f
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
f2f
Гость
2 bas

А ты сначала изучи в каких ИДЕ, есть shift-f2, а в каких нет...

Вообще-то я надеялся, что ты догадаешься заглянуть в хелп, а не будешь слепо давить shft-f2

Перед теми, кто не догадался - извиняюсь
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Метрика MMC введена B.Харрисоном и К.Куком
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]