LOC на функцию
От: Roman Odaisky Украина  
Дата: 23.01.09 18:34
Оценка:
Решил посчитать, сколько строк кода в среднем приходится на функцию. Выкинул тривиальные методы классов, убрал лишние \n. Итого насчитал 6,1 строки на функцию. Самая длинная — 50 строк, 76% функций состоят из 7 и менее строк, 44% — из одной. Программа — веб-сайт на Python + Django + StringTemplate. Интересно, это в порядке вещей или я что-то не так делаю? Сколько у вас?
До последнего не верил в пирамиду Лебедева.
Re: LOC на функцию
От: FR  
Дата: 24.01.09 07:29
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>Решил посчитать, сколько строк кода в среднем приходится на функцию. Выкинул тривиальные методы классов, убрал лишние \n. Итого насчитал 6,1 строки на функцию. Самая длинная — 50 строк, 76% функций состоят из 7 и менее строк, 44% — из одной. Программа — веб-сайт на Python + Django + StringTemplate. Интересно, это в порядке вещей или я что-то не так делаю? Сколько у вас?


По моему нормально, я тоже после C++ удивлялся краткости.
Re: LOC на функцию
От: Nuald Россия http://nuald.blogspot.com
Дата: 28.01.09 06:00
Оценка:
Здравствуйте, Roman Odaisky, Вы писали:

RO>Решил посчитать, сколько строк кода в среднем приходится на функцию. Выкинул тривиальные методы классов, убрал лишние \n. Итого насчитал 6,1 строки на функцию. Самая длинная — 50 строк, 76% функций состоят из 7 и менее строк, 44% — из одной. Программа — веб-сайт на Python + Django + StringTemplate. Интересно, это в порядке вещей или я что-то не так делаю? Сколько у вас?


50 — это и того много. Обычно я допускаю максимум строчек 30 плюс докстринги. Особенно учитывая, что Python — полноценный ООП язык, и в нем можно просто и удобно разбивать на методы.
А вот слова "44% — из одной" настораживают. Обычно однострочные функции заменяются лямбдами. Плодить кучу методов тоже не стоит — все-таки это дает оверхед в производительности/потреблении памяти.
Re[2]: LOC на функцию
От: Roman Odaisky Украина  
Дата: 28.01.09 08:55
Оценка: +1
Здравствуйте, Nuald, Вы писали:

N>А вот слова "44% — из одной" настораживают. Обычно однострочные функции заменяются лямбдами.


Они там обвешаны декораторами, чаще всего тремя. Вроде бы лучше писать
@decorator1(parameter)
@decorator2
@decorator3(k1=v1, k2=v2)
def do_something(x, y):
    return f(g(x, h(y)))

чем
do_something = decorator1(parameter)(decorator2(decorator3(k1=v1, k2=v2)(lambda x, y: f(g(x, h(y))))))) # привет, Lisp

?
До последнего не верил в пирамиду Лебедева.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.