Должны ли мы использовать длинное имя или короткое имя в кодировании JavaScript? - PullRequest
6 голосов
/ 22 марта 2009

В моей рабочей группе обсуждается кодирование JavaScript. Некоторые люди утверждают, что мы должны использовать длинное имя для лучшей читаемости; другие считают, что короткое имя следует отдавать предпочтение тем же битам на проводе.

Обычно речь идет о соглашении по кодированию. Одна сторона считает, что идентификатор, такой как «fAutoAdjustWidth», в порядке, а другие предпочитают «fAtAjtW».

Итак, что лучше? Должны ли мы жертвовать удобочитаемостью ради производительности или нет?

Ответы [ 12 ]

21 голосов
/ 22 марта 2009

Сделайте его читабельным, и если вы чувствуете, что полученный файл JS слишком большой, используйте один из многих компакторов JS перед развертыванием рабочей версии, сохраняя при этом версию для разработки с длинными именами.

КСТАТИ. если вы действительно беспокоитесь о пропускной способности, используйте mod_deflate .

8 голосов
/ 22 марта 2009

Если вы беспокоитесь о битах на проводе, вы всегда можете запустить минификатор для вашего кода. Тогда вы могли бы разработать с длинными именами, и вы могли бы выпустить с гораздо меньшим файлом, который имеет эквивалентную функциональность. Yahoo YUI Compressor выглядит так, как будто он выполняет сжатие пробелов и токенов.

3 голосов
/ 22 марта 2009

в то время как другие предпочитают "fAtAjtW"

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

Чтение кода станет практически невозможным, и при написании кода людям постоянно приходится думать о таких вещах, как «было ли« fAutoAdjustWidth »сокращенно« fAtAjtW »или« fAutAtW »?». Это огромный моральный налог, который нужно платить при написании кода, что приведет к гораздо более низкой производительности.

Кроме того, проблема усугубляется тем фактом, что в Javascript вы получите новую переменную для каждого опечатки!

3 голосов
/ 22 марта 2009

Эти же люди выступают за то, чтобы не писать комментарии в своем коде? Будьте полностью понятны и описательны с именами переменных.

2 голосов
/ 22 марта 2009

Используйте большие имена переменных, потому что они помогают программисту.

Чтобы сохранить биты по проводам, сверните свой Javascript перед его развертыванием на рабочем сервере. Упаковщик Дина Эдвардса имеет возможность сжимать имена переменных, что для вас выглядит лучшим из обоих миров.

2 голосов
/ 22 марта 2009

Возможно, проблема не в битах на проводе, а в накладных расходах на чтение и повторный просмотр кода.

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

Без сомнения, это компромисс. Это зависит от того, хотите ли вы, чтобы ваш код напоминал естественный язык или был более неявным и компактным.

Некоторые префиксные имена переменных для добавления в них контекстной информации. Я говорю, что если это необходимо, среда IDE должна обеспечивать такие возможности внедрения, как визуальное наложение кода через символику контекста.

Следующая версия Visual Studio значительно упростит такую ​​гимнастику аннотаций благодаря детализированному механизму расширяемости, глубоко внедренному в сам редактор. Однако я не использовал Visual Studio для редактирования Javascript.

Теперь я вижу, что ваша забота - действительно космический компромисс. Это никогда не должно быть проблемой. Всегда всегда всегда предпочитайте читабельность битам на проводе, особенно поскольку сжатие существует, как отмечают другие комментаторы.

Единственное, что я хотел бы добавить, - это вышеизложенное, которое заключается в том, что иногда понимание облегчается с помощью компактных имен над чрезмерно длинными именами. Но сложнее правильно назвать короткие имена. Длинные имена намного проще и быстрее сделать правильно в моем опыте.

Причиной коротких имен никогда не должно быть сжатие данных, только когнитивная эффективность. То, что работает индивидуально.

2 голосов
/ 22 марта 2009

Используйте длинные имена, которых достаточно, чтобы хорошо описать переменные и функции.

Одной из причин, по которой вам часто нужны короткие имена, является уменьшение размера файла, но вы можете сделать это с помощью инструментов при загрузке в Интернете.

1 голос
/ 23 марта 2009

Тот, кто думает, что "fAtAjtW" предпочтительнее, использует какой-то фармакологический метод при программировании. fAutoAdjustWidth очень хорошо и очень разумно. Библиотеки Javascript по какой-то причине не используют имена типа fAtAjtW. Если вы беспокоитесь о размере, то, вероятно, ваши проблемы неуместны. Тем не менее, я рекомендую использовать какой-то минификатор. Однако, тем не менее, не используйте смехотворно долго; вероятно, что-нибудь более 25-30 символов идет немного далеко.

1 голос
/ 22 марта 2009

Одна сторона считает, что идентификатор, такой как "fAutoAdjustWidth", в порядке, тогда как другие предпочитают "fAtAjtW".

«fAtAjtW» - это нечитаемый, неописуемый ужас. Серьезно, кто-нибудь предпочитает это? Смешно и невозможно запомнить - это «AtAjt» или «AutAdj» ...?

'autoAdjustWidth' будет подходящим полным именем атрибута. (Я совсем не уверен в нотации префикса 'f', но это еще одна проблема.) Иногда вам нужно очень короткое имя для недолговечной переменной (например, временная переменная в маленьком цикле), в этом случае я лично я пойду прямо к «вар аав», а не к вышеупомянутому кошмару.

Что касается производительности, то не будет никакой разницы. JavaScript не заботится о том, как долго вы создаете имена переменных, и при условии, что вы сбрасываете свои сценарии на пути к браузеру, сжатие устранит все преимущества передачи более коротких имен.

1 голос
/ 22 марта 2009

Я бы настоятельно рекомендовал не использовать короткие идентификаторы. Простое чтение вашего примера показывает, сколько еще документации внезапно потребуется, когда используются такие имена, как fAtAjtW. В какой-то момент он станет практически не поддерживаемым, и это просто для сохранения нескольких байтов для передачи.

Если единственная причина для рассмотрения "коротких" имен состоит в том, чтобы уменьшить размер получаемого скрипта и тем самым сэкономить некоторую полосу пропускания, я бы вместо этого рекомендовал использовать сжатие gzip, которое сэкономит вам больше, чем несколько байтов для идентификатора.

...