From 140b9bdb036238795b1f36c76bb9f80a047195ce Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EA=B3=B5=EC=98=88=EC=98=81?=
<133792082+yeyounging@users.noreply.github.com>
Date: Mon, 25 Aug 2025 18:25:33 +0900
Subject: [PATCH 1/3] =?UTF-8?q?Create=20=EA=B3=B5=EC=98=88=EC=98=81.md?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../\352\263\265\354\230\210\354\230\201.md" | 56 +++++++++++++++++++
1 file changed, 56 insertions(+)
create mode 100644 "15\354\236\245/\352\263\265\354\230\210\354\230\201.md"
diff --git "a/15\354\236\245/\352\263\265\354\230\210\354\230\201.md" "b/15\354\236\245/\352\263\265\354\230\210\354\230\201.md"
new file mode 100644
index 0000000..3f0c451
--- /dev/null
+++ "b/15\354\236\245/\352\263\265\354\230\210\354\230\201.md"
@@ -0,0 +1,56 @@
+## **๐ Ch15. JUnit ๋ค์ฌ๋ค๋ณด๊ธฐ**
+
+์ ๋ช
ํ ์๋ฐ ํ
์คํธ ํ๋ ์์ํฌ์ธ JUnit์ ์ฝ๋๋ฅผ ์ ์ง์ ์ผ๋ก ๋ฆฌํฉํ ๋งํ๋ ๊ณผ์ ์ ์์ธํ ๋ณด์ฌ์ค๋ค. ์์ ๋ ์๋ฐ์ง๋ง, ํด๋ฆฐ ์ฝ๋ ๊ด์ ์์ ์ธ์ด์ ์ฐจ์ด๋ ๋ณธ์ง์ด ์๋๋ค. ์์น์ ํ๋ก ํธ์๋์๋ ์ ์ฉ๋๋ค.
+
+### 1. ๋ณต์กํ ์กฐ๊ฑด๋ฌธ์ ์๋ฏธ ์๋ ํจ์๋ก ์จ๊ธฐ๊ธฐ
+์ธ ํญ์ด ๋์ด๊ฐ๋ ๋ณต์กํ ์กฐ๊ฑด๋ฌธ์ ๋ณ๋์ ํจ์๋ก ์บก์ํํ๊ณ , ํจ์๋ช
์ ์ฃผ์์ฒ๋ผ ์ฌ์ฉํ ์ ์๋ค.
+
+```js
+// Before: ๋ฌด์์, ์ ๋ ๋๋งํ๋์ง ํ๋์ ํ์
ํ๊ธฐ ์ด๋ ต๋ค.
+return (
+
+ {user.isLoggedIn && !isLoading && user.hasPermission('editor') && data.isPublished && (
+
+ )}
+
+);
+
+// After: 'isEditable'์ด๋ผ๋ ์ด๋ฆ๋ง์ผ๋ก๋ ์๋๊ฐ ๋ช
ํํด์ง๋ค.
+const isEditable = () => {
+ return user.isLoggedIn && !isLoading && user.hasPermission('editor') && data.isPublished;
+};
+
+return (
+
+ {isEditable() && }
+
+);
+```
+isEditable์ด๋ผ๋ ํจ์๋ช
์์ฒด๊ฐ ์ฃผ์์ ์ญํ ์ ์ํํ๋ฉฐ, ๋ณต์กํ ๋น์ฆ๋์ค ๋ก์ง์ JSX์ ๋ ๋๋ง ์์ญ์ผ๋ก๋ถํฐ ๊น๋ํ๊ฒ ๋ถ๋ฆฌํด์ค๋ค. ์ด๋ ๋จ์ํ ์ฝ๋๋ฅผ ์งง๊ฒ ๋ง๋๋ ๊ฒ์ ๋์ด, ์ปดํฌ๋ํธ์ ํต์ฌ ์ญํ ์ธ '๋ฌด์์ ๋ณด์ฌ์ค ๊ฒ์ธ๊ฐ'์๋ง ์ง์คํ๋๋ก ๋๋๋ค. ๋ง์น ๋ณต์กํ ์ํ ๋ก์ง์ ์ปค์คํ
ํ
(Custom Hook)์ผ๋ก ๋ถ๋ฆฌํ์ฌ ์ฌ์ฌ์ฉ์ฑ๊ณผ ๊ฐ๋
์ฑ์ ๋์ด๋ ๊ฒ๊ณผ ๊ฐ์ ๋งฅ๋ฝ์ด๋ค.
+
+### 2. ๋ถ์ ๋ฌธ๋ณด๋ค๋ ๊ธ์ ๋ฌธ์ด ๋ ์ดํดํ๊ธฐ ์์ํ๋ค
+
+ํ๋ก ํธ์๋์์๋ isLoading, isError, isValid ๊ฐ์ ํ๋๊ทธ๋ฅผ ์์ฃผ ์ด๋ค. ์ด๋ !isNotValid๋ณด๋ค isValid, !isNotLoading๋ณด๋ค isLoading์ด ์ธ์ง ๋ถํ๊ฐ ํจ์ฌ ๋ฎ๋ค.
+์๋ฅผ ๋ค์ด if (!isLoading && !isError)๋ ๋ ๋ฒ ๋ถ์ ํด์์ ๊ฑฐ์ณ์ผ ํ์ง๋ง, if (isSuccess)๋ ์ฆ์ ์ดํด๋๋ค. ์ํ๋ฅผ ์ค๊ณํ ๋๋ถํฐ ๊ธ์ ํ์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ๋๋ฉด ๋ฒ๊ทธ๊ฐ ์ค๊ณ ํ์
์ด ์์ํด์ง๋ค.
+
+
+### 3. ์๊ฐ์ ์ธ ๊ฒฐํฉ์ ์ธ๋ถ๋ก ๋
ธ์ถํ๊ธฐ
+์ฑ
์์ ์ธ๊ธ๋ '์๊ฐ์ ์ธ ๊ฒฐํฉ'์ ํ๋ก ํธ์๋์์๋ ์ค์ํ๊ฒ ๊ณ ๋ คํด์ผํ๋ค. ๋ฐ์ดํฐ fetching, ๋ ๋๋ง, ์ ๋๋ฉ์ด์
, ์ฌ์ฉ์ ์
๋ ฅ ๋ฑ ๋ชจ๋ ๊ฒ์ด ๋น๋๊ธฐ์ ์ผ๋ก ์ฝํ ์์๊ฐ ๋งค์ฐ ์ค์ํ๊ธฐ ๋๋ฌธ์ด๋ค.
+
+
+์ด๋๋ props๋ก ๊ฒฐํฉ์ ๋ช
์ํ ์๋ ์๊ณ , ๋ํผ ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค์ด ๊ทธ ๋ก์ง์ ์์๋ฅผ ๋ช
์ํ ์๋ ์๋ค.
+
+
+### ๋ง๋ฌด๋ฆฌ
+> "์ธ์์ ๊ฐ์ ์ด ๋ถํ์ํ ๋ชจ๋์ ์๋ค. ์ฝ๋๋ฅผ ์ฒ์๋ณด๋ค ์กฐ๊ธ ๋ ๊นจ๋ํ๊ฒ ๋ง๋๋ ์ฑ
์์ ์ฐ๋ฆฌ ๋ชจ๋์๊ฒ ์๋ค."
+
+JUnit์ด๋ผ๋ ๊ฑฐ๋ํ ์คํ์์ค ํ๋ก์ ํธ์ ์ผ๋ถ ์ฝ๋๋ฅผ ๋ฆฌํฉํ ๋งํ๋ ๊ณผ์ ์ ์ฒ์ฒํ ๋ฐ๋ผ๊ฐ๋ ๋๋ ์คํ์์ค์ ๊ธฐ์ฌํ๋ ๊ธฐ๋ถ์ด๋ผ ์ฌ๋ฐ์๋ค.
+
+ํ๋ก ํธ์๋ ์ํ๊ณ๋ ๋น ๋ฅด๊ฒ ๋ณํ์ง๋ง, ๊ฐ๋
์ฑ, ๋ช
ํ์ฑ, ์์ธก ๊ฐ๋ฅ์ฑ์ด๋ผ๋ ์ฝ๋์ ๋ณธ์ง์ ์ธ ๊ฐ์น๋ ๋ณํ์ง ์๋๋ค. ์ฑ
์์ ๋ณด์ฌ์ค ๋ฆฌํฉํ ๋ง ๊ณผ์ ์ ๋ฐ๋ผ๊ฐ๋ฉฐ ๋๊ผ๋ ์ฆ๊ฑฐ์์ฒ๋ผ, ์์ผ๋ก ๋ง์ฃผํ ๋ ๊ฑฐ์ ์ฝ๋๋ ํน์ ๋ด๊ฐ ๋ง ์์ฑํ ์ฝ๋๋ผ๋ ์กฐ๊ธ ๋ ๋์ ์ํ๋ก ๋ง๋ค์ด ๋๋ฃ์๊ฒ ์ ๋ฌํด์ผ๊ฒ ๋ค. ๊ทธ๋ฆฌ๊ณ ๋๋ ์ธ์ ๊ฐ ์คํ์์ค์ ๊ธฐ์ฌํ๋ฉฐ ๋ ๋์ ์ธ์์ ์ฝ๋์ ๊ธ์ ์ ์ธ ์ํฅ์ ๋ฏธ์น๊ณ ์ถ๋ค.
+
+
+
+
+
+
+
From b056f691541e34c81e4ac3fbd5102cc0d35e5300 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EA=B3=B5=EC=98=88=EC=98=81?=
<133792082+yeyounging@users.noreply.github.com>
Date: Mon, 25 Aug 2025 19:06:32 +0900
Subject: [PATCH 2/3] =?UTF-8?q?Create=20=EA=B3=B5=EC=98=88=EC=98=81.md?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../\352\263\265\354\230\210\354\230\201.md" | 24 +++++++++++++++++++
1 file changed, 24 insertions(+)
create mode 100644 "16\354\236\245/\352\263\265\354\230\210\354\230\201.md"
diff --git "a/16\354\236\245/\352\263\265\354\230\210\354\230\201.md" "b/16\354\236\245/\352\263\265\354\230\210\354\230\201.md"
new file mode 100644
index 0000000..cae0155
--- /dev/null
+++ "b/16\354\236\245/\352\263\265\354\230\210\354\230\201.md"
@@ -0,0 +1,24 @@
+## **๐ Ch16. SerialDate ๋ฆฌํฉํฐ๋ง**
+
+์ด๋ฒ ์ฅ์์๋ SerialDate ํด๋์ค๋ฅผ ๋ฆฌํฉํฐ๋งํ๋ ๊ณผ์ ์ ๋ณด์ฌ์คฌ๋ค. ๋ ์ง์ ๊ด๋ จ๋ ๋ก์ง์ ๋ณต์กํ๊ณ ์ค๋ฅ ๊ฐ๋ฅ์ฑ์ด ๋๊ธฐ ๋๋ฌธ์, ์์ ๊ฐ์ ๋ ์ฝ๋ ํ์ง๊ณผ ์ ์ง๋ณด์์ฑ์ ํฐ ์ฐจ์ด๋ฅผ ๋ง๋ ๋ค.
+
+### 1. ๊ฑฐ๋ํ ํด๋์ค ์ชผ๊ฐ๊ธฐ
+
+SerialDate๋ ๋๋ฌด ๋ง์ ์ญํ ์ ๋ ์๊ณ ์์๋ค. ๋ ์ง ๊ณ์ฐ, ํฌ๋งท ๋ณํ, ์์ ์ ์ ๋ฑ ์๋ก ๋ค๋ฅธ ์ฑ
์์ ํ ํด๋์ค์์ ์ฒ๋ฆฌํ๋ค ๋ณด๋ ์ฝ๋๊ฐ ์ฝ๊ธฐ ์ด๋ ต๊ณ ํ
์คํธ๋ ํ๋ค์๋ค.
+๋ฆฌํฉํฐ๋ง์ ๋จ์ผ ์ฑ
์ ์์น(SRP)์ ๊ธฐ์ค์ผ๋ก ๊ธฐ๋ฅ์ ๋ถ๋ฆฌํ๋ ๊ฒ์์ ์์ํ๋ค. ์๋ฅผ ๋ค์ด, ๋ ์ง ๊ณ์ฐ์ ์ ์ฉ ์ ํธ ํด๋์ค๋ก ์ด๋ํ๊ณ , ์์๋ Enum์ผ๋ก ๋์ฒดํ๋ค. ์ด๋ ๊ฒ ํ๋ฉด ํด๋์ค ๊ฐ ์์กด์ด ์ค๊ณ ํ
์คํธ๋ ๊ฐ๋จํด์ง๋ค.
+
+### 2. ๋งค์ง ๋๋ฒ ๋์ ์๋ฏธ ์๋ ์์
+
+๋ ์ง ์ฐ์ฐ์๋ โ1์=1, 12์=12โ ๊ฐ์ ๋งค์ง ๋๋ฒ๊ฐ ๋ฐ๋ณต๋๋ค. ์ด ์ฅ์์๋ ์ด๋ฅผ Month.JANUARY, Month.DECEMBER ๊ฐ์ Enum์ผ๋ก ์นํํ๋ค.
+์ด๋ ๊ฐ๋
์ฑ์ ๋์ด๊ณ ์๋ชป๋ ๊ฐ์ด ๋ค์ด์ค๋ ๊ฒ์ ์ปดํ์ผ ๋จ๊ณ์์ ๋ฐฉ์งํ์ฌ ์ค๋ฅ๋ฅผ ์ฌ์ ์ ์ค์ผ ์ ์๋ค.
+
+### 3. ํ
์คํธ๋ก ์ ๋ขฐ์ฑ ํ๋ณดํ๊ธฐ
+
+๋ ์ง๋ ์์ธ ์ผ์ด์ค๊ฐ ๋ง๋ค. ์ค๋
, ์ ๋ง์ผ, ๋ค๋ฅธ ๋ฌ ๊ฐ์ ๊ณ์ฐ ๊ฐ์ ๋ฌธ์ ๋ ๊ฝค๋ ๋ณต์กํ๋ค. ์ด ์ฅ์์๋ ๋ฆฌํฉํฐ๋ง ์ ํ์ ๊ฒฐ๊ณผ๋ฅผ ๋น๊ตํ๋ ๋จ์ ํ
์คํธ๋ฅผ ํตํด ๋์์ ๊ฒ์ฆํ๋ค.
+ํ
์คํธ๋ ๋ฆฌํฉํฐ๋ง์ ๋ท๋ฐ์นจํ๋ ์์ ๋ง ์ญํ ์ ํ๋ค.
+
+### 4. ์ ์ง์ ๊ฐ์ ์ ํ
+SerialDate์ ๋ฆฌํฉํฐ๋ง์ ํ ๋ฒ์ ๊ฑฐ๋ํ ์์ ์ ํ๋ ๋ฐฉ์์ด ์๋๋ผ ์์ ๋จ์๋ก ๋๋ ์ ์ง์ ์ผ๋ก ์งํ๋๋ค. ํ ๋ฉ์๋, ํ ์ฑ
์, ํ ์์๋ถํฐ ์ฐจ๊ทผ์ฐจ๊ทผ ๊ฐ์ ํ๋ค. ์ด๋ ์ ์ง๋ณด์์ ํ์
์์ ๋งค์ฐ ํ์ค์ ์ด๊ณ ํจ๊ณผ์ ์ธ ๋ฐฉ๋ฒ๋ก ์ด๋ค.
+
+### ๋ง๋ฌด๋ฆฌ
+์ต๊ทผ ์ธ์ฃผ ํ๋ก์ ํธ์์ ๋ ์ง ๊ด๋ จ ๋ณต์กํ ๋ก์ง์ ์ง๋ฉฐ ์ฝ๋๊ฐ ๋งค์ฐ ๋ณต์กํด์ก๋ค.. ๋น์์ ๊ธฐ๋ฅ ๊ตฌํ์ ์ฐ์ ์ผ๋ก ๋์์ง๋ง,์ด์ ๋ ์ฌ๊ธฐ์ ๋ฐฐ์ด ํด๋ฆฐ์ฝ๋ ์์น์ ์ ์ฉํด์ ํ
์คํธ ์ฝ๋๋ฅผ ์์ฑ ํ ์ฐจ๊ทผ์ฐจ๊ทผ ๋ฆฌํฉํ ๋งํด๋ณด์์ผ๊ฒ ๋ค!
From dbb5df09913c106ba0636e649f18715046f2863f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=EA=B3=B5=EC=98=88=EC=98=81?=
<133792082+yeyounging@users.noreply.github.com>
Date: Mon, 25 Aug 2025 19:44:44 +0900
Subject: [PATCH 3/3] =?UTF-8?q?Create=20=EA=B3=B5=EC=98=88=EC=98=81.md?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../\352\263\265\354\230\210\354\230\201.md" | 53 +++++++++++++++++++
1 file changed, 53 insertions(+)
create mode 100644 "17\354\236\245/\352\263\265\354\230\210\354\230\201.md"
diff --git "a/17\354\236\245/\352\263\265\354\230\210\354\230\201.md" "b/17\354\236\245/\352\263\265\354\230\210\354\230\201.md"
new file mode 100644
index 0000000..f4603cf
--- /dev/null
+++ "b/17\354\236\245/\352\263\265\354\230\210\354\230\201.md"
@@ -0,0 +1,53 @@
+### ๐Ch 17. ๋์์ ํด๋ฆฌ์คํฑ
+
+๋งํด ํ์ธ๋ฌ์ ์ฝ๋ ๋์ + ํด๋ฆฐ์ฝ๋ ์ ์์ ํด๋ฆฌ์คํฑ ๋ชฉ๋ก
+
+### ์ฃผ์
+- ๋ณ๊ฒฝ ์ด๋ ฅ ๋ฑ ๋ค๋ฅธ ์์คํ
์ ์ ์ฅํ ์ ๋ณด๋ฅผ ์ฃผ์์ผ๋ก ๋จ๊ธฐ์ง ๋ง๋ผ. ๋ณดํต ์์ฑ์, ์ต์ข
์์ ์ผ, SRP ๋ฒํธ ๋ฑ ๋ฉํ ์ ๋ณด๋ง ๋ฃ๋๋ค.
+- ์ธ๋ชจ ์๋ ์ฃผ์์ ์ฌ๋นจ๋ฆฌ ์ญ์ ํ๋ผ.
+- ์ฝ๋์ ์ค๋ณต๋๋ ์ฃผ์์ ์ ๊ฑฐํ๋ผ.
+- ์ฃผ์ ๋์ง ๋ง๊ณ , ๋น์ฐํ ์๋ฆฌ ๋ฐ๋ณตํ์ง ๋ง๊ณ , ๊ฐ๊ฒฐํ๊ณ ๋ช
๋ฃํ๊ฒ
+- ์ฃผ์์ผ๋ก ์ฒ๋ฆฌ๋ ์ฝ๋๋ ์ฆ๊ฐ ์ญ์ ํด๋ฒ๋ ค๋ผ. ๋๋ ค์ ํ์ง ๋ง๋ผ
+
+### ํ๊ฒฝ
+- ํ๋ฒ์ ๋น๋ํ๊ณ , ํ๋ฒ์ ํ
์คํธํด์ผํ๋ค.
+
+### ํจ์
+- ์ธ์ ๊ฐ์๋ ์์ ์๋ก ์ข๋ค.
+- ํ๋๊ทธ ์ธ์๋ ํผํด๋ผ. ํ๋๊ทธ๋ ํจ์๊ฐ ์ฌ๋ฌ ๊ธฐ๋ฅ์ ์ํํ๋ค๋ ๋ช
๋ฐฑํ ์ฆ๊ฑฐ๋ค.
+- ์๋ฌด๋ ํธ์ถํ์ง ์๋ ํจ์๋ ๊ณผ๊ฐํ ์ญ์ ํ๋ผ.
+
+### ์ผ๋ฐ
+- ๋น์ฐํ ๋์์ ๊ตฌํํ๋ผ. ์ต์ ๋๋์ ์์น์ ์๊ฑฐํด ํจ์๋ ํ๋ก๊ทธ๋๋จธ๊ฐ ๋น์ฐํ ์ฌ๊ธธ ๋งํ ๋์๊ณผ ๊ธฐ๋ฅ์ ์ ๊ณตํด์ผ ํ๋ค. ๊ทธ๋์ผ ์ถ์ํ์ ์๋ฏธ๊ฐ ์๋ค.
+- ๊ฒฝ๊ณ๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ฒ๋ฆฌํ๋ผ. ์ง๊ด์ ์์กดํ์ง ๋ง๊ณ ๋ชจ๋ ๊ฒฝ๊ณ์ ๊ตฌ์์ง ๊ณณ์ ํ
์คํธํ๋ ํ
์คํธ ์ผ์ด์ค๋ฅผ ์์ฑํ๋ผ.
+- ์์ ์ ์ฐจ๋ฅผ ์ง์ผ๋ผ. ์ปดํ์ผ๋ฌ ๊ฒฝ๊ณ ์ผ๋ถ๋ฅผ ๋ฌด์ํ๋ฉด ๋น๋๋ ์ฌ์์ง์ง ๋ชฐ๋ผ๋ ์์นซ ๋์๋ ๋๋ฒ๊น
์ ์๋ฌ๋ฆฐ๋ค.
+- DRY ์์น. ์ค๋ณต์ ๋ฐ๊ฒฌํ ๋๋ง๋ค ์ถ์ํํ ๊ธฐํ๋ก ๊ฐ์ฃผํ๋ผ.
+- ์ฌ๋ฐ๋ฅธ ์ถ์ํ ์์ค. ๊ธฐ์ด ํด๋์ค๋ ๊ตฌํ ์ ๋ณด์ ๋ฌด์งํด์ผ ํ๋ค.
+- ์ ์ ์๋ ๋ชจ๋์ ์ธํฐํ์ด์ค๊ฐ ์์ฃผ ์์ผ๋ฉฐ ๊ฒฐํฉ๋๊ฐ ๋ฎ๋ค.
+- ๋ณ์์ ํจ์๋ ๊ฐ๊น๊ฒ
+- ๊ตฌํ ๋ฐฉ์๊ณผ ์ด๋ฆ์ ์ผ๊ด์ฑ์๊ฒ
+- ๋ณ์, ์์, ํจ์๋ฅผ ๋น์ฅ ํธํ ์์น์ ๋ฃ์ง ๋ง๋ผ. ๊ฒ์ผ๋ฅด๊ณ ๋ถ์ฃผ์ํ ํ๋์ด๋ค.
+- ๊ณ์ฐ์ ์ฌ๋ฌ ๋จ๊ณ๋ก ๋๋๊ณ ์์ ์ ์ธ ๋ณ์ ์ด๋ฆ์ ์ฌ์ฉํ๋ผ.
+- ๋
ผ๋ฆฌ์ ์์กด์ฑ์ ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋๋ฌ๋ด๋ผ
+- ์กฐ๊ฑด์ ์บก์ํํ๋ผ
+- ๋ถ์ ์กฐ๊ฑด์ ํผํ๋ผ
+- ๊ฒฝ๊ณ์กฐ๊ฑด์ ์บก์ํํ๋ผ
+
+ ### ์ด๋ฆ
+ - ์์ ์ ์ธ ์ด๋ฆ์ ์ฌ์ฉํ๋ผ.์ฃผ์๋ณด๋ค ๊ฐ๋ ฅํ๋ค.
+ - ์ ์ ํ ์ถ์ํ ์์ค์์ ์ด๋ฆ์ ์ ํํ๋ผ. ๊ตฌํ์ ๋๋ฌ๋ด๋ ์ด๋ฆ์ ํผํ๋ผ.
+ - ์ด๋ฆ์ผ๋ก ๋ถ์ ํจ๊ณผ๋ฅผ ์ค๋ช
ํ๋ผ.
+
+ ### ํ
์คํธ
+ - ์ถฉ๋ถํ ํ
์คํธ์ผ์ด์ค
+ - ์ปค๋ฒ๋ฆฌ์ง ๋๊ตฌ ์ฌ์ฉํ๊ธฐ
+ - ์ฌ์ํ ํ
์คํธ ๊ฑด๋๋ฐ์ง ๋ง๋ผ
+ - ๋ถ๋ถ๋ช
ํ ์๊ตฌ์ฌํญ์ ํ
์คํธ ์ผ์ด์ค๋ฅผ ์ฃผ์์ผ๋ก ์ฒ๋ฆฌํ๋ผ
+ - ๊ฒฝ๊ณ ์กฐ๊ฑด, ๋ฒ๊ทธ ์ฃผ๋ณ์ ์ฒ ์ ํ ํ
์คํธ
+ - ์คํจ ํจํด์ ์ดํด๋ผ. ํ
์คํธ ์ปค๋ฒ๋ฆฌ์ง ํจํด์ ์ดํด๋ผ.
+ - ํ
์คํธ๋ ๋นจ๋ผ์ผํ๋ค.
+
+### ๋ง๋ฌด๋ฆฌ
+๋ง๋ฌด๋ฆฌ ์ฅ์ผ๋ก ์ฐ๋ฆฌ๊ฐ ์ค๋ฌด์์ ์ฝ๊ฒ ๊ฐ๊ณผํ๋ ์ต๊ด๋ค์ ๋์ง์ด ์ค๋ค.
+์ค๋ณต ์ ๊ฑฐ(DRY), ๊ธ์ ์ ์ด๊ณ ๊ฐ๊ฒฐํ ํํ, ๊ฒฝ๊ณ ์กฐ๊ฑด์ ๋ช
ํํ ์ฒ๋ฆฌํ๋ ์ต๊ด ๋ฑ ๋ฐ๋ก ์ค์ฒํ ์ ์๊ณ , ํด์ผํ๋ ์์น๋ค์ด๋ค. ๋ํ โ์ธ๋ชจ์๋ ๊ฒ์ ๊ณผ๊ฐํ ์ง์๋ผโ๋ผ๋ ๋ฉ์์ง๋, ์ฝ๋๋ฅผ ์์๋๊ธฐ๋ณด๋ค ๋์์์ด ์ ๋ฆฌํ๊ณ ๊ฐ์ ํ๋ ํ๋๊ฐ ์ค์ํจ์ ์ผ๊นจ์์ค๋ค.
+์์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํ ๋, ๊ธฐ๋ฅ ๊ตฌํ์์ ๋๋ด์ง ์๊ณ ๋์์ ํด๋ฆฌ์คํฑ์ ๋ชฉ๋ก์ ์ค์ค๋ก ์ ๊ฒํ๋ฉฐ ๋ฆฌํฉํฐ๋งํ๋ ์ต๊ด์ ๊ธธ๋ฌ์ผ๊ฒ ๋ค. ์ฝ๋ ํ์ง์ ๋์ด๊ณ ๋๋ฃ์์ ํ์
์ ์ํํ๊ฒ ํ๋ฉฐ ๋ฏธ๋์ ๋ ์์ ์๊ฒ๋ ํฐ ์ ๋ฌผ์ด ๋ ๊ฒ์ด๋ค.!!