1. ํจ์๋ฅผ ์๊ฒ, ๋ ์๊ฒ ๋ง๋ค์ด๋ผ
- 2~4์ค ์ ๋๋ก ์์ฒญ ์งง๊ฒ
- if/else/while ๋ฌธ ๋ฑ์ ๋ค์ด๊ฐ๋ ๋ธ๋ก์ ํ์ค์ด์ฌ์ผํจ
- ์ค์ฒฉ๊ตฌ์กฐ๊ฐ ์๊ธธ๋งํผ ํจ์๊ฐ ์ปค์ ธ์๋ ์๋๋ค (ํจ์์์ ๋ค์ฌ์ฐ๊ธฐ ์์ค์ 1๋จ์ด๋ 2๋จ์ ๋์ด์๋ฉด ์๋จ)
2. ํจ์๋ ํ๊ฐ์ง๋ฅผ ํด์ผ ํ๋ค. ๊ทธ ํ ๊ฐ์ง๋ฅผ ์ ํด์ผํ๋ค. ๊ทธ ํ ๊ฐ์ง๋ง์ ํด์ผ ํ๋ค. (SRP, Single Responsibility Principle)
- ํจ์๊ฐ ํ ๊ฐ์ง๋ง ํ๋์ง ํ๋จํ๋ ๋ฐฉ๋ฒ1 : ์ง์ ๋ ํจ์ ์ด๋ฆ ์๋์์ ์ถ์ํ ์์ค์ด ํ๋์ธ ๋จ๊ณ๋ง ์ํํ๋ค๋ฉด ๊ทธ ํจ์๋ ํ ๊ฐ์ง ์์ ๋ง ํ๋ค.
- ํจ์๊ฐ ํ ๊ฐ์ง๋ง ํ๋์ง ํ๋จํ๋ ๋ฐฉ๋ฒ2 : ๋จ์ํ ๋ค๋ฅธ ํํ์ด์๋๋ผ ์๋ฏธ ์๋ ์ด๋ฆ์ผ๋ก ๋ค๋ฅธ ํจ์๋ฅผ ์ถ์ถํ ์ ์๋ค๋ฉด ๊ทธ ์์ ์ ์ฌ๋ฌ ์์ ์ ํ๋ ์
-
ํจ์๊ฐ ์์ฐ์ค๋ฝ๊ฒ ์น์ ์ผ๋ก ๋๋ ์ ์๋ค๋ฉด, ํ ํจ์์์ ์ฌ๋ฌ ์์ ์ ํ๋ค๋ ์ฆ๊ฑฐ, ์ฝ๋๋ฅผ ๋ณ๊ฒฝํด์ผํ ์ด์ ๊ฐ ์ฌ๋ฟ
-
์ฐ๋ฆฌ๊ฐ ํจ์๋ฅผ ๋ง๋๋ ์ด์ ๋ ํฐ ๊ฐ๋ ์(์ฆ, ํจ์ ์ด๋ฆ์) ๋ค์ ์ถ์ํ ์์ค์์ ์ฌ๋ฌ ๋จ๊ณ๋ก ๋๋ ์ํํ๊ธฐ ์ํด์์ด๋ค.
-
์ถ์ํ๋? (์ถ์ํ ์์ค์ด๋?)
์ฌ์ํ ์์๋ฅผ ์ ๊ฑฐํ๊ณ ํต์ฌ๋ง ๋ฝ์๋ด๋ ๊ฒ
์ธ์ ๋ง์ฌ๊ฐ ์ด๋ป๊ฒ ์์ง์ด๊ณ ์๋์ง ๊ทธ ๊ตฌ์กฐ, ๊ธฐ๋ณธ์ ์ธ ๋ฉ์ปค๋์ฆ์ ๋ฝ์๋ด๋ ๊ฒ์ด๋ผ๊ณ ํฉ๋๋ค. ๊ฒฝ์ ํ์์๋ โ๋ชจ๋ธ๋งโ์ด๋ผ๋ ํํ๋ ์ถ์ํ์ ๋์์ด๋ก ์ฐ์ธ๋ค๊ณ ํฉ๋๋ค.
๊ฐ๋ณ์ฑ์ ๋ฎ์ถ๊ณ , ๋ฐ๋ผ์ ์ฌ๋ฌ๊ฐ์ง ์ํฉ์ ์ ์ฉํ ์ ์๊ฒ ๋ฉ๋๋ค.
3. ํจ์ ๋น ์ถ์ํ ์์ค์ ํ๋๋ก!
- ๋ด๋ ค๊ฐ๊ธฐ ๊ท์น : ์์์ ์๋๋ก ํ๋ก๊ทธ๋จ์ ์ฝ์ผ๋ฉด ํจ์ ์ถ์ํ ์์ค์ด ํ ๋ฒ์ ํ ๋จ๊ณ์ฉ ๋ฎ์์ง๋ค.
- Switch ๋ฌธ์ ์ถ์ ํจํ ๋ฆฌ์ ๊ฝ๊ฝ ์จ๊ธฐ์
4. ์์ ์ ์ธ ์ด๋ฆ์ ์ฌ์ฉํ๋ผ!
- ํจ์ ์ด๋ฆ์ด ๊ธธ์ด๋ ๊ด์ฐฎ๋ค. ๊ธธ๊ณ ์์ ์ ์ธ ํจ์ ์ด๋ฆ์ด ๊ธธ๊ณ ์์ ์ ์ธ ์ฃผ์๋ณด๋ค ์ข๋ค.
- ์ด๋ฆ์ ๋ถ์ผ ๋๋ ์ผ๊ด์ฑ์ด ์์ด์ผ ํ๋ค. ๋ชจ๋ ๋ด์์ ํจ์ ์ด๋ฆ์ ๊ฐ์ ๋ฌธ๊ตฌ, ๋ช ์ฌ, ๋์ฌ๋ฅผ ์ฌ์ฉํ๋ค.
5. ํจ์ ์ธ์
- ์ด์์ ์ธ ์ธ์ ๊ฐ์ ์์ -> 0, 1 (3,4๊ฐ ์ด์์ ์ต๋ํ ํผํ๊ธฐ)
- ๋จํญ ํจ์
- ์ธ์์ ์ง๋ฌธ์ ๋์ง๋ ๊ฒฝ์ฐ
- ์ธ์๋ฅผ ๋ญ๊ฐ๋ก ๋ณํํด ๊ฒฐ๊ณผ๋ฅผ ๋ณํํ๋ ๊ฒฝ์ฐ
- (๋๋ฌผ๊ฒ ์ฌ์ฉ) ์ด๋ฒคํธ ํจ์
- ํ๋๊ทธ ์ธ์ - ์ฐ์ง๋ง๋ผ
- ์ดํญ ํจ์
๋์ ๊ฑด ์๋์ง๋ง ๋จํญ ํจ์๋ก ๋ฐ๊พธ๋๋ก ์ ์จ์ผํ๋ค. - ์ผํญ ํจ์
์ ์คํ ๋ง๋ค์
- ์ธ์ ๊ฐ์ฒด
Circle makeCircle(double x, double y, double radius)
Circle makeCircle(Point center, double radius)
์ธ์๊ฐ 2~3๊ฐ ํ์ํ๋ค๋ฉด ์ผ๋ถ๋ฅผ ๋ ์์ ์ธ ํด๋์ค ๋ณ์๋ก ์ ์ธํ์. ๊ฐ๋ ์ ํํํ ์ ์๊ฒ๋๋ค.
- ์ธ์ ๋ชฉ๋ก : ๋๋ฑํ๊ฒ ์ทจ๊ธํ๋ ๊ฐ๋ณ ์ธ์๋ฅผ ๊ฐ๋ ํจ์์์ Listํ ์ธ์ ํ๋๋ก ์ธ์ ๋์ฒดํ๊ธฐ
- ํจ์ ์ด๋ฆ : ๋์ฌ/๋ช ์ฌ ์ + ์ธ์ ์ด๋ฆ(์ธ์ ์์์ ๋ง๊ฒ ๋ฃ๊ธฐ)
6. ๋ถ์ ํจ๊ณผ๋ฅผ ์ผ์ผํค์ง ๋ง๋ผ!
- ํจ์ ์ด๋ฆ์์ ์ง์ํ๋ ๋ด์ฉ๊ณผ ํจ๊ป ์์์น๋ชปํ ๋ด์ฉ์ด ํจ๊ป ์คํ๋๋ ์ํฉ์ด ๋ฐ์ํ์ง ์๋๋กํด์ผํ๋ค.
- ์ผ๋ฐ์ ์ธ ๊ฒฝ์ฐ ์ถ๋ ฅ ์ธ์๋ฅผ ์ฐ์ง ๋ง๋ผ (๋ค๋ฅธ ๋ฐ์ ์ ๋ฌ๋๋ ์ธ์๋ฅผ ์ฌ์ฉํ์ง ๋ง๋ผ) -> ์ํ๋ฅผ ๋ณ๊ฒฝํด์ผํ๋ค๋ฉด ํจ์๊ฐ ์ํ ๊ฐ์ฒด ์ํ๋ฅผ ๋ณ๊ฒฝํ๋ ๋ฐฉ์์ผ๋ก ํ๊ธฐ
7. ๋ช ๋ น๊ณผ ์กฐํ๋ฅผ ๋ถ๋ฆฌํ๋ผ!
- ํจ์๋ ๊ฐ์ฒด ์ํ๋ฅผ ๋ณ๊ฒฝํ๊ฑฐ๋ ์๋๋ฉด ๊ฐ์ฒด ์ ๋ณด๋ฅผ ๋ฐํํ๊ฑฐ๋ ๋ ์ค ํ๋๋ง ํด์ผ ํ๋ค. ๋ ๋ค ํ๋ฉด ์๋๋ค.
- Try/Catch ๋ธ๋ก์ ๋ฐ๋ก ๋ฝ์๋ด์ ํจ์๋ก ๋ง๋ค์ด๋ผ.
8. ์ค๋ฅ ์ฝ๋๋ณด๋ค ์์ธ๋ฅผ ์ฌ์ฉํ๋ผ!
(if๋ฅผ ์ฌ์ฉํ๋)์ค๋ฅ ์ฝ๋๋ณด๋ค ์์ธ๋ฅผ ์ฌ์ฉํ๋ฉด ์ค๋ฅ ์ฒ๋ฆฌ ์ฝ๋๊ฐ ์๋ ์ฝ๋์์ ๋ถ๋ฆฌ๋๋ฏ๋ก ์ฝ๋๊ฐ ๊น๋ํด์ง๋ค.
9. ๋ฐ๋ณตํ์ง ๋ง๋ผ!
์ค๋ณต์ ์์ ๋ฉด ๋ชจ๋ ๊ฐ๋
์ฑ์ด ํฌ๊ฒ ๋์์ง๋ค.
10. ๊ตฌ์กฐ์ ํ๋ก๊ทธ๋๋ฐ
- ํฐ ํจ์์์ : return ๋ฌธ์ด ํ๋์ฌ์ผํ๋ค. ๋ฃจํ ์์์ break, continue๋ฅผ ์ฌ์ฉํ๋ฉด ์๋๋ค. goto๋ ์ ๋ ์ฌ์ฉํ์ง ๋ง์์ผํ๋ค.
- ์์ ํจ์์์ : return, break, continue ์ฌ๋ฌ๋ฒ ์ฌ์ฉํด๋๋๋ค. goto๋ ์ ๋ ์ฌ์ฉํ์ง ๋ง์์ผํ๋ค.
๊ฒฐ๋ก
- ํจ์๋ ๋์ฌ๋ฉฐ, ํด๋์ค๋ ๋ช ์ฌ๋ค.
- ์๋ง๋ ํจ์๋ ๊ธธ์ด๊ฐ ์งง๊ณ , ์ด๋ฆ์ด ์ข๊ณ , ์ฒด๊ณ๊ฐ ์กํ ํจ์์ด๋ค.
- ํจ์์ ๊ทผ๋ณธ์ ์ธ ๋ชฉํ๋ ์์คํ ์ด๋ผ๋ ์ด์ผ๊ธฐ๋ฅผ ํ์ด๊ฐ๋๋ฐ ์๋ค.