При переносе модуля Javascript из версии BPMonline 7.2 в 7.6 интерпретатор трактует длинную строку комментария как ошибку

Здравствуйте. Переношу JavaScript модуль из версии BPMonline 7.2 в версию 7.6. Если интерпретатор, при проходе по этому модулю (в BPMonline 7.6) встречает длинную закомментированную строку, то показывает на ней ошибку "line too long". Например, вот на такой закомментированной строке:

//test definition => {fn: RegExp/function, cardinality: int, optionality: bool, newBlockMarker: bool, offset: int, casing: null/upper/lower, def: definitionSymbol}

Из-за чего это ? Как исправить исходник, чтобы данная ошибка исчезла ?

Нравится

5 комментариев

Евгений, добрый день!

Данное сообщение возникает для строк, превышающих 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 с целью, как я уже упоминал выше, приведения кода к единому стилю и уменьшения количества ошибок.

Спасибо.

Показать все комментарии