Как нужно прокомментировать если еще структура? [дубликат]

66
задан 3 revs, 2 users 100% 13 April 2010 в 20:05
поделиться

11 ответов

Другой вариант:

if(condition) { //check for condition
    i = 1;
} else { //condition isn't met
    i = 2;
}
23
ответ дан 24 November 2019 в 15:05
поделиться

Вы должны комментировать только в том случае, если код не говорит сам за себя. Так что сделайте это само собой разумеющимся. Как это, возможно,

bool fooIsNotReallyGood = ....;

if(fooIsNotReallyGood) {
...
} else {
...
}
13
ответ дан 24 November 2019 в 15:05
поделиться

условия самокомментария, то в дополнительных комментариях нет необходимости. Допустим, условие состоит в том, что достигается максимальная стоимость кредита. Это дает нам:

if (maximumLoanToValueIsReached)
{
   i=1;
}
else
{
   i=2;
}

Нет необходимости указывать, когда i = 2, что максимальная сумма кредита не была достигнута, поскольку это не требует пояснений. Кроме того, я бы также переименовал i во что-нибудь более значимое.

5
ответ дан 24 November 2019 в 15:05
поделиться

// условие не выполняется кажется бесполезным комментарием. Но в случае, когда требуется такой комментарий, я делаю это так (C #):

//check for condition
if(condition) 
{
    i = 1;
} 
//some other condition
else 
{
    i = 2;
}

Однако, если блок - это просто if-else, я бы объединил оба комментария перед if.

Для javascript я предпочитаю

//check for condition
if(condition) {
    i = 1;
} else { //some other condition
    i = 2;
}

P.S. Кажется, мнений столько, сколько людей :)

2
ответ дан 24 November 2019 в 15:05
поделиться

Вы можете извлечь if-else код методов и дать им правильные имена:

function main() {
  checkForCondition(condition);
  conditionIsNotMet(condition);
}

function checkForCondition(boolean condition) {
  if (condition) {
    i = 1;
  }
}

function conditionIsNotMet(boolean condition) {
  if (!condition) {
    i = 2;
  }
}

В таком тривиальном случае это кажется излишним, но представьте, что на ветку if-else приходится более одной строки.

-3
ответ дан 24 November 2019 в 15:05
поделиться

Я бы вообще не стал комментировать эти конкретные случаи - комментарии не добавляют никакой ценности вашему и без того ясному коду. Если у вас действительно сложное условие, которое трудно прочитать, я бы подумал о том, чтобы преобразовать его в функцию (вероятно, inline ) с очень понятным собственным именем.

4
ответ дан 24 November 2019 в 15:05
поделиться

Вот как я делаю свои комментарии к операторам if then, хотя обычно считаю, что это не так. т необходимо. Мне нравится помещать его в строку с if / else и помещать табуляцию в одно и то же место

if ( condition )    //if above the bar
{
    i = 0;
    k = 1;
}
else                //else if below
{
    i = 1;
    k = 2;
}
2
ответ дан 24 November 2019 в 15:05
поделиться

Если код еще не самодокументирован, то я бы структурировал его следующим образом:

if (someCondition) {
    // If some condition, then do stuff 1.
    doStuff1();
}
else {
    // Else do stuff 2.
    doStuff2();
}

Но опять же, это не имеет особого смысла, если код уже самодокументирован. Если вы хотите добавить комментарии из-за какого-то сложного условия типа:

if (x == null || x.startsWith("foo") || x.endsWith("bar") || x.equals("baz")) {
    doStuff1();
}
else {
    doStuff2();
}

Тогда я бы рассмотрел возможность рефакторинга так:

boolean someCondition = (x == null || x.startsWith("foo") || x.endsWith("baz") || x.equals("waa");

if (someCondition) {
    doStuff1();
} else {
    doStuff2();
}

Где в имени переменной someCondition фактически суммируется все условие в двух словах. Например, usernameIsValid, userIsAllowedToLogin или т.п.

10
ответ дан 24 November 2019 в 15:05
поделиться

Если необходимо комментировать утверждения if else, я предпочитаю описывать случай, который заставил код достичь этой точки. Особенно в коде с высокой цикломатической сложностью

if (condition) { 
// User is taking a course at college x:
    i = 1;
} else { 
// User is not taking any course at college x:
    i = 2;
}
31
ответ дан 24 November 2019 в 15:05
поделиться

Важны переменные, а не сами условия.

if condition: # <condition dependent variable> was <predicated>
  dosomething()
elif othercondition: # <othercondition dependent variable> <predicated>
  dootherthing()
else: # <all variables> <not predicated>
  doelsething()
1
ответ дан 24 November 2019 в 15:05
поделиться

Однозначного ответа нет - разные люди будут иметь разные мнения о том, что наиболее читаемо. Однако я думаю, что есть согласие, что комментарии должны фактически добавлять ценность (в противном случае не требующую пояснений) коду, и что стиль комментирования должен быть последовательным.

Я обрабатываю комментарии для условий, не требующих немедленных пояснений, следующим образом:

  // If the condition for a local tree imbalance is met,
  // juggle the immediate nodes to re-establish the balance.
  // Otherwise, execute a global balancing pass.
  if ( somewhat muddled condition )
  {
     ...code...
  }
  else // Tree is in local balance
  {
     ... more code...

  } // if/else (tree locally imbalanced) 

Комментарий к заключительному '}' существует в первую очередь для того, чтобы придать окончанию условия больший визуальный вес, чтобы облегчить чтение исходного текста. .

1
ответ дан 24 November 2019 в 15:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: