Используйте как можно меньшее вложение логических фрагментов, выделенных отступом (т.е. клавишей TAB).
Обычно если строки отдалились от левой кромки экрана на три TAB-а, то это всё ещё не катастрофично, но в принципе код мог бы быть написан более элегантно, а вот если более, чем на 3, то зажигается "красная лампочка" - структура кода организована некорректно, положение надо исправлять! TAB - он как соль в борще: без соли никак, но но если использовать слишком много, то борщ будет невозможно есть. Если ваш код может похвастаться длинными "лестницами" END IF-ов (или закрывающих фигурных скобок если речь о языке с Си-образным синтаксисом), то Вам стОит критически отнестись к своим программистским привычкам. Товарищ, выделяй фрагмент в отдельную функцию если видишь, что табы наступают как Наполеон на Москву! Лично я почти никогда не использую больше двух табов (во всяком случае стараюсь сдерживать себя в стремлении лишний раз клацнуть по вредной клавише) - соблюдение этого нехитрого правила приводит к ПРОСТЫМ подпрограммам, делая работу более простой и приятной и для меня, и для других членов команды.
Я часто вспоминаю слова своего первого руководителя: "Если я увижу в твоём коде более 3-х табов, вылетишь из проекта как пробка из шампанского!". Огромное спасибо этому человеку - если б не он, я бы пополнил армию кодеров, которым не хватает ширины экрана...
Циклы с "continue"
Используйте в циклах continue вместо того, чтобы выделять следующие строки дополнительным TAB-ом.
Этот способ - тяжёлая артиллерия в борьбе с избыточным отступом:
*** Не рекомендуется: ***
PowerBuilder:
Код: Выделить всё
do while [condition]
if this.uf_data_ok_1() then
if this.uf_data_ok_2() then
if this.uf_data_ok_3() then
[фрагмент кода (возможно, имеющий свои внутренние под-фрагменты с отступом)]
end if
end if
end if
loop
C#:
Код: Выделить всё
while ([condition])
{
if (this.DataOk1())
{
if (this.DataOk2())
{
if (this.DataOk3())
{
[фрагмент кода (возможно, имеющий свои внутренние под-фрагменты с отступом)]
}
}
}
}
*** Рекомендуется: ***
PowerBuilder:
Код: Выделить всё
do while [condition]
if not this.uf_data_ok_1() then continue
if not this.uf_data_ok_2() then continue
if not this.uf_data_ok_3() then continue
[фрагмент кода (возможно, имеющий свои внутренние под-фрагменты с отступом)]
loop
C#:
Код: Выделить всё
while ([condition])
{
if (!this.DataOk1()) continue;
if (!this.DataOk2()) continue;
if (!this.DataOk3()) continue;
[фрагмент кода (возможно, имеющий свои внутренние под-фрагменты с отступом)]
}