Другой вариант:
if(condition) { //check for condition
i = 1;
} else { //condition isn't met
i = 2;
}
Вы должны комментировать только в том случае, если код не говорит сам за себя. Так что сделайте это само собой разумеющимся. Как это, возможно,
bool fooIsNotReallyGood = ....;
if(fooIsNotReallyGood) {
...
} else {
...
}
условия самокомментария, то в дополнительных комментариях нет необходимости. Допустим, условие состоит в том, что достигается максимальная стоимость кредита. Это дает нам:
if (maximumLoanToValueIsReached)
{
i=1;
}
else
{
i=2;
}
Нет необходимости указывать, когда i = 2, что максимальная сумма кредита не была достигнута, поскольку это не требует пояснений. Кроме того, я бы также переименовал i
во что-нибудь более значимое.
// условие не выполняется
кажется бесполезным комментарием. Но в случае, когда требуется такой комментарий, я делаю это так (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. Кажется, мнений столько, сколько людей :)
Вы можете извлечь 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
приходится более одной строки.
Я бы вообще не стал комментировать эти конкретные случаи - комментарии не добавляют никакой ценности вашему и без того ясному коду. Если у вас действительно сложное условие, которое трудно прочитать, я бы подумал о том, чтобы преобразовать его в функцию (вероятно, inline
) с очень понятным собственным именем.
Вот как я делаю свои комментарии к операторам if then, хотя обычно считаю, что это не так. т необходимо. Мне нравится помещать его в строку с if / else и помещать табуляцию в одно и то же место
if ( condition ) //if above the bar
{
i = 0;
k = 1;
}
else //else if below
{
i = 1;
k = 2;
}
Если код еще не самодокументирован, то я бы структурировал его следующим образом:
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
или т.п.
Если необходимо комментировать утверждения 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;
}
Важны переменные, а не сами условия.
if condition: # <condition dependent variable> was <predicated>
dosomething()
elif othercondition: # <othercondition dependent variable> <predicated>
dootherthing()
else: # <all variables> <not predicated>
doelsething()
Однозначного ответа нет - разные люди будут иметь разные мнения о том, что наиболее читаемо. Однако я думаю, что есть согласие, что комментарии должны фактически добавлять ценность (в противном случае не требующую пояснений) коду, и что стиль комментирования должен быть последовательным.
Я обрабатываю комментарии для условий, не требующих немедленных пояснений, следующим образом:
// 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)
Комментарий к заключительному '}' существует в первую очередь для того, чтобы придать окончанию условия больший визуальный вес, чтобы облегчить чтение исходного текста. .