TIL (Today I Learned)
22.02.25~22.02.26
์ค๋ ์ฝ์ ๋ฒ์
4์ฅ ์ฃผ์
์ฑ ์์ ๊ธฐ์ตํ๊ณ ์ถ์ ๋ด์ฉ
์ฐ๋ฆฌ๋ ์ฝ๋๋ก ์๋๋ฅผ ํํํ์ง ๋ชปํด, ๊ทธ๋ฌ๋๊น ์คํจ๋ฅผ ๋งํํ๊ธฐ ์ํด ์ฃผ์์ ์ฌ์ฉํ๋ค. ์ฝ๋๋ง์ด ์ ํํ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ์ ์ผํ ์ถ์ฒ๋ค. ๊ทธ๋ฌ๋ฏ๋ก ์ฐ๋ฆฌ๋ (๊ฐํน ํ์ํ ์ง๋ผ๋) ์ฃผ์์ ๊ฐ๋ฅํ ์ค์ด๋๋ก ๊พธ์คํ ๋ ธ๋ ฅํด์ผ ํ๋ค.
์ฃผ์์ด ํ์ํ ๊ฒฝ์ฐ
- ์ธ์๋ ๋ฐํ๊ฐ์ด ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ณ๊ฒฝํ์ง ๋ชปํ๋ ์ฝ๋ -> ์๋ฏธ๋ฅผ ๋ช ๋ฃํ๊ฒ ๋ฐํ๋ ์ฃผ์
- ๋ค๋ฅธ ํ๋ก๊ทธ๋๋จธ์๊ฒ ๊ฒฐ๊ณผ๋ฅผ ๊ฒฝ๊ณ ํ ๋ชฉ์
์คํดํ ์ฌ์ง๊ฐ ์๋ ์ฃผ์
// this.closed๊ฐ true์ผ ๋ ๋ฐํ๋๋ ์ ํธ๋ฆฌํฐ ๋ฉ์๋๋ค.
// ํ์์์์ ๋๋ฌํ๋ฉด ์์ธ๋ฅผ ๋์ง๋ค.
public synchronized void waitForClose(final long timeoutMillis) throws Exception {
if (!closed){
wait(timeoutMillis);
if (!closed)
throw new Exception("MockResponseSender could not be closed");
}
}
- this.closed๊ฐ true์ฌ์ผ ๋ฉ์๋๊ฐ ๋ฐํ๋๋ค.
- timeout์ ๊ธฐ๋ค๋ ธ๋ค this.closed๊ฐ ๊ทธ๋๋ true๊ฐ ์๋๋ฉด ์์ธ๋ฅผ ๋์ง๋ค.
ํจ์๋ ๋ณ์๋ก ํํํ ์ ์๋ค๋ฉด ์ฃผ์์ ๋ฌ์ง ๋ง๋ผ
// before
if (smodule.getDependSubSystems().contains(susSysMod.getSubSystem()))
// after
ArrayList moduleDependees = smodule.getDependSubSystems();
String ourSubSystem = subSysMod.getSubSystem();
if (moduleDependees.contains(ourSubSystem))
์ ์ญ ์ ๋ณด
์ฃผ์์ ๋ฌ์์ผ ํ๋ค๋ฉด ๊ทผ์ฒ์ ์๋ ์ฝ๋๋ง ๊ธฐ์ ํ๋ผ. ์ฝ๋ ์ผ๋ถ์ ์ฃผ์์ ๋ฌ๋ฉด์ ์์คํ ์ ์ ๋ฐ์ ์ธ ์ ๋ณด๋ฅผ ๊ธฐ์ ํ์ง ๋ง๋ผ.
์ค๋ ์ฝ์ ์๊ฐ
์ฌ์ค ์์ง๊น์ง๋ ๋๋ฌ์ด ์ฃผ์์ ๋ง์ด ๋ณด์ง ๋ชปํด์ ๊ด๋ จ ๋ด์ฉ์ด ์ต์ํ์ง ์์๋ค. ํ์ง๋ง ์คํดํ ์ฌ์ง๊ฐ ์๋ ์ฃผ์ ๊ฐ์ ์ค์๋ ์์ผ๋ก ์ผ๋ง๋ ์ง ์ผ์ด๋ ์ ์๋ ๊ฒ ๊ฐ๊ธฐ ๋๋ฌธ์ ์ฃผ์ํด์ผ๊ฒ ๋ค.
๊ถ๊ธํ๊ฑฐ๋ ์ ์ดํด๋์ง ์๋ ๋ด์ฉ
์ ์ ์ด๊ธฐํ ํจ์ = ์ ์ ํ๋ ์ด๊ธฐํ?
1) ์ ์ธ๊ณผ ๋์์ ์ด๊ธฐํ
2) static block์ ์ด์ฉํ ์ด๊ธฐํ
'๐ ๊ฐ๋ฐ ์์ > Clean Code' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Clean Code] 7์ฅ ์ค๋ฅ ์ฒ๋ฆฌ (0) | 2022.03.05 |
---|---|
[Clean Code] 6์ฅ ๊ฐ์ฒด์ ์๋ฃ๊ตฌ์กฐ (0) | 2022.03.02 |
[ํด๋ฆฐ ์ฝ๋] 3์ฅ ํจ์ (0) | 2022.02.23 |
[ํด๋ฆฐ ์ฝ๋] 2์ฅ ์๋ฏธ ์๋ ์ด๋ฆ (0) | 2022.02.21 |
[ํด๋ฆฐ ์ฝ๋] 1์ฅ ๊นจ๋ํ ์ฝ๋ (0) | 2022.02.19 |
๋๊ธ