ํ๋ก๊ทธ๋จ์ ๊ธฐ๋ณธ๋จ์ :
ํจ์
ํ๋ก๊ทธ๋๋ฐ ์ด์ฐฝ๊ธฐ์๋ ์์คํ ์ ๋ฃจํด๊ณผ ํ์๋ฃจํด์ผ๋ก ๋๋ด๊ณ
ํฌํธ๋๊ณผ PL/1 ์์ ์๋ ์์คํ ์ ํ๋ก๊ทธ๋จ, ํ์ ํ๋ก๊ทธ๋จ, ํจ์๋ก ๋๋ด๋ค.
์ง๊ธ์ ํจ์๋ง ๋จ์์๋ค.
์๊ฒ ๋ง๋ค์ด๋ผ.
๊ฐ๋ก 150์, ์ธ๋ก 100์ค์ ๋์ด์๋ ์๋๋ค.
์ฑ ์์๋ 20์ค๋ ๊ธธ๋คํ๋ค.
์ด๋ ๊ฒ ๋ง๋๋ ๋ฐฉ๋ฒ์ ์ ์ํ์๋ฉด
- ์ ์ด๋ฌธ is/else๋ฌธ while๋ฌธ ๋ฑ์ ๋ค์ด๊ฐ๋ ๋ธ๋ก์ ํ์ค์ด์ด์ผ ํ๋ค.
- ๋๊ฐ ๊ฑฐ๊ธฐ์ ํจ์๋ฅผ ํธ์ถํ๋ค.
- ๋ฐ๋ผ์ if๋ฌธ ์์ ๋ค์ if๋ฌธ์ ์ฐ๋ ์์
์ค์ฒฉ ์ ์ด๋ฌธ 2๋จ์ ์ด๊ณผํด์๋ ์๋๋ค.
ํจ์๋ ํ๊ฐ์ง๋ฅผ ํด์ผํ๋ค
- ๊ทธ ํ๊ฐ์ง๋ฅผ ์ํด์ผ ํ๋ค.
- ํจ์์ ์๋ฏธ๋ฅผ ์ ์งํ๋ ์์ค๊น์ง ์ค์ธ๋ค.
- ํจ์ ์ ์ฝ๋๋ฅผ ๋ค๋ฅธ ํจ์๋ก ์ถ์ถํ ์ ์๋ค๋ฉด
→๊ทธ ํจ์๋ ์ฌ๋ฌ๊ฐ์ง๋ฅผ ํ๋ ์ ์ด๋ค.
๋ด๋ ค๊ฐ๊ธฐ ๊ท์น
์ฐธ๊ณ ๋ก ์ฑ ์ ์๊ฐ ๋ง๋ ๊ท์น์ด๋ฆ์ธ๋ฐ ์ ์ ํ ์ด๋ฆ์ด๋ผ ๋์ํ๋ค.
- method0์ 1๊ณผ 2๋ณด๋ค ๋ง์ ์ผ์ํ๋ค.
- ๋ฐ๋ผ์ method0์ ์ฌ๋ฌ๊ฐ์ง ์ผ์ ๋ ๋จ์ํ๊ฒ ์์ถํ์ผ๋ฏ๋ก
์ถ์ํ์์ค์ด ๋ ๋์ผ๋ฏ๋ก ์ด๋ฅผ ๊ณ ์ฐจ์์ด๋ผ ํ๊ฒ ๋ค. - method1๊ณผ method2๋ ๋ฐ๋๋ก 0์ ๋นํด ์ ์ฐจ์์ด๋ผ ํ ์ ์๋ค.
๊ณ ์ฐจ์→์ ์ฐจ์ ํจ์๋ฅผ ๋ฐ๋ผ ์ด์ผ๊ธฐ์ฒ๋ผ ์ฝ์ด๊ฐ๋ ๊ฒ์ ๋ด๋ ค๊ฐ๊ธฐ๋ผ๊ณ ํ๋ค.
ํจ์ ๋น ์ถ์ํ ์์ค์ ํ๋๋ก
๋ง์ฝ ํ ํจ์ ๋ด์ ๊ณ ์ฐจ์๊ณผ ์ ์ฐจ์ ํจ์๊ฐ ์์ฌ์๋ค๋ฉด
ํจ์๋ฅผ ๋ชจ๋ ๋ฐ๋ผ๊ฐ๋ณด์ง ์๋ ํ ํด๋น ํจ์๊ฐ ๋ฌด์จ ์ผ์ ํ๋ ์ง ์ ์ ์๋ค.
๋น์ทํ๊ฒ ๊ณ ์ฐจ์→์ ์ฐจ์ →๊ณ ์ฐจ์ ์์ ์๋ชป๋ ํ๋ฆ์ ํผํด์ผํ๋ค.
Switch๋ฌธ
Switch๋ฌธ์ ๋ณธ์ง์ ์ผ๋ก N๊ฐ์ ์์ ์ ์ํํ๋ฏ๋ก ์๊ฒ ๋ง๋ค๊ธฐ ์ด๋ ต๋ค.
์ ํจ์์๋ ๋ค๊ฐ์ง ๋ฌธ์ ๊ฐ ์๋ค.
- ํจ์๊ฐ ๊ธธ๋ค.
์ ์ง์ ์ ํ์ ์ถ๊ฐํ๋ฉด ๋ ๊ธธ์ด์ง ๊ฒ์ด๋ค. - ํ๊ฐ์ง ์์ ๋ง ์ํํ์ง ์๋๋ค.
- SRP ์๋ฐ
Single Responsibility Principle : ํด๋์ค๋ ํ๋์ ์ฑ ์๋ง์ ๊ฐ์ ธ์ผํ๋ค. - OCP ์๋ฐ
Open Closed Principle : ๊ธฐ์กด์ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ์ง ์์ผ๋ฉด์ ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์ ์๋๋ก ์ค๊ณ๊ฐ ๋์ด์ผ ํ๋ค.
๊ฐ์ฅ ์ํํ ๋ฌธ์ ๋ก, ๊ธ์ฌ ์ ์ฐ์ ์ํ ๋ ๋ง์ ํจ์๋ค์ด ์กด์ฌํ ์ ์๋ค๋ ์ ์ด๋ค.
์ด๋ฅผ ๊ฐ์ ํ ํจ์๋ ์๋์ ๊ฐ๋ค.
- switch๋ฌธ์ ์ถ์ ํฉํ ๋ฆฌ์ ์จ๊ธด ํ ์๋ฌด์๊ฒ๋ ๋ณด์ฌ์ฃผ์ง ์๋๋ค.
- ํฉํ ๋ฆฌ๋ switch๋ฌธ์ ํตํด ์ ์ ํ Employee ํ์ ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ์์ฑnewํ๋ค.
- ์ด๋ ๊ฒ ๋คํ์ฑ์ ํตํด ์ค์ ํ์ ํด๋์ค์ ํจ์๊ฐ ์คํ๋๋ค.
switch๋ฌธ์ ๋คํ์ฑ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ์ฝ๋๋ก ํ๋ฒ ์ ๋๋ง ํ์ฉํ๋ค.
์์ ๊ด๊ณ์ ์จ๊ธด ํ์๋ ๋ค๋ฅธ ์ฝ๋์ ๋ ธ์ถํ์ง ์๋๋ค.
๋ฌผ๋ก ๋ถ๊ฐํผํ ์ํฉ๋ ์๋คใ
'๐ CleanCode' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[CleanCode]ํจ์-๊ตฌ์กฐ์ ํ๋ก๊ทธ๋๋ฐ (1) | 2024.09.16 |
---|---|
[CleanCode]ํจ์-์ธ์ Arguments (1) | 2024.09.06 |
[CleanCode]์๋ฏธ์๋ ์ด๋ฆ-๋งฅ๋ฝ (0) | 2024.08.11 |
[CleanCode]์๋ฏธ ์๋ ์ด๋ฆ-์๋๋ฅผ ๋ถ๋ช ํ ๋ฐํ๋ผ (0) | 2023.07.02 |
[CleanCode]์๋ฏธ์๋ ์ด๋ฆ-ํด๋์ค์ ๋งค์๋ ์ด๋ฆ (0) | 2023.02.26 |