C#๐์์ ๋ ํจ์จ์ ์ผ๋ก ํ๋ก๊ทธ๋๋ฐํ๊ธฐ ์ํ 5๊ฐ์ง (์ธ๊ณผ์ ) ํ
9977 ๋จ์ด csharpdotnetproductivitytutorial
์ฒ์์๋ ๋งค์ฐ ๊ธฐ๋ณธ์ ์ด๊ณ ํฐ๋ฌด๋์๋ ํ๊ณผ ์กฐ์ธ์ฒ๋ผ ๋ณด์ผ ์ ์์ง๋ง ๋ง์ C# ๊ฐ๋ฐ์๊ฐ ์ด๋ฅผ ์คํ์ ์ฎ๊ธฐ์ง ์๊ณ ์ฝ๋๋ฅผ ์ฝ๊ณ ์ดํดํ๋ ๋ฐ ์์๋ณด๋ค ํจ์ฌ ๋ ๋ง์ ์๊ฐ์ ๋ญ๋นํ๋ค๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค. ์ค์ธ์, ๊ณง ์ฌ ๊ฒ์ ๋๋ค).
ํ์ง๋ง ๋ฌด์๋ณด๋ค๋ ์ด๋ฌํ ํ์ ์๊ฐ์ ์ ์ฝํ๊ณ ๊ทธ ๊ณผ์ ์์ ์ค๋ฅ๋ฅผ ์ต์ํํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ํ๋ก๊ทธ๋๋จธ๋ก์ ์ผ์ ์ฑ๊ณต์ ์ผ๋ก ์ํํ๋ ค๋ฉด ์๊ฐ์ ์ต๋ํ ํ์ฉํด์ผ ํฉ๋๋ค. ์ด ํ์ด ๋ฐ๋ก ๊ทธ๋ ๊ฒ ํ๋ ๋ฐ ๋์์ด ๋ ๊ฒ์ ๋๋ค!
๋ ์ฝ๋ ์ ํ ํ์ฉ
ํ๋ก๊ทธ๋๋ฐํ ๋ C# ์ฝ๋๋ฅผ ๋จ์ํํ๋ ๋งค์ฐ ๊ฐ๋จํ ๋ฐฉ๋ฒ์
record
์ ํ์ ์ฌ์ฉํ๋ ๊ฒ์
๋๋ค. ์ด๋ค์ ํนํ ๋ถ๋ณ ํํ์์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๋งค์ฐ ์ฝ๊ธฐ ์ฌ์ด ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค.๋์ ๋ฐฉ๋ฒ:
//A lot of code lines
public class ApplicationInfo
{
public string Name { get; init; }
public string Path { get; init; }
public ApplicationInfo(string name, string path)
{
Name = name;
Path = path;
}
}
์ข์ ๋ฐฉ๋ฒ:
//Only one line with record types
public record ApplicationInfo(string name, string path);
์ด๋ ๊ฒ ํ๋ฉด ๋ง์ ์ฝ๋ ์ค์ ์ ์ฅํ๊ณ ๋ ์ฝ๊ฒ ์ฝ์ ์ ์์ต๋๋ค. ๋ช ๋ฌ ์์ ์ฐ์ฐํ ๋น์ ์ด๋ ๋ค๋ฅธ ๊ฐ๋ฐ์๊ฐ ๊ทธ ์ฝ๋๋ฅผ ์ฝ์ผ๋ฉด ํจ์ฌ ๋ ์ฝ๊ฒ ์ดํดํ ์ ์์ ๊ฒ์ ๋๋ค.
๐์์ธํ ๋ด์ฉ์ Microsoft ๋ฌธ์๋ฅผ ํ์ธํ์ธ์. Create record types
์๋ชป๋ ๊ฐ์ฒด ์ด๊ธฐํ ๋ฐฉ์ง
์ด๊ฒ์ ๋ง์ ๊ฐ๋ฐ์๋ค์ด ๊ฐ๊ณผํ๋ ๋ ๋ค๋ฅธ ๊ดํ์ ๋๋ค. ์ค๊ดํธ ์ฌ์ด์ ์์ฑ์ด ์ ์๋์ด ์์ง ์์ผ๋ฉด ํด๋น ์ฝ๋๋ฅผ ์ฝ๊ธฐ ์ด๋ ค์์ง๊ณ ์ด๋ก ์ธํด ํด๋น ์ฝ๋๋ฅผ ์ดํดํ๋ ๋ฐ ๋ ์ค๋ ์๊ฐ์ด ๊ฑธ๋ฆด ์ ์์ต๋๋ค.
๋์ ๋ฐฉ๋ฒ:
//Poor code format for reading
Dotnetsafer securityManger = new Dotnetsafer();
securityManger.FindVulnerabilities = true;
securityManger.AppName = "Shield.exe";
์ข์ ๋ฐฉ๋ฒ:
//Better code format for reading
var securityManger = new Dotnetsafer {
FindVulnerabilities = true,
AppName = "Shield.exe"
};
์ด ๊ฒฝ์ฐ ๋ณด์๋ค์ํผ ํด๊ฒฐ์ฑ ์ ๊ฐ๋จํฉ๋๋ค. ๊ฐ์ฒด ๋ฐ ์ปฌ๋ ์ ์ด๋์ ๋ผ์ด์ ๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๋๋ฅผ ๋ ์ ์ฝ์ ์ ์์ต๋๋ค.
๐์์ธํ ๋ด์ฉ์ Microsoft ๋ฌธ์๋ฅผ ํ์ธํ์ธ์. Object and Collection Initializers
Var๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ์๋ฅผ ์ ์ํ๋ ๋ฐ ์ต์ํด์ง๊ธฐ
๊ฐ๋ฐ์๋ ์ข ์ข ๋ณ์๋ฅผ ์ ์ํ ๋ ๋๋ฌด ๊ตฌ์ฒด์ ์ธ ์ ํ์ ์ฌ์ฉํ์ฌ ์์ ์ ๋ณต์กํ๊ฒ ๋ง๋ญ๋๋ค. ์ด๊ฒ์ ์ฝ๋๋ฅผ ์ดํดํ๋ ๊ฒ๊ณผ ๊ด๋ จํ์ฌ ํผ๋์ ์ด๋ํ ์ ์์ต๋๋ค.
๋์ ๋ฐฉ๋ฒ:
//Difficult to read
List<Repository.Shield.SecureDependencies> listOfSecureRefs = _repo.Shield.LastDependenciesAnalyzed();
์ข์ ๋ฐฉ๋ฒ:
//Easier to read
var listOfSecureRefs = _repo.Shield.LastDependenciesAnalyzed();
์ด ๋์ ์ต๊ด์ ํด๊ฒฐํ๋ ค๋ฉด
var
ํค์๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๋งํผ ์ฝ์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ต์ข
์ฝ๋๊ฐ ๋ ๊นจ๋ํด์ง๊ณ ์ฝ๊ธฐ๊ฐ ํจ์ฌ ๋นจ๋ผ์ง๋๋ค.๐์์ธํ ๋ด์ฉ์ Microsoft ๋ฌธ์๋ฅผ ํ์ธํ์ธ์. Implicitly typed local variables
string.Format() ๋์ ๋ฌธ์์ด ๋ณด๊ฐ "$"
String.Format()
๋ ํ ๋ฌธ์์ด์ ๊ฐ์ ๋ค๋ฅธ ๋ฌธ์์ด์ ์ฝ์
ํ๋ ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์ด์ง๋ง ๊นจ๋ํ ์ฝ๋์ ์ด์ ์ ๋ง์ถ๋ฉด ๊ฐ์ฅ ๊นจ๋ํ๊ฑฐ๋ ์ต๊ณ ๊ฐ ์๋๋๋ค.๋์ ๋ฐฉ๋ฒ:
//using string.Format()
var date = DateTime.Now;
string greetings = string.Format("Today is {0}, the time is {1:HH:mm} now.", date.DayOfWeek, date);
์ข์ ๋ฐฉ๋ฒ:
//using string interpolation
var date = DateTime.Now;
string greetings = $"Today is {date.DayOfWeek}, the time is {date:HH:mm} now.");
๋ฌธ์์ด ๋ณด๊ฐ์ ์ฌ์ฉํ๋ฉด ๊ฒฐ๊ณผ ์ฝ๋๊ฐ ํจ์ฌ ๋ ์ฝ๊ธฐ ์ฝ์ต๋๋ค. ์ด๊ฒ์ ๋งค์ฐ ๊ฐ๋จํ ์ฝ๋์ ์์ ๋๋ค. ํจ์ฌ ๋ ๋ณต์กํ ์ค์ ์ฌ๋ก์์๋ ์ฝ๋๋ฅผ ์ ๋ฆฌํ๊ณ ์ ๋ฆฌํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๐์์ธํ ๋ด์ฉ์ Microsoft ๋ฌธ์๋ฅผ ํ์ธํ์ธ์. $โ-โstring interpolation
if-else ๋์ Null ๋ณํฉ(??)
์ธ๋ป ๋ณด๊ธฐ์ ์ค์ฒฉ
if-else
์ ์ฌ์ฉํ๋ ๊ฒ์ด null ๊ฒ์ฌ๋ฅผ ์ํ ๊ฐ์ฅ ๊ฐ๋จํ ์ต์
์ธ ๊ฒ ๊ฐ์ต๋๋ค. ๊ฐ๋จํ ์ต์
์ด์ง๋ง ์ต์ ์ ์ต์
์ ์๋๋๋ค.๋์ ๋ฐฉ๋ฒ:
if (application != null)
{
if (application.protected != null)
{
return application.protected.shieldLastRun;
}
else
{
return string.empty;
}
}
else
{
return string.empty;
}
์ข์ ๋ฐฉ๋ฒ:
return application?.protected?.shieldLastRun ?? string.empty;
null ๋ณํฉ ์ฐ์ฐ์
??
๋ฅผ ์ฌ์ฉํ๋ฉด ์ฝ๋ ์ค ์๋ฅผ ํฌ๊ฒ ์ค์ด๊ณ ์ฝ๊ธฐ ์ฝ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.๐์์ธํ ๋ด์ฉ์ Microsoft ๋ฌธ์๋ฅผ ํ์ธํ์ธ์. ?? andย ??= operators
Reference
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(C#๐์์ ๋ ํจ์จ์ ์ผ๋ก ํ๋ก๊ทธ๋๋ฐํ๊ธฐ ์ํ 5๊ฐ์ง (์ธ๊ณผ์ ) ํ), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://dev.to/bytehide/5-surgical-tips-to-program-more-efficiently-in-c-3bh6ํ ์คํธ๋ฅผ ์์ ๋กญ๊ฒ ๊ณต์ ํ๊ฑฐ๋ ๋ณต์ฌํ ์ ์์ต๋๋ค.ํ์ง๋ง ์ด ๋ฌธ์์ URL์ ์ฐธ์กฐ URL๋ก ๋จ๊ฒจ ๋์ญ์์ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค