- PVSM.RU - https://www.pvsm.ru -

Средняя длина идентификатора в популярных библиотеках JavaScript составляет 8.27 символа

Средняя длина идентификатора в популярных библиотеках JavaScript составляет 8.27 символа
Идентификаторы длиной больше 15 встречаются реже односимвольных. Чаще всего встречаются 6-cимвольные имена. Такие результаты получил [1] автор Esprima — парсера для JavaScript, написанного на JavaScript [2], проанализировав исходный код таких библиотек, как jQuery, Prototype, MooTools, Underscore и некоторых других.

Пятёрка самых длинных идентификаторов выглядит так:

prototype-1.7.0.0.js SCRIPT_ELEMENT_REJECTS_TEXTNODE_APPENDING
prototype-1.7.0.0.js MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED
jquery-1.7.1.js subtractsBorderForOverflowNotVisible
jquery.mobile-1.0.js getClosestElementWithVirtualBinding
prototype-1.7.0.0.js HAS_EXTENDED_CREATE_ELEMENT_SYNTAX


С помощью вот такого скрипта для Node.js можно сравнить свой стиль именования переменных и функций с классическими образцами на предмет излишнего многословия или чересчур суровой лаконичности:

var fs = require('fs'),
    esprima = require('esprima'),
    files = process.argv.splice(2);
 
files.forEach(function (filename) {
    var identifiers = {},
        content = fs.readFileSync(filename, 'utf-8'),
        syntax = esprima.parse(content);
 
    JSON.stringify(syntax, function (key, value) {
        if (key === 'name' && typeof identifiers[value] === 'undefined') {
            identifiers[value] = value.length;
        }
        return value;
    });
 
    for (var key in identifiers) {
        if (identifiers.hasOwnProperty(key)) {
            console.log(identifiers[key]);
        }
    }
});

Запускать так:

node idlen.js /path/to/some/*.js | sort -n | uniq -c

Автор: ilya42


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/javascript/7596

Ссылки в тексте:

[1] получил: http://ariya.ofilabs.com/2012/05/javascript-identifier-length-distribution.html

[2] парсера для JavaScript, написанного на JavaScript: http://habrahabr.ru/post/134602/