3

コード (if ステートメントの長い条件など) を人間が読みやすくするためだけに変数を宣言するのは良い習慣なのか、それともリソースを無駄にし、詳細なコメントを使用する方が良いのか疑問に思っていました。

簡単な例を次に示します。

//declare variables for if statement only
int price = getProductionCost() + getTax() + getPurchaseMethod() + etc + etc;
int shipping = getLocation() + getShippingType() + etc;

if (price + shipping > 1000)
{
    // Is this better practice using variables?
}

// if price + shipping > 1000
if (getProductionCost() + getTax() + getPurchaseMethod() + etc + etc + getLocation() + getShippingType() + etc > 1000)
{
    // or is this option better practice with commenting and no variables?
}

また、変数が同じメソッドで変更されるリスクがあることも認識しています。これは欠点です。これに関するベスト プラクティスを探してみましたが、何も見つからず、何を検索すればよいかわかりませんでした。ありがとうございました。

4

5 に答える 5

4

私はこの方法が良いと思います:

if (price + shipping > 1000)
{
    // Is this better practice using variables?
}

ただし、メソッド名は大文字の最初の記号で記述する必要があります。

// Like this
GetProductionCost()

// Not like this
getProductionCost()
于 2015-09-14T11:32:53.083 に答える
3

一般に、コメントを追加する場合は、コードを単純に自明にすることもできるため、コメントは必要ありません。そうは言っても、コードの理解を深めるために変数のセルフスピークを作成することを常に検討する必要があります。

しかし、長い複雑な表現を維持することは、非常にひどい場合があります。したがって、保守性のために、コードをより小さく読みやすい部分に分割することも検討する必要があります。

于 2015-09-14T11:09:00.003 に答える
3

コメントを使用する危険性は、コメントが時代遅れになる可能性があることです。しきい値を 1100 に変更したものの、コメントを変更するのを忘れた状況を考えてみましょう。

// if price + shipping > 1000
if (getProductionCost() + getTax() + getPurchaseMethod() + etc + etc + getLocation() + getShippingType() + etc > 1100)
{
    //
}

コードを見た人は、間違いがコメントにあるのかコードにあるのかわかりません。

このため、コメント付きの読みにくいコードよりも、読みやすいコードを優先することをお勧めします。

ローカル変数を使用して 1000 の定数を使用するのではなく、計算を独自のメソッドに分割することで、コードをさらに拡張できます。

public void SomeMethod()
{
    if (CalculatePrice() + CalculateShipping() > CostThreshold)
    {
        // do something
    }
}

...

private static int CalculatePrice() => getProductionCost() + getTax() + getPurchaseMethod() + etc + etc;
private static int CalculateShipping() => getLocation() + getShippingType() + etc;
于 2015-09-14T11:23:12.300 に答える
1

変数を使用して、if ステートメントをよりきれいに見せます。

コードは書かれるよりも読まれることが多いですが、コメントを書くことを妨げるものは何もありません。無理しないでください!

于 2015-09-14T11:10:31.697 に答える
0

if 条件は常にメソッド ブロックに含まれ、ローカル スコープ変数を作成しても問題ありません。あなたが言及したリスクについて:「ベストプラクティス」に従って非常に長いメソッドを作成せず、短いメソッドでは変更する必要のない変数を間違えないため、リスクではないと思います。さらに、変数にコメントを書き込めば、コードを変更しようとしている他の開発者が何を、なぜ行っているかを知ることができます。PS: コメントを追加することは常に良いことです。コメントする場所だと思う場所に置いてください。

于 2015-09-14T11:20:13.437 に答える