При переносе модуля Javascript из версии BPMonline 7.2 в 7.6 интерпретатор трактует длинную строку комментария как ошибку
Здравствуйте. Переношу JavaScript модуль из версии BPMonline 7.2 в версию 7.6. Если интерпретатор, при проходе по этому модулю (в BPMonline 7.6) встречает длинную закомментированную строку, то показывает на ней ошибку "line too long". Например, вот на такой закомментированной строке:
Из-за чего это ? Как исправить исходник, чтобы данная ошибка исчезла ?
Нравится
Евгений, добрый день!
Данное сообщение возникает для строк, превышающих 120 символов, поскольку такие строки в коде неудобны для зрительного восприятия и могут быть потенциальными источниками ошибок.
Для устранения подобных проблем достаточно разбить строку на несколько более коротких. В случае комментариев можно использовать многострочный комментарий либо несколько однострочных:
//test definition => { // fn: RegExp/function, // cardinality: int, // optionality: bool, // newBlockMarker: bool, // offset: int, // casing: null/upper/lower, // def: definitionSymbol //}
Спасибо, Олег, а вот скажите, пожалуйста, такую вещь - интерпретатор в 7.6 нередко показывает как ошибку то, что строка кода должна находится, не в текущей строке, а, скажем, на строку или на две выше. Это случается, когда, например пишешь открывающую фигурную скобку у блочного оператора, например if(){} не в той же строке, в которой заканчивается описание его условия
if(/* Условие*/) {
а на следующей
if(//Условие) {
В этом случае интерпретатор трактует как ошибку, то, что какая-либо из строк кода, из числа находящихся ниже, располагается, скажем, не в 49-й строке, а в 50-й, хотя ожидалось, что она будет расположена в 49-й. И вот, в случае разбиения длинной строки комментария на несколько строк, не покажет ли интерпретатор вышеописанную ошибку касательно какой-нибудь из строк исполняемого кода, из числа расположенных ниже комментария?
И второе - скажи, пожалуйста, почему интерпретатор показывает описанную выше ошибку местоположения строки кода ? Ведь у компиляторов C# и C++ такой "странности" нет и в помине.
Заранее благодарен. С уважением
На длинных строках кода JavaScript тоже встречается такая ошибка (например длинный с писок аргументов функции). Можно, при возможности, и длинную строку кода разнести на несколько строк ?
Евгений, главное назначение сообщений, которые появляются при сохранении схемы - соблюдение единого стиля кодирования, чистота и удобочитаемость кода, а также уменьшение потенциальных возможностей для ошибок. Например, в случае блока if не возникнет особых проблем, если Вы перенесёте открывающую фигурную скобку на следующую строку, но в случае других операторов это может вызвать существенную проблему. Например, если Вы напишете
// некорректное выражение return { value: myValue }
Ваша функция вернёт в результате не объект, как ожидается, а неопределённое значение. Поэтому правильно писать в данном случае так:
return { value: myValue }
Соответственно, если писать в блоке if скобки с новой строки, а после return - в той же строке, получаем отсутствие единого стиля и неудобство восприятия.
Что касается длинных строк, да, их можно разбивать на несколько, но с добавлением табов в следующих строках. Например:
if ((<Выражение1>) && (<Выражение2>) && // 2 таба относительно первой строки (<Выражение3>)) { // 2 таба относительно первой строки <Содержимое блока> // 1 таб относительно первой строки }
Отвечая на Ваш вопрос "почему интерпретатор показывает описанную выше ошибку местоположения строки кода?" - данные проверки не являются характерными для языка JavaScript, они дополнительно встроены в ядро системы bpm'online с целью, как я уже упоминал выше, приведения кода к единому стилю и уменьшения количества ошибок.