1. ホーム
  2. java

空のelse-if文はなぜスタイルが悪いのか、どう書き直せばいいのか?

2023-09-27 19:33:50

質問

私のコードを自動的に採点するプログラムが、コードを実行しない else-if に対して "style-points" をドッキングさせています。それはエラーを引き起こすかもしれないと言いますが、私はそれができるとは思いません。

ルールを破ることなく動作するように、どのように変更すればよいかわかりません。なぜこのようにすることが悪い形式なのでしょうか。他の書き方では、読者が理解するのが難しくなると思います。代わりにどのように書くべきでしょうか?

if (! seesWater(LEFT))
{
    turn(LEFT);
}
else if (! seesWater(AHEAD));
else if (! seesWater(RIGHT))
{
    turn(RIGHT);
}
else
{
    turn180();
}

else-ifがあるのに何もしないのは、コードが動作するための優先順位のためです。

if (! seesWater(AHEAD))

そして、残りの条件は重要ではないので、まったく実行されたくありません。

どのように解決するのですか?

誰が「スタイルが悪い」と言ったのですか?

質問すべきは、これが他の方法よりも明確であるかどうかということです。 あなたの特定のケースでは、私はそうだと思います。 このコードは 4 つのオプションの間の選択を明確に表現しており、そのうちの 1 つは「何もしない」です。

私が行う唯一の変更は、かなり重要でないセミコロンを空の中括弧のペアで置き換えることです。

if (! seesWater(LEFT)) {
    turn(LEFT);
}
else if (! seesWater(AHEAD)) {
    // nothing required
}
else if (! seesWater(RIGHT)) {
    turn(RIGHT);
}
else {
    turn180();
}

これは一般的に受け入れられるスタイルとして「空文節」を推奨しているわけではありません。単に、ケースはそのメリットに基づいて議論されるべきであり、従わなければならないルールに基づいて議論されるべきではないということです。 それはセンスを磨く問題であり、センスの判断は人間のためにあるのであって、頭の悪いオートマタのためにあるのではありません。