유지 관리 가능성과 메모리 영향 관점에서 다음 코드를 구현하는 더 좋은 방법이 있는지 궁금합니다. 다음 코드를 보면 속성을 사용하는 것이 더 좋을까요? 나는 많은 반복 코드를보고 이것이 최선의 방법이 될지 궁금해하고있다. 그런 짓을하는 것이 더 좋을 것이다 방법을 반복하기보다는C# 반복되는 코드 줄 대 메모리 사용량 관점에서 속성 사용하기
public class Win32OperatingSystem
{
internal ulong BytesToMegaBytes(ulong bytes)
{
return bytes/(ulong)1024;
}
public ulong FreePhysicalMemory()
{
ManagementObjectSearcher moSearcher = new ManagementObjectSearcher
("SELECT FreePhysicalMemory FROM Win32_OperatingSystem");
using (var enu = moSearcher.Get().GetEnumerator())
{
if (!enu.MoveNext()) return 0;
return BytesToMegaBytes((ulong)enu.Current["FreePhysicalMemory"]);
}
}
public ulong TotalVirtualMemorySize()
{
ManagementObjectSearcher moSearcher = new ManagementObjectSearcher
("SELECT TotalVirtualMemorySize FROM Win32_OperatingSystem");
using (var enu = moSearcher.Get().GetEnumerator())
{
if (!enu.MoveNext()) return 0;
return BytesToMegaBytes((ulong)enu.Current["TotalVirtualMemorySize"]);
}
}
public ulong FreeVirtualMemory()
{
ManagementObjectSearcher moSearcher = new ManagementObjectSearcher
("SELECT FreeVirtualMemory FROM Win32_OperatingSystem");
using (var enu = moSearcher.Get().GetEnumerator())
{
if (!enu.MoveNext()) return 0;
return BytesToMegaBytes((ulong)enu.Current["FreeVirtualMemory"]);
}
}
}
...
MyMethod(string propertyName)
{
ManagementObjectSearcher moSearcher = new ManagementObjectSearcher
("SELECT " + propertyName + " FROM Win32_OperatingSystem");
using (var enu = moSearcher.Get().GetEnumerator())
{
if (!enu.MoveNext()) return 0;
return BytesToMegaBytes((ulong)enu.Current[propertyName]);
}
}
반복 된 코드 블록을 범용 함수로 축소하면 확실히 좋은 접근 방법 인 것 같습니다. 왜 그렇게되지 않을 이유가 있습니까? – David
들어오는 문자열을 신뢰하지 않으면 열거 형을 사용할 수 있지만 질문에 대해서는 괜찮습니다. – Jonesopolis
반복되는 코드가 많아서 일반 용도로 축소 한 다음 접근 자 메서드를 사용하면 도움이 될 것입니다. 정비 persepctive. 코드 크기는 아마도 작지만 작을 것입니다 ... – LB2