C# 코드를 복잡하게 만들 수 있는 5가지 나쁜 습관 - 피하는 방법
if 문으로 null 확인 중지
if
문은 엄청난 수의 유틸리티와 용도를 가질 수 있습니다. 그 중 하나는 확인하는 데 사용하는 것입니다null
. 이것이 올바른 방법이지만 조금 더 잘 설명할 수 있습니다.나쁜 방법:
if (application != null)
{
if (application.protected != null)
{
return application.protected.shieldLastRun;
}
}
좋은 방법:
return application?.protected?.shieldLastRun;
null 검사에 if 문을 사용할 수 없다고 말하는 것은 아니지만 null 조건부(해당 기능이 구현된 목적)를 사용하면 코드를 더 깨끗하고 쉽게 읽을 수 있습니다.
📚자세한 내용은 Microsoft 문서를 확인하세요. Null coalescing operator
클래스 대신 튜플 사용
둘 이상의 결과를 반환하려는 경우 가장 먼저 해당 목적을 위한 클래스를 만드는 것이 가장 먼저 떠오를 것입니다. 이것은 올바른 방법이지만 최선의 방법은 아닙니다.
나쁜 방법:
public ApplicationInfo GetInfo()
{
var application = new ApplicationInfo
{
Path = "C:/apps/",
Name = "Shield.exe"
};
return application;
}
좋은 방법:
public (string Path, string Name) GetApplicationInfo()
{
return ("C:/apps/", "Shield.exe");
}
이를 위해
tuples
, 그의 기사 Mahesh Chand에서 Tuples in C#에 따르면 :"Often, we want to return more than one value from a class method. Prior to the introduction of tuples in .NET, there were three common ways to do so.
- Out parameters
- Class or struct types
- Anonymous types returned through a dynamic return type Tuples solve this problem"
Mahesh Chand가 말했듯이 튜플은 이 문제를 해결합니다. 따라서 그것들을 사용하는 것이 새 클래스를 만드는 것보다 훨씬 더 나은 옵션입니다.
📚자세한 내용은 Microsoft 문서를 확인하세요. Tuple types in C#
비공개 멤버를 사용하여 수정 방지
구성원을 수정할 수 있는 기능이 있는 것은 좋지 않습니다. 수정할 수 있는지 없는지 주의해야 합니다.
나쁜 방법:
class Laptop
{
public string Os{ get; set; } // can be modified
public Laptop(string os)
{
Os= os;
}
}
var laptop = new Laptop("macOs");
Console.WriteLine(Laptop.Os); // Laptop os: macOs
좋은 방법:
class Laptop
{
public string Os{ get; } // cannot be modified
public Laptop(string os)
{
OS = os;
}
}
var laptop = new Laptop("macOs");
Console.WriteLine(Laptop.Os); // Laptop os: macOs
멤버를 수정하지 않을 경우 향후 우발적(또는 의도적) 수정을 방지하기 위해
set;
를 사용하지 않는 것이 좋습니다.📚자세한 내용은 Microsoft 문서를 확인하세요. Get & Set accessors
if-else 대신 조건 연산자 사용
종종 습관적으로 우리는 클래식
if-else
을 사용하는 데 익숙해지고 그게 다입니다. 나는 이것을 나쁜 습관으로 생각하고 싶지 않지만 더 좋은 방법이 있습니다.나쁜 방법:
if (hasApplication)
{
shouldProtect = true;
}
else
{
shouldProtect = false;
}
좋은 방법:
bool shouldProtect = hasApplication ? true: false;
분명히 알 수 있듯이
if-else
와 유사한 대안이지만 삼항 조건 연산자?:
를 사용하면 읽고 이해하기가 훨씬 쉽고 더 깔끔한 코드를 얻을 수 있습니다.📚자세한 내용은 Microsoft 문서를 확인하세요. Conditional operator
식별자 약어로 이니셜을 사용하지 마십시오.
깨끗한 코드에 대해 생각할 때 가장 먼저 발생하는 것 중 하나는 이니셜을 사용하여 식별자의 코드를 줄이는 것입니다. 이것은 좋은 습관이지만 매우 조심해야 합니다.
나쁜 방법:
//different identifiers but same abbreviation
private readonly SecurityManager _sm;
private readonly SoftwareManager _sm;
좋은 방법:
//No confusion
private readonly SecurityManager _securityManager;
private readonly SoftwareManager _softwareManager;
약어를 사용하려는 경우 향후 혼동을 피하기 위해 항상 두 번 생각하십시오. 여러 번 쉬운 것이 최적이 아닙니다.
📚자세한 내용은 Microsoft 문서 시리즈를 확인하세요. Naming Guidelines
Reference
이 문제에 관하여(C# 코드를 복잡하게 만들 수 있는 5가지 나쁜 습관 - 피하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/bytehide/5-bad-practices-that-can-make-your-c-code-messy-and-how-to-avoid-them-3p0f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)