これが無効な慣行になるかどうかはわかりません。または良い習慣。私が途方に暮れている理由は、ローカル変数の代わりにプロパティを利用するべきですか?
私の理由と目標; ローカル ディスク ドライブの非常に基本的な検出でした。
私が指摘したいいくつかのこと:
boolean value
このクラスを呼び出してドライブ パスを返すことができるようにしたいので、a を選択しませんでした。その名前はメソッドから取得されます。Path Combined
一部の派生クラスに含めることができます。
私の例:
public class Drive
{
// Variable:
public string nameOfDrive;
public Drive()
{
// Call Method.
DriveName();
}
public string DriveName()
{
DriveInfo [] drives = DriveInfo.GetDrives();
foreach (DriveInfo d in drives)
{
// Verify Valid 'C:' is Present.
if (d.Name == @"C:")
{
// Set Name:
nameOfDrive = d.Name;
// Return Result.
return d.Name;
}
}
// Exception:
throw new Exception("Unable to locate the C: Drive... Please map the correct drive.");
}
}
/*
* The above method and class contains a verification
* for the 'C:' Drive. Once the items are validated;
* it will create a return variable for the 'C:'.
* Otherwise it will throw an Exception.
*/
今、これは私がより良い練習であるかわからないところです。の代わりにプロパティを使用する必要がありpublic string nameOfDrive
ます。それとも、私は本当に離れていますか?これは、他のクラスで利用できる値を返すための最良の方法ではありませんか? それとも、メンバー変数を直接参照するのは悪い習慣ですか?
2 番目の例:
public class Drive
{
private string nameOfDrive;
public string NameOfDrive
{
get { return nameOfDrive; }
}
public Drive()
{
// Call Method.
DriveName();
}
public string DriveName()
{
// Obtain Drive Information:
DriveInfo [] drives = DriveInfo.GetDrives();
foreach (DriveInfo d in drives)
{
// Verify Valid 'C:' is Present.
if (d.Name == @"C:")
{
// Set Name:
nameOfDrive = d.Name;
// Return Result.
return d.Name;
}
}
// Exception:
throw new Exception("Unable to locate the C: Drive... Please map the correct drive.");
}
}
/*
* The above method and class contains a verification
* for the 'C:' Drive. Once the items are validated;
* it will create a return variable for the 'C:'.
* Otherwise it will throw an Exception.
*/
そうすれば、読み取り専用としてマークされ、メソッドから適切な値を読み取ることが保証されますか?
アップデート:
回答ありがとうございます。しかし、なぜそれがより良い練習なのでしょうか?
- セキュリティに有利ですか?
- すっきりしただけ?
- より柔軟
それがより良い解決策である理由; それが私が理解しようとしているものです。