์๋ ํ์ธ์ Foma ๐ ์ ๋๋ค!
์ค๋ ์์๋ณผ ์ฃผ์ ๋ ์ข์ ์ ๋ ํ ์คํธ๋ฅผ ํ๊ธฐ ์ํ F.I.R.S.T ์์น์ ๋ํด ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํฉ๋๋ค.
๋ฐ๋ก ์์ํ ๊ฒ์~
F.I.R.S.T ์์น์ด๋?
First ์์น์ 'ํด๋ฆฐ ์ฝ๋' ๋ผ๋ ์์ฃผ ์ ๋ช ํ ์ฑ ์ ์ ์์ธ Bob Martin์ด ์ฒ์ ์ ์ํ ๊ท์น์ ๋๋ค.
์ด ๊ท์น์ ํจ์จ์ ์ด๊ณ ์ข์ ๋จ์ ํ ์คํธ๋ฅผ ํ๊ธฐ ์ํ 5๊ฐ์ง ์์๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
๋น ๋ฅด๊ณ (Fast),๋ ๋ฆฝ์ ์ด๊ณ (Independent),๋ฐ๋ณต๊ฐ๋ฅํ๋ฉฐ(Repeatable),์์ฒด ๊ฒ์ฆ๊ฐ๋ฅํ๊ณ (Self-validating),์ฒ ์ ํ๊ณ ์ ์์(Thorough&Timely)
์์ฑ ๊ฐ๋ฅํ ํ ์คํธ๋ฅผ First ์์น์ ์ค์ํ ์ ๋ํ ์คํธ๋ผ๊ณ ํฉ๋๋ค.
์ด 5๊ฐ์ง ์์น์ ๋ํด์ ์ธ์ธํ๊ฒ ๋ค๋ฃจ๋๋ก ํ๊ฒ ์ต๋๋ค.
Fast
์ ๋ ํ ์คํธ๋ ๋น ๋ฅด๊ฒ ์คํ๋๊ณ ๋น ๋ฅด๊ฒ ๊ฒฐ๊ณผ๋ฅผ ์์์ผ ํฉ๋๋ค.
๊ทธ๋ฌ๋ฏ๋ก ํ๋ ์ผ์ ๋จ์๊ฐ ์ต๋ํ ์์์ผ ํฉ๋๋ค.
๋ํ ๋น ๋ฅธ ํ ์คํธ๋ฅผ ํ๊ธฐ ์ํด์ ์ค์ ์๋ฒ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ด์ฉํ์ง ์๊ณ
๊ฐ์ง ๋ฐ์ดํฐ(๋ชจ์ ๋ฐ์ดํฐ)๋ฅผ ๋ง๋ค์ด์ ํ ์คํธ๋ฅผ ์งํํด์ผํฉ๋๋ค.
๋ง์ฝ ๋ฐ์ดํฐ๋ฅผ ์ต์ ๋ ์ง์์ผ๋ก ์ ๋ ฌํ์ฌ ๊ฐ์ฅ ์ต๊ทผ ๋ฐ์ดํฐ 5๊ฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฒ์ ํ ์คํธํ๋ ค๊ณ ํ๋๋ฐ
์ค์ ์๋ฒ์ ๋ฌธ์ ๊ฐ ์๊ฒจ ๋ฐ์ดํฐ๊ฐ ๋๋ฆฌ๊ฒ ๋ฐ์์ ธ ์ค๊ฑฐ๋ ๋ฐ์ดํฐ๊ฐ ์ค์ง ์๋ ๊ฒฝ์ฐ ํ ์คํธ๋ฅผ ์งํํ๊ธฐ๊ฐ ํ๋ค๊ฒ ์ฃ ?
๊ทธ๋ฌ๋๊น ๊ฐ์ง ๋ฐ์ดํฐ๋ก ์ค์ ํ ์คํธ๋ฅผ ํ๊ณ ์ถ์ ๋ถ๋ถ๋ง ์๋ผ์ ์งํํ๋ ๊ฒ์ ๋๋ค.
Independent
์ ๋ ํ ์คํธ๋ ๊ทธ ์์ฒด๋ง์ผ๋ก ์คํ๋์ด์ผ ํฉ๋๋ค.
์ฆ, ๋ ๋ฆฝ์ ์ด์ด์ผ ํ๊ณ ๋ค๋ฅธ ํ ์คํธ์ ์์กดํ๊ฑฐ๋ ์ํฅ์ ์ฃผ์ด์ ์๋ฉ๋๋ค.
๋ง์ฝ ํฌ๋ง๋ผ๋ ์ด๋ฆ์ ๊ฐ์ง๊ณ ์๋ ๋ฐ์ดํฐ๊ฐ ์๋ค๊ณ ๊ฐ์ ํ๊ฒ ์ต๋๋ค.
์ด ๋ฐ์ดํฐ๋ ๊ทธ ์ ํ ์คํธ์์ ์ด๋ฆ์ด ์ ๋ฐ๋๋์ง (ํฌ๋ง -> ๊ทธ๋) ํ ์คํธ ํ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณค ์ด๋ฆ์ 'ํฌ' ์๊ฐ ๋ค์ด๊ฐ๋์ง ํ ์คํธ๋ฅผ ํ๋ ค๊ณ ํ๋๋ฐ ๋ง์ฝ ๊ทธ ์ ํ ์คํธ์ ์์กดํ๋ค๋ฉด
๊ทธ ์ ํ ์คํธ์์ ์ด๋ป๊ฒ ์ด๋ฆ์ ๋ฐ๊ฟจ๋๋์ ๋ฐ๋ผ ๊ฒฐ๊ณผ๊ฐ ๋ฐ๋๊ฒ ์ฃ ?
๊ทธ๋ฌ๋ฏ๋ก ๋ชจ๋ ํ ์คํธ์๋ ์๋ก ์ํฅ์ ์ฃผ๋ฉด ์๋ฉ๋๋ค.
Repeatable
์ ๋ ํ ์คํธ๋ ๋ฐ๋ณต ๊ฐ๋ฅํด์ผ ํฉ๋๋ค.
ํ ์คํธ๋ฅผ ์ด๋์ ์ด๋ป๊ฒ ๋ช ๋ฒ์ ์งํํ๋ ๋๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋์์ผํฉ๋๋ค.
๋ง์ฝ ์ด๋ค ์ซ์์ 5๋ฅผ ๊ณฑํ๋ ํ ์คํธ๋ฅผ ํ๋ค๊ณ ๊ฐ์ ํ๋ฉด
ํญ์ 5๋ฅผ ๊ณฑํ ์ซ์๊ฐ ๋์์ผํฉ๋๋ค. (๋น์ฐํ ์๊ธฐ์ง๋ง...)
์ด ์์น์ ์์กด์ฑ๊ณผ ์์ฃผ ๊ด๊ณ๊ฐ ๊น์๋ฐ์.
(์ด๋ค ๋ฐ์ดํฐ๊ฐ ์ํฅ์ ๋ผ์น๋ค๋ฉด ๋๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋์ค์ง ์๊ฒ ์ฃ ?)
Self-validating
์ ๋ ํ ์คํธ๋ ์์ฒด ๊ฒ์ฆ์ด ๊ฐ๋ฅํด์ผ ํฉ๋๋ค.
ํ ์คํธ ์์ฒด๋ก ํต๊ณผ์ธ์ง ์คํจ์ธ์ง ๊ฒฐ๊ณผ๊ฐ ๋์์ผ ํ๋ฉฐ ์ด๊ฒ์ ์๋์ ์ผ๋ก ์ด๋ค์ ธ์ผ ํฉ๋๋ค.
๋ง ๊ทธ๋๋ก ์ด๊ฑด ํต๊ณผ์ธ ๊ฒ๋ ์๋๊ณ ... ์คํจ์ธ ๊ฒ๋ ์๋...์ ๋งคํ ์ํฉ์ด ์์ด์ผ ํ๋ค๋ ๊ฒ์ ๋๋ค.
๋ํ ์๋์ ์ผ๋ก ์ด๋ค์ง๋ค๋ ๊ฒ์ ์ฝ๋๋ฅผ ์์ฑํ๋ ์ฌ๋์ด ์ถ๋ ฅ์ด๋ ๋ก๊ทธ๋ฅผ ํตํด์ ์๋์ ์ผ๋ก
๊ฒฐ๊ณผ๋ฅผ ํ์ธํ๋ ๊ฒ์ด ์๋๋ผ ๊ทธ ํ ์คํธ๋ ์์ฒด์ ์ผ๋ก ๊ฒฐ๊ณผ๊ฐ ๋์์ผํฉ๋๋ค.
(iOS๋ผ๋ฉด XCTest๋ฅผ ์ด์ฉํ๋ฉด ๋ฉ๋๋ค.)
Thorough & Timely
์ ๋ ํ ์คํธ๋ ์ฒ ์ ํ๊ณ ์ ์ ํ ๋์ ์์ฑ๋์ด์ผ ํฉ๋๋ค.
์ฒ ์ ํ๋ค๋ ๊ฒ์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ฌํด์ผ ํ๋ฏ๋ก ์ต์์์ ์ต๋๊น์ง ๋ฒ์๋ฅผ ํฌํจํ๊ณ
์ญํ ์ ๋ฐ๋ผ์ ๋ฐ๋๋ ๋ฐ์ดํฐ ์ฌ์ฉ์์ผ๋ ๊ด๋ฆฌ์์ผ ๋ ๋ชจ๋ ํ ์คํธ๊ฐ ๊ฐ๋ฅํด์ผ ํ๋ฉฐ
์ด๋ค ์ผ์ด์ค๊ฐ ์คํจ(์์ธ๋ ์ค๋ฅ)ํ๋์ง๋ ํ ์คํธ ํด์ผํฉ๋๋ค.
๋ํ ์ ๋ ํ ์คํธ๋ ์ค์ ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ๋ฐ๋ก ์ ์ ์์ฑํด์ผ ํฉ๋๋ค.
'๐ฅ Computer Science > Programming' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๐ป Programming] Clean Code - ์๋ฏธ์๋ ์ด๋ฆ์ ์จ๋ผ (0) | 2021.06.13 |
---|---|
[๐ป Programming] Clean Code - ๊นจ๋ํ ์ฝ๋๋? (feat.์จ์ผํ๋ ์ด์ ) (0) | 2021.06.13 |
[CS] TDD(Test-Driven-Development)๋? (0) | 2021.06.07 |
[CS] ์ผ๊ธ ๊ฐ์ฒด๋? (1) | 2021.05.12 |
[Programming] SOLID ์์น์ด๋? (feat.iOS ๊ฐ๋ฐ์) (2) | 2021.03.04 |
๋๊ธ