0

クラスオブジェクトへのポインターがあるとしますJoeBloggs。このような計算を行う方が良いですか

int value = Factorize( (JoeBloggs->GetNumber()*CalculateHeight(57,88)) )*JoeBloggs->GetSpeed();

また

int currentSpeed = JoeBloggs->GetSpeed();
int currentNumber = JoeBloggs->GetNumber();

int value = Factorise( (currentNumber*CalculateHeight(57,88)) )*currentSpeed;

一番上のコードの方がずっと短いので使っていますが、二番目のコードの方がずっときれいなコードになると思うことがよくあります。私は一貫した 1 つのコーディング スタイルに固執しようとしています。

4

3 に答える 3

0

一貫している必要はありません。

2番目のルールに固執することは、コードを非常に冗長にするため、確かに良い考えではありません。

ただし、式が複雑になることがあるため、最初のルールを適用することもできません。そのため、式を破る必要があります。これは、メンバー関数などで取得されたオブジェクトのメンバーにアクセスする場合に特に当てはまりますが、これもまた、間違った場所で作業を行っていることを示す良い兆候である可能性があります。

ところで、物事に名前を付けることによって、コードを細かく分割するための他のルールがあります。式の最初の部分に名前を付けると、読者はあなたが何をしているのか理解できます。このルールでは、あなたが何をしているのかわからないので、あなたの例は完璧です...

int calculatedheight = Factorize( (JoeBloggs->GetNumber()*CalculateHeight(57,88));
int value = calculatedheight*JoeBloggs->GetSpeed();

...そして同じ議論がvalue..それは何ですか?それは完全に無意味な変数名です。

マーティン・ファウラーの記事とリファクタリングに関する本を強くお勧めします。これを正しい方法で行う方法を示す例がたくさんあります。私が言及したルールは、IntroduceExplainingVariableと呼ばれます。

于 2012-10-07T13:32:09.943 に答える
0

良いコードはショートコードではありません。良いコードは読みやすいコードです。コードは、書かれているよりも約10倍頻繁に読み取られています。それが実際の商用アプリケーションである場合、将来このコードを何度も読むことになり、そのコードが何をするのかをもう一度完全に理解する必要があります。その観点から、あなたとあなたのチームにとってどちらのバージョンが理解しやすいですか?

于 2012-10-20T23:28:08.580 に答える
0

結果を計算する関数「Factorise」にポインタを渡すことをお勧めします。
言い換えれば、カプセル化。

于 2012-10-07T13:11:32.690 に答える