Правда ли, что стиль allman может вызывать ошибки из-за размещения фигурных скобок в javascript?
Да, это. Как поясняет ваша ссылка, операторы return
, за которыми следует новая строка, сбивают с толку синтаксический анализатор, поскольку он пытается вставить точку с запятой. Однако это поведение не ограничивается возвратом литералов объекта. Следующая функция:
function foo()
{
return
"bar";
}
Также вернет undefined
.
Как насчет jquery?
Ситуация остается точно такой же, независимо от того, включен jQuery или нет.
Есть ли какой-нибудь трюк, который позволил бы мне без проблем использовать стиль Allman из-за фигурных скобок?
Да, не используйте стиль Allman с объектными литералами. Предположим, вы хотите присвоить объектный литерал переменной. Вы действительно собираетесь написать:
var foo =
{
bar: "quux"
};
Или вы пойдете на:
var foo = {
bar: "quux"
};
ИМХО второй сниппет читабельнее первого. Вы можете продолжать использовать стиль Allman с фигурными скобками внутри for
, if
, while
, function
и т. д., но сделать исключение для литералов объектов.
Есть ли другие проблемы, связанные с использованием этих стилей?
return
— это особый случай, потому что он допустим как с аргументом, так и без него. Столкнувшись с одиночным оператором return
в одной строке, синтаксический анализатор не может сказать, должен ли он добавить точку с запятой, чтобы сделать однострочный оператор действительным, или перейти к следующим строкам и надеяться на лучшее.
По этой причине я думаю, что такое поведение становится проблемой только с return
и, возможно, throw
, а не с другими операторами.
person
Frédéric Hamidi
schedule
02.09.2012
setTimeout(1000, function() { complex_functions_content });
Содержимое сложной функции будет в новой строке, а закрывающие скобки (как фигурные, так и круглые) в последней строке, на том же уровне отступа, что и вызов функции setTimeout.Написание такого кода в стиле Allman выглядело бы странно, ИМХО. - person Mark   schedule 02.09.2012