Предпочтение программирования - использовать else ifs с несколькими операторами возврата? - PullRequest
9 голосов
/ 27 августа 2010

Код:

public String getTemperatureMessage(double temp)
{
    if(temp < 32)
        return "Freezing";
    else if(temp < 60)
        return "Brr";
    else if(temp < 80)
        return "Comfortable";
    else
        return "Too hot";
}

Что касается приведенного выше фрагмента кода, остальные if технически излишни и совсем не меняют поведение.Тем не менее, я, как правило, хотел бы разместить их там, чтобы подчеркнуть, что условия являются исключительными.о чем ты думаешь?Ненужное или более понятное?

Ответы [ 16 ]

0 голосов
/ 27 августа 2010

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

    Dim Temp As Integer
    Dim Message As String

    Select Case Temp
        Case Is < 32
            Message = "Freezing"
        Case Is < 60
            Message = "Just Right"
        Case Is < 80
            Message = "Too Hot"
        Case Else
            Message = "What was I doing?"
    End Select

Я считаю, что это намного легче читать, чем заявления if..else.

0 голосов
/ 27 августа 2010

это хорошо.без "else" эта строка

if(temp < 80)
    return "Comfortable";

была бы неубедительной.с помощью «else» ясно, что существуют другие предварительные условия.

0 голосов
/ 27 августа 2010

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

Таким образом, аргумент является единственным или составным оператором.

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

PS. Я бы всегда посылал температуру в градусах Цельсия, упс, просто нарушил вашу функцию!

0 голосов
/ 27 августа 2010

Кто использует IF / ELSE IF ... когда вы можете использовать оператор SWITCH?

Я предпочитаю один оператор RETURN - несколько операторов возврата могут затруднить отладку ...

0 голосов
/ 27 августа 2010

Нет смысла.Вы добавляете ненужные семантические и другие накладные расходы для абсолютно нулевой выгоды.Когда вы вернетесь, вы вернетесь, и контроль окончен.Притворяться, что-то еще, излишне и просто выглядит так, будто вы не знаете, что делает оператор return.

0 голосов
/ 27 августа 2010

Я согласен, что elses делает это более ясным. Последний вариант особенно помогает провести визуальное различие между случаем, когда каждая ветвь имеет возврат, и случаями, когда только некоторые ветки имеют возврат (что может быть запахом).

...