Ответ 1
В среднем - я думаю, что программные показатели - сомнительная идея - они обычно отвлекают вас от действительно важного вопроса, который "насколько мы доставляем заказчику".
Сказав это, я признаю, что они могут быть необходимым злом в некоторых контекстах и могут иногда давать вам полезную информацию о вашей базе кода.
Итак, вот несколько, которые могут быть Clojure -специфичны.
- Определяется число верхних уровней (возможно, выраженное как отношение к общему количеству символов?)
- Сопряжение Java:% символов, связанных с Java interop (new, ClassName.,.someMethod и т.д.) - в идеале поддерживать связь, ограниченную определенными модулями, ответственными за взаимодействие Java, то есть должно быть крайне низким% везде, кроме библиотек, которые управляют взаимодействием.
- Средний максимальный уровень вложенности функции defns (думаю, 5ish good, 10+ bad??)
- Макро плотность:% форм, требующих расширения макросов
- % функций с docstrings
- % символов или функциональных параметров, определенных с помощью типов подсказок
- Средний размер анонимных функций (они, вероятно, должны быть небольшими!)
- % функций в clojure.core используется (дает некоторое представление о "диапазоне словаря" и сложности кода)
- (Спасибо nickik!) количество созданных ref-типов (динамические vars, atom, ref и агент) - важно, если вы хотите внимательно следить за своим изменчивым состоянием!
p.s. если вы получите эту работу, было бы очень интересно увидеть изменения в результатах в различных проектах с открытым исходным кодом clojure!