2

バッテリーに関する情報を取得する別のクラスファイルに関数があります。フォームには、次のコードがあります。

If BatteryClass.getStatus_Battery_Charging = True Then

Visual Studio はこれを受け入れているようです。ただし、次のコードを使用した方がよいでしょうか。これも機能します。

dim val as boolean = BatteryClass.getStatus_Battery_Charging
If val = True Then

これら2つの方法に違いはありますか?

4

2 に答える 2

4

あなたが一般的に求めているのは、どのアプローチが慣用的かということです。

技術的なルールは、メソッドの結果をローカル スコープの変数に保存できる場合は、メソッドを複数回呼び出すことではありません (特に volatile 値の変更を確認する場合を除きます)。それはあなたが求めていることではありませんが、通常、複数の呼び出しは変数にバインドする必要があることを理解することが重要です。

そうは言っても、コードの可読性が向上する限り、メンテナンスの観点からコード行を少なくする方が良いと言われています。メソッドの戻り値を保持するためにローカル スコープの変数を宣言する必要がある場合は、変数に意味のある名前を付けてください。

この[慣用的なVB.NET]ワンライナーを好む:

If BatteryClass.getStatus_Battery_Charging Then

これについて:

Dim isBatteryCharging As Boolean = BatteryClass.getStatus_Battery_Charging
If isBatteryCharging Then

考慮すべきもう 1 つの点は、呼び出されたときにプログラムの状態に影響を与える副作用を引き起こすメソッドです。ほとんどの状況では、副作用を引き起こすメソッドを複数回呼び出すことは望ましくありません。可能であれば、副作用を引き起こさないように、そのような副作用に影響を与えるメソッドを書き直してください。副作用が発生する回数を制限するには、メソッドの複数の呼び出しを実行する代わりに、同じローカル変数スコープ規則を使用します。

于 2013-07-13T04:56:07.563 に答える
4

本当の違いはありません。

もちろん、値が再び必要な場合は、2番目の方が適しています。また、変数に値を格納すると、デバッグがわずかに簡単になります。

私は根っからの古い学校の C プログラマーなので、個人的には前者を使用する傾向があります。

于 2013-07-13T04:25:51.400 に答える