-2

どれが最高ですか?

private long sumVals()
{
    return (dbReturn("NUns") / dbReturn("TSpd")) * 60;
}


private long dbReturn(string dbField)
{
    // ... access db, get value
    return retVal;
}

また

private long sumVals()
{
    long numUnits = dbReturn("NUns");
    long targetSpeed = dbReturn("TSpd");

    return (numUnits / targetSpeed) * 60;
}


private long dbReturn(string dbField)
{
    // ... access db, get value
    return retVal;
}

全体のコードが少なくなるようにすべてを 1 行にまとめてみるか、それとも 2 番目のコードのように広げたほうがよいでしょうか?

どちらかが速いですか?コンパイル中など、利点はありますか?

4

3 に答える 3

3

あなたのケースは単純なので、最初のケースは問題ありません。しかし、一般的に、私は2番目のものを選びます。あなた (および他の人) がコードを読めることは重要ですが、メモリを節約する必要はありません (コードの行数と変数の数が減ります)。

2 番目の方法を選択すると、コードの理解とデバッグが容易になります。また、変数名がコードを十分に説明している場合は、多くのコメントを付ける必要はありません。これにより、一般的にコードが読みやすくなります。(コメントをやめろと言っているのではなく、些細なコメントを必要としないコードを書け!)

その他の回答については、この質問を参照してください。

于 2013-07-14T17:52:30.973 に答える
0

私の経験則は、コードの意図が何であるかを完全に説明するのに十分なコンテンツを含めることです。私の意見では、それらの変数をすぐに使用するためだけに変数に値を割り当てると、実際には読みにくくなります。プログラムの流れを十分に伝えますが、実際の意図は伝えません。

dbReturn関数の名前を からに変更した場合、GetDatabaseValueこの関数を記述するより表現力豊かな方法を思いつくことはできないと思います。

return (GetDatabaseValue("NUns") / GetDatabaseValue("TSpd")) * 60);

"NUns"これは意図を完全に伝えます(私が何を意味するのかわからないという事実にもかかわらず"TSpd")。シンボルが少ないということは、コードを読むときに理解することが少なくなることを意味します。

完全な開示: 追加のシンボルを含めると、デバッグ可能性が向上します。最初に関数を作成するときは、どこで問題が発生したかを追跡できるように、このように記述します。しかし、実装に満足したら、自分と同僚の正気を保つためにできる限り圧縮します。

私が知る限り、どちらのアプローチによっても実行時のパフォーマンスが向上することはありません。コンパイラは素晴らしいです - 彼らはあなたの知らないうちにこのインライン化を行います。唯一の違いは、コードの読みやすさです。

于 2013-07-14T18:22:59.410 に答える
-2

私にとって、長い方が常に良いです。最新のコンパイラは、ほとんどのコードを非常に高速に圧縮します。ただし、多くのコメントと読みやすいコードを通じてコードを維持できることは非常に重要です....特に、他の人のコードを維持しなければならない人の1人である場合は!

したがって、私の投票はより長いバージョンです (あなたが何をしているのかを説明するコメントも付いています!)

于 2013-07-14T17:52:22.247 に答える