Нет правильного ответа.
Для неофициальных оценок я использую wc -l.
Если бы мне нужно было что-то строго измерить, я бы измерил исполняемые операторы. Практически все, что с оператором-терминатором (обычно точкой с запятой) или оканчивается блоком. Для составных операторов я бы подсчитывал каждое подзаголовок.
Итак:
int i = 7; # one statement terminator; one (1) statement
if (r == 9) # count the if as one (1) statement
output("Yes"); # one statement terminator; one (1) statement; total (2) for the if
while (n <= 14) { # count the while as one (1) statement
output("n = ", n); # one statement terminator; one (1) statement
do_something(); # one statement terminator; one (1) statement
n++ # count this one, one statement (1), even though it doesn't need a statement terminator in some languages
} # brace doesn't count; total (4) for the while
Если бы я делал это в Scheme или Lisp, я бы посчитал выражения.
Как уже говорили другие, самое главное, чтобы ваш счет был последовательным. Также важно, для чего вы это используете. Если вы просто хотите, чтобы потенциальный новый сотрудник знал, насколько велик ваш проект, используйте wc -l. Если вы хотите заняться планированием и оценкой, возможно, вы захотите стать более формальными. Вы не должны ни при каких обстоятельствах использовать LOC для расчета компенсации программисту.