Подтвердить что ты не робот

Комментарий Java в конце скобки/блока

Является ли принятой практикой на языке программирования Java прекращение скобки для блока кода с комментарием, вкратце объясняющим, какой код блокирует скобки? Я лично думаю, что они бесполезные комментарии, которые загромождают читабельность кода, но, возможно, я могу ошибаться. Например:

public void myMethod(int foo) {    
    // some code
    if (foo == 2) {
        for (int i = 0; i < myMax; i++) {
            while (true) {
                // some more code
            } // end while
        } // end for
    } // end if
} // end myMethod(int)

Является ли практика комментирования блоков кода аналогичным образом принятой практикой?

4b9b3361

Ответ 1

Это не совсем плохая практика, но это смертельный побочный эффект плохой объектно-ориентированной практики кодирования!

Кроме того, это нарушает правила стиля и принципы "самодокументирующего кода" . У вас никогда не должно быть такого количества скобок или метода, который достаточно запутан, чтобы запутать читателя о размещении скобок, вместо этого инкапсулируйте эту функциональность в другой метод, который хорошо документирован.

Скобки подразумевают либо циклические, либо сложные логические цепочки if-else, хорошая практика программирования заключается в том, чтобы метод выполнял ровно одну вещь и делал это хорошо, а затем создавал вашу программу из этих меньших, распыленных методов. Я бы прочитал семантический фрагмент Батлера Лэмпсона "Советы по разработке компьютерных систем" . В нем рассказывается о том, как разработать хорошее программное обеспечение.

По существу, не комментируйте это, потому что:

  • Он нарушает правила стиля
  • Он показывает плохое объектно-ориентированное программирование - распыляет ваши функции!
  • Это смертельный побочный эффект практики кодирования, который противоречит основополагающим концепциям создания Java - инкапсуляции, в частности, информации, скрывающей
  • Это нарушает концепцию самодокументирующего кода.
  • Другие программисты посмеются над вами.

Ответ 2

Я считаю, что это, как правило, НЕ хорошая практика. Как всегда с правилами могут быть исключения, но очень редки.

Это не очень хорошая практика, потому что

  • Современные редакторы выделяют открывающий кронштейн, когда вы помещаете курсор на закрывающий и наоборот.
  • Самое главное: если есть возможность не видеть начало предложения, это означает, что метод огромен (более половины страницы), что является плохой практикой.
  • Он добавляет шум в код, который смущает читателей, которые привыкли к более привычному стилю Java-кодирования.
  • Включение комментария LordScree-Joachim Sauer: эти комментарии будут быть болью в шее для поддержания. Поэтому, скорее всего, он не будет поддерживаться, и информация, как правило, будет несовместима с реальностью.

Ответ 3

Это зависит от того, насколько сложным является метод или функция. Например, если у вас есть что-то, что может быть легко прочитано и понято, потому что на самом деле не было бы смысла заканчивать КАЖДУЮ строку с комментарием, объясняющим, что часть закончилась. Это то, что для отступов и разрывов строк. Однако, если у вас есть что-то действительно сложное и влияет на основную часть вашего кода, тогда вы должны указать, где заканчивается этот код и что делает этот раздел.

Ответ 4

Я делаю это только тогда, когда есть место в коде, у которого много замыкающих друг друга скобок. Но не для каждой фигурной скобки. В основном я, кажется, использую его для циклов, чтобы вы могли легко увидеть, что такое повторяющийся блок кода.

Что-то похожее на это:

            // ...
            file.Close();
          }
        }
      }
    }
  }
}

Затем он добавляет некоторые комментарии:

            // ...
            file.Close();
          }
        }
      }
    }//for: each file
  }
}

Ответ 5

Если есть вложенные блоки такого же типа, это может ввести в заблуждение, а не делать добро. Скажем, у вас есть 4 или 5 вложенных оператора if (имейте в виду, что это только пример, демонстрирующий ситуацию, независимо от того, "вы должны отделить эти" или "сделать способ" ), в этом случае у вас будет 4 или 5 другой//конец, если секвенирован. Через некоторое время вы сбиваете с толку, какой "конец, если" для какого утверждения, заставляет вас тратить лишние усилия бессознательно, чтобы просмотреть фактические коды/утверждения, потому что он не всегда такой же чистый/короткий, как ваш пример.

Ответ 6

ИМО, это мало помогает. Код внутри цикла или оператор if не должен быть слишком большим. Это помогло бы, если бы внутри цикла было 500 строк.