Технически нет, но в остальном абсолютно Да !!!
Забудьте о «Это личные предпочтения», «код будет работать нормально», «он работал нормально для меня», «он более читабелен» yada yada BS. Это может легко привести к очень серьезным проблемам, если вы допустите ошибку и поверите мне, что очень легко допустить ошибку, когда вы кодируете (не верьте ?, посмотрите известную ошибку Apple, которая может потерпеть неудачу ).
Аргумент: «Это личное предпочтение»
Нет это не так. Если только вы не команда из одного человека, уезжающая на Марс, нет. Большую часть времени будут другие люди, читающие / изменяющие ваш код. В любой серьезной команде программистов это будет рекомендуемый способ, поэтому это не «личное предпочтение».
Аргумент: «код будет работать нормально»
Так же как и код спагетти! Означает ли это, что это нормально, чтобы создать его?
Аргумент: «у меня все работало нормально»
В моей карьере я видел очень много ошибок, созданных из-за этой проблемы. Вы, вероятно, не помните, сколько раз вы комментировали 'DoSomething()'
и сбивали с толку, почему 'SomethingElse()'
вызывается:
if (condition)
DoSomething();
SomethingElse();
Или добавил SomethingMore и не заметил, что он не будет вызываться (хотя отступ подразумевает иное):
if (condition)
DoSomething();
SomethingMore();
Вот пример из жизни, который у меня был. Кто-то хотел отключить ведение журнала, чтобы запустить поиск и замену "console.log"
=> //"console.log"
:
if (condition)
console.log("something");
SomethingElse();
Видишь проблему?
Даже если вы думаете, «это так тривиально, я бы никогда этого не сделал»; помните, что всегда будет член команды с более низкими навыками программирования, чем вы (надеюсь, вы не худший в команде!)
Аргумент: «это более читабельно»
Если я что-то узнал о программировании, так это то, что простые вещи очень быстро становятся очень сложными. Это очень часто, что это:
if (condition)
DoSomething();
превращается в следующее после того, как оно было протестировано с другими браузерами / средами / вариантами использования или добавлены новые функции:
if (a != null)
if (condition)
DoSomething();
else
DoSomethingElse();
DoSomethingMore();
else
if (b == null)
alert("error b");
else
alert("error a");
И сравните это с этим:
if (a != null) {
if (condition) {
DoSomething();
}
else {
DoSomethingElse();
DoSomethingMore();
}
} else if (b == null) {
alert("error b");
} else {
alert("error a");
}
PS: Бонусные баллы идут тому, кто заметил ошибку в приведенном выше примере.