Урок №3. Переменные и стиль программирования

В прошлом уроке мы выучили, как создать новый документ:

#target indesign
app.documents.add();

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

var doc = app.documents.add();

Как уже говорилось, add()  —  это команда, которая создает новый документ в коллекции документов. Или, другими словами, функция. Функции в JavaScript могут выполнять некие действия и возвращать (или не возвращать) результат. Функция app.documents.add() возвращает ссылку на созданный документ. Эту ссылку мы можем присвоить переменной doc, чтобы в дальнейшем обращаться к созданному документу через эту переменную.

Создавать переменную не обязательно, можно использовать обращение к документу через коллекцию, например: app.documents[0] (первый документ в коллекции), но это неудобно и не всегда безопасно.

Правильное использование переменных больше относится к индивидуальному стилю программирования, чем к общим рекомендациям, однако, про стиль стоит поговорить подробнее. Стиль программирования  —  это такая штука, которая может существенно помочь (или наоборот).

В компаниях, занимающихся разработкой ПО есть свои рекомендации по оформлению кода. Зачастую, очень подробные: общие правила наименования переменных, функций, правильность составления комментариев, и т.д. и т.п. Такой подход позволяет очистить код от произвола свободолюбивых программистов, сделать его более легким для понимания другими разработчиками.

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

Например, большинство бесплатных скриптов, поставляемых вместе с InDesign, имеют схожую структуру. Скрипт создания документа в такой структуре выглядел бы следующим образом:

#target indesign
with (app) {
    var doc = documents.add();
}

Конструкция with () {} в JavaScript означает, что с объектом, указанном в круглых скобках, производятся некие действия, перечисленные в фигурных скобках. В нашем случае конструкция означает: «Для объекта app добавить в коллекцию documents новый элемент». Поскольку все команды, вызываемые внутри фигурных скобок, по-умолчанию относятся к объекту app, то обращение к нему можно исключить, сократив вызов команды до documents.add(). По сути, это та же самая команда, только вызвана она более коротким способом.

Такой подход удобен, если для объекта нужно произвести несколько действий, но не всегда безопасен, и вот почему. Если в скрипте определена функция с именем, совпадающим с методом (тоже функцией) объекта, используемого в качестве аргумента конструкции with () {}, то вызвать такую функцию внутри конструкции явным образом невозможно. Обращение к функции всегда будет вызывать метод объекта, а не определенную пользователем функцию. Это может существенно усложнить отладку скрипта.

В результате длительной практики для себя я вывел несложные правила, оптимально подходящие для использования при написании скриптов:

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

Разберем по порядку, для чего эти правила нужны.

  • Функции
    Подробно ознакомиться с тем что такое функции в JavaScript и зачем они нужны, можно в специальных учебниках. Коротко говоря, это поименованный кусок кода, который можно выполнять, обратившись по имени. Если в коде последовательность из двух и более строк встречается больше одного раза, имеет смысл эту последовательность выделить в отдельную функцию и вызывать ее по мере необходимости. Такой подход позволяет разбить «простыню» последовательно исполняемых строк скрипта на небольшие куски кода, в которых куда легче разобраться. А главное  —  много легче поддерживать и модифицировать.
  • Мнемонические имена
    Язык JavaScript имеет небольшое количество правил для имен переменных и функций, не особенно ограничивая программиста в выборе имени. Зато существует некоторое количество рекомендаций по правильному выбору имен переменных в JavaScript. Основное правило: имя переменной или функции должно соответствовать назначению этой переменной или, соответственно, функции.
  • Комментарии
    Комментирование кода  —  самый болезненный вопрос для начинающего программиста, а если честно, то для любого программиста. Привычка комментирования кода и стиль комментариев вырабатываются годами. Главное, что следует знать начинающему программисту: комментарии должны быть.

По итогу применения моих рекомендаций к коду скрипта, он принимает такой вид:

#target indesign
/**
* Создает новый документ
*/
function main () {
    app.documents.add();
}
main();

Кратко разберем, что в коде нового.

Последовательность «/*…*/» позволяет создавать многострочный комментарий. Комментарий, как понятно из названия, комментирует код, но сам игнорируется при обработке скрипта.

Функция main определяется в соответствующей конструкции. Внутри функции все тот же знакомый код. Имя «main» («главный») означает, что эта функция является основной в скрипте.

Поскольку функции сами собой не выполняются, в основном коде скрипта (вне определяемых функций) следует вызвать основную функцию кодом main().

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google photo

Для комментария используется ваша учётная запись Google. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s