9H05T
1
์ต๊ทผ์ ํ์
์ ํ๋ค๊ฐ code folding์ ๋ํด์ ๋ค์ํ๋ฒ ์๊ฐํ๊ฒ ๋์๋๋ฐ์.
์ฌ๋ฌ๋ถ์ ์๊ฐ์ ์ด๋ ์ ์ง์?
์์ ๋ธ๋ก๊ทธ ๋ด์ฉ์ ๋ณด๋ฉด #region์ผ๋ก ๋ฌถ๊ณ folding ํ๋ ๊ฒ์ ํด์
์ด๋ค! ๋ผ๊ณ ์ฃผ์ฅํ๊ณ ์์ต๋๋ค.
ํ์
์, ์ฝ๋๋ฅผ ์์๋ณด๊ธฐ ํ๋ค๊ณ ๋๋ถ๋ถ ์์ข์ ์ฝ๋๊ฐ ์ ํ์๋ค! ๋ผ๋ ์ฃผ์ฅ์
๋๋ค.
๋ ๋๊ธ๋ค์ ์ญ ๋ณด๋ฉด ๋ฐ๋ฐ, ๋ฐ๋, ์ฐฌ์ฑ ๋ฑ ์ฌ๋ฌ๊ฐ์ง ์๊ฒฌ์ด ๊ฐ๋ฆฌ๋ค์.
์ ๋ code๊ฐ folding ๋์ด ์๋๊ฑฐ ์์ฒด๋ฅผ ๋ณ๋ก ์ข์ํ์ง ์์ต๋๋ค.
์ฆ๊ฐ์ ์ผ๋ก ์ฝ์ ์๊ฐ ์๊ฑฐ๋ ์. ๋ฌผ๋ก docs comment๋ ์ข ๊ธด comment ๋ผ๋ฉด ๊ด์ฐฎ์ต๋๋ค.
ํ์ง๋ง, ์ฝ๋ ์์ฒด๊ฐ folding ๋์ด ์๋ค๋ฉด ์ ๊ฒฝ์ด ๊ต์ฅํ ๊ฑฐ์ฌ๋ฆฌ๋ค์.
ํด๋ฆญ์ ํ๋ฒ ๋ํ๊ฑฐ๋ ๋จ์ถํค๋ฅผ ํ๋ฒ ๋๋๋ฌ์ผ ํ๋ ๋ฒ๊ฑฐ๋ฌ์๋ ์์ผ๋๊น์.
์ฌ๋ฌ๋ถ๋ค์ ์๊ฐ์ ์ด๋ ์ ๊ฐ์?
7๊ฐ์ ์ข์์
์ ๋ ์ ๋ง ๋ง ๊ทธ๋๋ก region์ ๊ตฌ๋ถํด์ผ ํ ๋๋, ์ฝ๋๊ฐ ๊ธด๋ฐ ๋ ์ด์ ๋ค์ฌ๋ค ๋ณผ ์ผ์ด ์๋ ์ฝ๋๋ฅผ ์ ์ด ๋๋ ์ฉ๋๋ก ์ฐ๊ณ ์์ต๋๋ค. ์ค์ ๋ก ์ ์ฉํด์ ๊ตณ์ด ํด์
์ผ๋ก ๋ถ๋ฅํด์ผ ํ๋์ง๋ ์ ๋ชจ๋ฅด๊ฒ ๋ค์.
6๊ฐ์ ์ข์์
9H05T
3
ใ
ใ
ํฌ์คํ
๋ด์ฉ์ ๋ณด์๋ฉด ์์๊ฒ ์ง๋ง ์๊ฒฌ์ด ๋ถ๋ถํฉ๋๋ค.
์ ๋ ํด์
๊น์ง๋ ์๋๋ผ๊ณ ์๊ฐํ๊ฑฐ๋ ์. ์ฝ๊ฐ ๊ฑฐ์ฌ๋ฆด๋ฟโฆ
folding์ ๋ํด์ ๋ณ๋ก ์๊ฐ์ด ์์๋๋ฐ ํฌ์คํ
๋ด์ฉ์ ๋ณด๋ ํ๊ตญ ๊ฐ๋ฐ์๋ถ๋ค์ ์๊ฒฌ์ด ๊ถ๊ธํด์ก์ต๋๋ค ใ
ใ
5๊ฐ์ ์ข์์
Vincent
4
์ ๋ IT๋ 100% / ๋ฌด์กฐ๊ฑด ์ด๋ผ๋ ๊ฒ์ ์๋ค๊ณ ์๊ฐํด์, ๊ทธ๋ฅ ๊ธฐ๋ฅ์ ์ง์ํด์ฃผ๋ ๋งํผ ๊ทธ๋ฅ ์ธ ๊บผ ์ฐ๊ณ ๊ทธ๋ฌ๋ฉด ๋๋ ๊ฑฐ ๊ฐ์ต๋๋ค.
์ ๋ region์ ์ ์ ํ๊ฒ ์ฐ๋ ํธ์
๋๋ค.
4๊ฐ์ ์ข์์
ํ์
์ ํด๋ณธ ์ ์ด ์์ด์ region์ ์ด์ฉํ ์ฝ๋ฉํธ๊ฐ ๋์์ด ๋๋๋ ํ๋ ๊ฒ์ ๋ํด ํ์ ํ ์๋ ์์ง๋ง, ๊ฒฐ๊ตญ ์ด ์ญ์ ๊ฐ์ธ์ ์ฃผ๊ด ๋ฐ ์ฌ์ฉํ๊ธฐ ๋๋ฆ ์๋๊น ์ถ๋ค์.
๋จ์ํ ํผ์น๋ ๊ฒ ๋ฒ๊ฑฐ๋กญ๋ค๋ ๊ฒ์ด ์ ์ง ๋ง์์ผ ํ ์ฌ์ ๊ฐ ๋ ์ ์๊ณ , ์ ์ผ๋ฉด ์ฝ๋ ๋ผ์ธ์ด ์ค์ด๋ ๋ค๋ ๊ฒ๋ ์ ์ด์ผ ํ ์ฌ์ ๊ฐ ๋ ์๋ ์์ ๊ฒ ๊ฐ์์.
์ฝ๋ ์ข
๋ฅ์ ๋ฐ๋ผ ๊ธฐ๋ฅ๋ณ, ํน์ ์ ํ๋ณ(ํ๋กํผํฐ์ธ์ง, ํ๋์ธ์ง, ๋ฉ์๋์ธ์ง ๋ฑ)๋ก ๋ช
ํํ๊ฒ ๊ตฌ๋ถ์ง์ด ์ ๊ณ ์ฝ๋ฉํธ๋ก ํ์คํ๊ฒ ๋ช
์ํ๋ค๋ฉด ๋์์ด ๋ ์ ์๋ ์์๋ผ๊ณ ๋ณผ ์ ์์ ๊ฒ์ด๊ณ , ์ค๊ตฌ๋๋ฐฉ์ผ๋ก ์ ๊ณ ์ฝ๋ฉํธ๋ ๋์ถฉ ์ ์ด์ ์ฝ๋ ์ฌ๋์ด region์ ์ด๋ป๊ฒ ๋ถ๋ฅํ ๊ฑด์ง ์ดํดํ ์ ์๋ค๋ฉด ์๋ชป ์ฌ์ฉํ๊ณ ์๋ ๊ฒ์ด๊ฒ ์ง์ . ํ์ด๋ผ๋ฉด ์ปจ๋ฒค์
๋ ๊ณ ๋ ค ์ฌํญ์ด๊ตฌ์.
์ ๋ ๊ฐ์ธ์ ์ผ๋ก MVVM ํจํด ํ์ ์๋ ๋ทฐ๋ชจ๋ธ์ ๊ฒฝ์ฐ ํ๋กํผํฐ์ ์์ฑ์, ์ปค๋งจ๋ ๊ฐ์ด ์ ํํ ๋ ๊ฒ๋ค์ ์ ํ๋ณ๋ก ๋ฌถ์ด ์ ์ด๋๋ ํธ์ด๊ณ , ๋น์ฆ๋์ค ๋ก์ง์ ๊ฒฝ์ฐ ์์ธ ๋จ์๋ณ๋ก ๋ฌถ์ ์ ์์ผ๋ฉด ๋ฌถ์ด์ ์ ์ด๋๋ ํธ์
๋๋ค.
๋ฐ๋ฉด ์ฝ๋๊ฐ ์งง์ผ๋ฉด ๊ตณ์ด ์ ์ ํ์๊ฐ ์๊ณ , ์ ์ด์ผ ํ ์ ๋๋ก ์ฝ๋๊ฐ ๊ธธ๋ค๋ฉด ๊ฐ์ฒด ์ค๊ณ๋ฅผ ์๋ชปํ ๊ฒ์ด๋ค ๋ผ๊ณ ์๊ฐํ๋ ๋ถ๋ค๋ ์์ ๊ฒ ๊ฐ์์.
๊ฒฐ๊ตญ ๋ช
ํํ๊ฒ ๊ฐ๋
์ฑ์ ํด๊ฐ ๋์ง ์๋ ์ ์์, ๋ ์ปจ๋ฒค์
์ด ์์ผ๋ฉด ์ปจ๋ฒค์
ํ์์ ์ทจํฅ๋ฐ๋ผ ์ ์ ํ๊ฒ ์ ํํด์ผ ํ ๊ธฐ๋ฅ์ด๋ผ๊ณ ๋ด
๋๋ค.
6๊ฐ์ ์ข์์
์๊ทธ๋๋ ์ต๊ทผ์๋ region ๋ธ๋ก์ ํ์ฉํ๊ธฐ ๋ณด๋ค๋, ํ์ผ์ ์ต๋ํ ์ชผ๊ฐ๋ ๋ฐฉ์์ผ๋ก ์๋ํด๋ณด๊ณ ์์ต๋๋ค.
์๋๋ region์ ๋ง์ด ์ฐ๋ ์คํ์ผ์ด์๋๋ฐ์. ์ต๊ทผ ๋ค์ด์ ์ ์ฝ๋๋ฅผ ๋ณด๋ค๋ณด๋ฉด, region์ผ๋ก ๋ฌถ์ ์๊ฐํ๊ณ
๊ทธ ์์๋ค๊ฐ ๋์ถฉ ๋๋ ค๋ฐ๋(?) ์ ๋ชจ์ต์ด ๋ณด์ด๋๊ตฐ์โฆ
๊ทธ๋ด ๋ฐ์๋ ์์ค ํ์ผ์ ์ชผ๊ฐ์, ์ฉ๋๋ ๊ธฐ๋ฅ์ ๋ง๊ฒ ๋ถ๋ฆฌํ๋๊ฒ ๋ ๋ซ๊ฒ ๋คโฆ๋ผ๋ ์๊ฐ์ ํ๊ณ ์๋ ์ฐธ์ด์์ต๋๋ค.
๊ทผ๋ฐ ์ ๋งํฌ์ ๊ธ์ด์ด์ฒ๋ผ ๋ญ๊ฐ ์ต์
์ ์ฝ๋ฉ ์คํ์ผ์ด๋ค ์ด๋ฐ๊ฑด ์๋ ๊ฒ ๊ฐ์์โฆ
์๊ธฐ ๋์ ํธํ ๊ทธ๋ฐ ์คํ์ผ์ด ์๋๊ฑฐ๊ฒ ์ฃ ^^;
์๋ฅผ ๋ค์ด ๊ฐ๋จํ if ๋ฌธ์ ์ฐ๋๋ผ๋
if(obj == null) { return; }
์ ๋ ์ด๋ฐ ์์ผ๋ก ์ค๊ดํธ๋ฅผ ๋ค ๋ถ์ด๋ ํธ์ธ๋ฐ, ๋ค๋ฅธ ์ฌ๋ ๋์๋ ๋๊ฒ ๊ฑฐ์ฌ๋ฆฌ๋ ์คํ์ผ์ด ๋ ์๊ฐ ์๋ฏ์ด์โฆ^^;;
4๊ฐ์ ์ข์์
9H05T
7
์๊ฒฌ ์ฃผ์ ๋ถ๋ค์ ๋ฐ๋ฅด๋ฉด, #region๊ณผ ๊ฐ์ฒด์งํฅ ์ค๊ณ์ ์๊ด๊ด๊ณ๊ฐ ์์ ์ ์๊ฒ ๋ค์.
์ฌ๋ฐ๋ ์ฃผ์ ์ธ๊ฑด ํ์คํ ๊ฒ ๊ฐ์ต๋๋ค.
๊ธฐํ๊ฐ ๋๋ค๋ฉด #region์ ๊ฐ์ฒด์งํฅ ์ค๊ณ๋ฅผ ์์ธํ๊ฒ ๋น๊ต ํด๋ณด๋ ๊ฒ๋ ์ข์ ๊ฒ ๊ฐ๋ค์.
๊ฐ๋จํ๊ฒ ๋น๊ต ํด๋ณผ๊น์?
์ผ๋จ ๋ธ๋ก๊ทธ์ ๋ฐ๋ฅด๋ฉด
์ด๋ฐ ํ์์ ์ฝ๋๋ ๊ต์ฅํ ์ข์ง ์๋ค๋ ์๊ฒฌ์ด๊ณ
ํ์คํ ์ด๋ฐ #region code folding์ด๋ผ๋ฉด SRP๋ฅผ ์๋ฐํ๋ ๊ฒฝ์ฐ๋ ์์ ๊ฒ ๊ฐ์ต๋๋ค.
์ด์ฐ๋ณด๋ฉด ์ด๋ฐ ํํ๊ฐ ๋ ์ข์ ์๋ ์๋ค๊ณ ์๊ฐ์ด ๋ค๊ธฐ๋ ํ๋ค์.
ํ์ง๋ง ํ๋์ ํจ์๊ฐ ์ฌ๋ฌ๊ฐ์ portion์ผ๋ก ๋๋๋ค๋ฉด #region์ ์คํ๋ ค ๋ ์ข์ ๊ฐ๋
์ฑ์ ๊ฐ์ถ ๊ฒ ๊ฐ์ต๋๋ค.
์ฌ๊ธฐ์ inner_logic์ด SRP๋ฅผ ์๋ฐํ์ง ์๋๋ค๋ ๊ฐ์ ์ ํ๋ค๋ฉด ๊ฐ๋
์ฑ ์ธก๋ฉด์์ ํจ์ฌ ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.
๋ค๋ง inner_logic์ด ์ ๋ง๋ก function ๋จ์๋ก ์ชผ๊ฐค์ ์๋ atom ํํ์ธ๊ฐ?์ ๋ํด์๋ ๊ณ ๋ฏผ์ด ๋ง์ ๊ฒ ๊ฐ๋ค์.
5๊ฐ์ ์ข์์
์โฆ ์ ๋ region์ ์ฌ์ฉํ๋ ๊ฒ์ ๊ทธ๋ฅ ์ ํธํ์ง ์์ต๋๋ค
region ์ฐ๊ธฐ๋ณด๋ค ํ์ผ์ ๋๋๋๊ฐ ํจ์๋ก ๋๋๋๊ฒ ์ข์๋ณด์ด๊ธด ํฉ๋๋ค.
์๋ฅผ๋ค์ด
#region ์๋์ฐ ๋ค์ ์์ ํจ์
private void Func1();
private void Func2();
#endregion
#region ํ์ผ ๊ฒ์ฆ
private bool Func3();
private bool Func4();
#endregion
์ด๋ฐํธ์ด๋ผ๋ฉด ๊ฐ์ธ์ ์ผ๋ก ํ์ผ์ ๋๋๋๊ฒ ์ข์๋ณด์
๋๋ค.
๊ทธ๊ฒ์ด ๋์ฑ ๋ SRP์ ๋ง๋ ์ฝ๋๊ฐ ๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋ง์ฝ ์ ๋ฐ ์ฝ๋๋ฅผ ๊ณ์ ๋๋ฉด ๊นจ์ง ์ฐฝ๋ฌธ ๋ฒ์น์ ์ํด ํด๋์ค๋ ์ ์ ๋ ์ฌ๋ฌ๊ฐ์ง ๊ธฐ๋ฅ์ ๊ฐ๊ฒ ๋น๋ํด ์ง ๊ฒ ๊ฐ์ต๋๋ค.
๋ง์ฝ ์ด ํด๋์ค์ ์ด๋ฆ์ด ์์ฒญ ์ผ๋ฐ์ ์ด๋ฉด ๋์ฑ ๋ ๊ทธ๋ฌํ ํ๋ฅ ์ด ๋์ต๋๋ค.
๊ฐ์ธ์ ์ผ๋ก region์ ์ฌ์ฉํ๊ธฐ์ ๊ด์ฐฎ๊ฒ ๋ค๋ผ๊ณ ์๊ฐํ๋ ๋ถ๋ถ์
MVVM ํจํด์ ์ฌ์ฉํ๋ ค๋ฉด ํ์ฐ์ ์ผ๋ก view์ viewmodel์ ์ด์ด์ฃผ๋ ๋ ์ด์ด ๊ฒธ์ property๋ค์ด ๋ง์์ง๋๋ฐ
์ฌ์ค ์ด property๋ค์ ๋ก์ง์ด ์๋๋ผ ์ฝ์ง ์๋ ๊ฒฝํฅ์ด ์์ต๋๋ค ใ
ใ
๊ทธ๋์ ์ด๋ด ๋ region์ ์ฌ์ฉํ๋๊ฒ ์ข์๋ณด์ด๊ธฐ๋ ํ์ต๋๋ค.
7๊ฐ์ ์ข์์
dimohy
9
#region
์ ๊ธฐ๋ฅ์ ์ธ ์ธก๋ฉด์ ์๊ฐํด๋ณด๋ฉด ๋ง์น ์ฐ๋ฆฌ๊ฐ ์์ฃผ ์ธ ์ผ์ด ์๋ ๋ฌผ๊ฑด์ ์์์ ๋ด์ ์ฐฝ๊ณ ์ ๋ฃ์ด ๋๋ ๊ฒ ๊ฐ์ ๋๋์ ๋ฐ์ต๋๋ค.
๊ฐ์ธ์ ์ผ๋ก๋ #region
์ ์ง์ํ๋ ํธ์ธ๋ฐ์, ์ด์ ๋ ๊ฐ์์ฑ์ด ์ข์ง ์๊ธฐ ๋๋ฌธ์
๋๋ค. ๊ฐ์ถฐ์ ธ ์์ผ๋ฉด ํ์ํ ๋ ์ฐพ๊ธฐ๊ฐ ๋๋ฌด ํ๋ค์ง ์๋์?
์ฐจ๋ผ๋ฆฌ ์ํฌํ๋ก์ฐ ์์ค์ ์ฝ๋๋ฅผ ํ์ผ์ ์๋จ์, ์ธ๋ถ ์ฝ๋๋ฅผ ํ์ผ์ ํ๋จ์ ๋ฐฐ์นํ๊ฑฐ๋ ๋๋ partial
๋ก ์ด ๋ ๊ตฌ์กฐ๋ฅผ ๋ถ๋ฆฌํ๊ฑฐ๋
์๋๋ฉด ์ข ๋ ๊ตฌ์กฐํ ํด์ ์ชผ๊ฐ๊ฑฐ๋ โ ํ์ง๋ง ๋๋ฌด ๊น์ ๊ตฌ์กฐํ๋ ์ฝ๋ ๊ฐ๋
์ฑ์ ํด์น๋ค๋ ์ฃผ์์ด๊ธฐ๋ ํฉ๋๋ค โ ํ๋๊ฒ์ ์ ํธํ๋ ํธ์
๋๋ค.
6๊ฐ์ ์ข์์
๋์ฒด๋ก region ์ฌ์ฉ์ ๋ถ์ ์ ์ธ ๊ธ๋ค์ด ๋ง๊ตฐ์.
๊ทผ๋ฐ resharper ๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ์๊ธฐ๊ฐ ๋ฌ๋ผ์ง๋ต๋๋คโฆ
resharper ์ FileStructure ๋ฅผ ์ด์ฉํ๋ฉด region ์ผ๋ก ๋ฌถ์ ๊ฒ๋ค์ด ๊ทธ๋ฃน์ผ๋ก ํ์๋์ด ๋ํ๋ฉ๋๋ค.
์์ค์ฝ๋์์ ์ ๋ฆฌ๊ฐ ์ ๋์ด ์์ด๋ โ์ฌ๊ธฐ์๋ถํฐ ์ฌ๊ธฐ๊น์ง๋ ์๊ฒ๋ค ๋ฌถ์โ ์ด๋ผ๋ ์๋ฏธ๋ก ์ฌ์ฉํ ์ ์์ง์.
๊ทธ๋ฆฌ๊ณ ์ด๊ฒ ์ค์ ๋ก ๊ฝค ํธ๋ฆฌํ๊ธฐ๋ ํ๊ตฌ์. ใ
ใ
ใ
/
resharper ๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ~
region ์ ์ ์ ํ๊ฒ ์ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ์ด ์ฌ์ฉํ๊ธฐ ์ข์ ๊ธฐ๋ฅ์ด๋ผ๊ณ ์ ๋ ์๊ฐํด์ ์ถ์ฒ!
7๊ฐ์ ์ข์์
code snippet ํํ๋ก ์ฌ์ฉํ๋ ๋ถ๋ค์ ๋ณด๊ณ ๋ ๋ค ์ ๋ region์ ๊ทธ๋ฆฌ ์ข์ํ์ง ์๊ฒ ๋์ด์โฆ
@@๊ธฐ๋ฅ์ด ํ์ํ๋ฐ? ๋ผ๊ณ ํ์ ๋ โ์ด ๊ทธ %% ํ์ผ์ $$ region ๋ณต์ฌํด์ ์ฐ๋ฉด ๋ผโ ์ด๋ฐ ๊ฒฝ์ฐ๋ ์์๊ฑฐ๋ ์.
์ฌ์ค ํธํ๊ธฐ์ผ ํธํ๊ฒ ์ง๋ง ์ ๋ ๋ค๋ฅธ ์๋ฏธ๋ก ์์ฐ์ฑ์ ๋จ์ด๋จ๋ฆฌ๋ ๊ฒ(๊ฐ๋
์ฑ์ด๋ผ๋๊ฐ ํ ํด๋์ค ๋ด ์ญํ ๋ถํ ๋ฑ) ๊ฐ์์ ๋ ๊ทธ๋ฐ ๊ฒ ๊ฐ์์.
stylecop๊ณผ ๊ฐ์ ๋ถ์๊ธฐ๋ฅผ ์ฌ์ฉํ๋ฉด SA1201๊ณผ ๊ฐ์ด ํด๋์ค ๋ด ์์ดํ
์์๋ฅผ ๊ฐ์ ํ๊ฒ ๋๋๋ฐ ์ฌ๊ธฐ์ ์ ์ํ๊ณ ๋์ region์ด ๊ฐ๋ํ ์ฝ๋๋ฅผ ๋ณด๊ฒ๋๋ฉด ํด๋์ค ๋ทฐ์ด? ๊ฐ์ ๋๊ตฌ๊ฐ ์๋ ํ ํจ์๋ฉฐ ์ด๋ฒคํธ ๋ฑ์ ๋ฐ๋ก ๋ชป ์ฐพ์๊ฐ๊ฒ ๋๊ตฐ์.
๋ง์ฝ ํ ํด๋์ค ๋ด ํจ์๊ฐ ๋๋ฌด ๋ง๊ณ ์ด๋ฅผ ๋ถํ ํ๊ณ ์ถ๋ค - ๊ทธ๋ฌ๋ฉด region์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ๋ณด๊ธฐ์ข์ ์ ์์ง๋ง ์ ์ด๋ฐ ์ํฉ์ด ์๊ธด๋ค๋ฉด ์๋ง๋ partial ํค์๋๋ฅผ ๋ฃ๊ณ Some.Behavior.cs์ ๊ฐ์ด ํ์ผ์ ๋๋ ๊ฒ ๊ฐ์์.
5๊ฐ์ ์ข์์