๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“’ ๊ฐœ๋ฐœ ์„œ์ /Clean Code

[Clean Code] 4์žฅ ์ฃผ์„

by nitronium102 2022. 2. 26.

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์„ ์ด์šฉํ•œ ์ดˆ๊ธฐํ™”

๋Œ“๊ธ€