2013-04-08 3 views
-2

Мне интересно, может ли кто-либо сделать какие-либо выводы относительно относительной сложности этих двух кодов, если использовать метрики LOC и циклической сложности? это своего рода делает мою голову.Цикломатическая сложность метрики

Код

int i = 1; 
    while(i < = 5){ 

    playACard(i); 

    if (playerHasWon(i)) 
    break; 
    i++ 
    } 

Код B

int j = 0; 

int i = 2; 

j = i; 
j = j + i; 

j++; 
System.out.println (j); 

System.out.println 
+1

Ни один фрагмент не действителен ни на C++, ни на Java. – Thomas

+0

Является ли это php или что? Я смутил им не программиста, но не закрываю его, пожалуйста. Я думал, что это сайт для помощи другим –

+1

Ну, да и нет. Вы можете прочитать FAQ: http://stackoverflow.com/faq – Thomas

ответ

2

Использование передовых инструментов LOC (т. Е. Моих глаз и пальцев :-)) Я подсчитываю, что подсчет LOC для двух частей кода одинаковый ... игнорирование пустых строк.

Для циклического учета сложности вам нужен синтаксический код ... на каком-то языке программирования ... для работы с инструментами. Я откладываю ответ на вопрос @ d'alar'cop для расчета руки и объяснения того, как он к ней пришел.


Но, честно говоря, LOC и Cyclometric. Сложность мер для такого кода не помогает. Два образца делают совершенно разные вещи, поэтому на самом деле это мало чем отличается от «сложного».

На мой взгляд, CC действительно полезен для определения чрезмерно сложного кода при первом просмотре кода. Как только вы определили проблему областей, опытный программист лучше судит о реальной сложности (т. Е. О том, что делает код трудным для понимания) ... и нужна ли эта сложность/неотъемлемая часть проблемы при рука.

+0

Замечательный анализ –

1

Код B имеет цикломатическую сложность 1. Там есть только 1 возможный путь через код.

Cyclomatic complex измеряет количество возможных путей выполнения (это полезно при тестировании и оценке размеров программной системы.) - но большинство людей скажут, что это неточно или полезно для последнего.

Код А имеет циклическую сложность 4. Поскольку код может либо вводить цикл, либо не вводить его (то же самое, что оставлять его) (2 возможных пути), и есть одно выражение if, которое умножает возможности на 2 снова ,

Cheers.

Требуется больше объяснений?

+0

не могли бы вы дать объяснение, это действительно помогло бы –

+0

сделано ... дайте мне знать, если не ясно –

Смежные вопросы