2017-03-05 20 views
-1

私はアプリでかなりの数のAzureサービスを使用しています。何度かデータを読み込んだ後、操作してデータベースを更新する必要があります。以下の簡単な例を参照してください。更新された値に同じ変数を使用する

// Read students list 
var students = await _myRepository.GetStudents(); 

// Manipulate the data 
students.Add(student); 

// Then update the database which returns an updated list of students 
// See the two options below 

私は時々、同じ変数を使用して更新された値を取得しても問題ありません。問題は、常に更新された値を新しい変数に割り当てる必要があるかどうかです。私は新しい変数に更新された値を割り当てると

// Option 1: Use the same variable for updated values 
students = await _myRepository.UpdateStudents(students); 

// Option 2: Use a new one 
var updatedStudents = await _myRepository.UpdateStudents(students); 

、多くの時間が、私は一種のコードを複雑にするので、それらの多くで終わります。

+0

これまでより理解しやすいコードです。一般に。さまざまな目的のためにvarsを再利用するのは悪い習慣ですが、コンテキストに依存します。 –

+0

私は変数を再利用することについて同じ感覚を持っています。そうするたびに正しいと感じませんが、再利用しないと、コードが実際よりも複雑に見えるような変数が多くなります。 – Sam

+1

それはしばしば、コードをクラスに分割する必要があるという症状です:単一責任.... –

答えて

0

私の個人的な経験には、私が一般的に従うルールがあります:ロギングや追加操作などのために変数が必要な場合は、新しい変数を使用しますが、変数に無効な状態変数が更新される前に、次に変数を再利用します。

これは、通常、無効な状態変数の束で終わらないため、これは最高のコードを生成することがわかります。これらの無効な変数は、現在の状態が有効なものを判断するために常に参照する必要がある場合があるため、行を混乱させる可能性があります。

しかし、複雑なプロセスを複数のステップ変数に持たせると効果的ですが、最終的にはタスクの複雑さとステップ変数の必要性によって異なります。

+0

最大、私はあなたのルールが好きです。それを「無効な状態を保持する変数」とすることは、それを見るための良い方法であり、意思決定プロセスを明確にします。 – Sam

関連する問題