Dhey 2022. 1. 23. 19:49
๋ฐ˜์‘ํ˜•

Clean Naming์„ ์•Œ์•„๋ณด๊ธฐ์— ์•ž์„œ Clean Code๋ž€ ๋ฌด์—‡์ผ๊นŒ?

 

Clean Code๋ž€?

์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ณ , ๋ณ€๊ฒฝํ•˜๊ธฐ ์‰ฌ์šด Code.

์‚ฌ๋žŒ์ด ์ฝ๊ณ  ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ณ , ๋ช…ํ™•ํ•œ ํ•œ๊ฐ€์ง€ ์—ญํ• ์„ ํ•˜๋ฉฐ, ์ด ์—ญํ• ์„ ์˜๋ฏธ์žˆ๊ฒŒ ํ‘œํ˜„ํ•˜๊ณ ,

์ค‘๋ณต์ด ์—†๊ณ  ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๊ฐ€ ์กด์žฌํ•˜๋Š” Code ์ด๋‹ค.

 

 

 

Clean Naming์€ ๊ฐ€๋…์„ฑ ํ–ฅ์ƒ์— ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์š”์†Œ์ด๋‹ค.

 

๊ฐœ๋ฐœ์˜ ๋Œ€๋ถ€๋ถ„์€ ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•˜๊ณ  ์ˆ˜์ •ํ•˜๋Š” ํ–‰์œ„์ด๋‹ค. ๋งŒ์•ฝ ๊ทธ๊ฒŒ ์ˆ˜๋ฐฑ ๋ผ์ธ์˜ ์ฝ”๋“œ๋ผ๋ฉด ํฌ๊ฒŒ ์–ด๋ ค์šด ์ผ์ด ์•„๋‹ ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ˆ˜์‹ญ, ์ˆ˜๋ฐฑ๋งŒ ๋ผ์ธ์˜ ์ฝ”๋“œ๋ฅผ ์ฝ๊ณ  ์ดํ•ดํ•˜๊ณ  ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ์–ด๋ ค์šด ์ผ์ด๋‹ค. ๊ทธ๋ ‡๊ธฐ์— Clean Naming์— ๋Œ€ํ•œ ์ž‘์€ ํˆฌ์ž๋Š” ์žฅ๊ธฐ์ ์œผ๋กœ๋Š” ํŒ€์˜ ๊ฐœ๋ฐœ ์ƒ์‚ฐ์„ฑ ํ–ฅ์ƒ์— ํฌ๊ฒŒ ๊ธฐ์—ฌ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„์ด๋‹ค.

 

 

SW์˜ ์ฃผ์š” ์š”์†Œ๋“ค์€ ๋ชจ๋‘ ์•„๋ž˜์™€ ๊ฐ™์ด Clean Name์ด ํ•„์š”ํ•˜๋‹ค.

 


 

โ˜… Clean Naming์˜ ๋Œ€์›์น™ โ˜…

ใ€Œ ๋ชจ๋“  ์ด๋ฆ„์€ ๋ฐ˜๋“œ์‹œ ๊ทธ ์˜๋ฏธ๊ฐ€ ๋ชจ๋‘์—๊ฒŒ ๋ช…ํ™•ํ•ด์•ผ ํ•œ๋‹ค. ใ€

 

 

โ–ถ Clean Naming์˜ ์›์น™
· Function, Class ์—ญํ• ์ด ๋ช…ํ™•ํ•˜๋ฉด Naming๋„ ๋ช…ํ™•ํ•ด์ง„๋‹ค.
· ๋ถˆํ•„์š”ํ•œ ์ •๋ณด/๋ฐ˜๋ณต์€ ์ œ๊ฑฐํ•ด์•ผ ํ•œ๋‹ค.
· ์ค„์ž„๋ง(์•ฝ์–ด)๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค.
· ๊ทœ์น™๊ณผ ์ผ๊ด€์„ฑ์€ ์ค‘์š”ํ•˜๋‹ค.
· ๋™๋ฃŒ์™€ ์ƒ์˜ํ•ด์•ผ ํ•œ๋‹ค.

 

ํ•˜๋‚˜์”ฉ ์ž์„ธํžˆ ์•Œ์•„๋ณด์ž.

 

โ‰ซ Function, Class ์—ญํ• ์ด ๋ช…ํ™•ํ•˜๋ฉด Naming๋„ ๋ช…ํ™•ํ•ด์ง„๋‹ค.

  - Clean Function, Class์˜ ์ œ 1์›์น™์€ ๋ช…ํ™•ํžˆ ํ•œ ๊ฐ€์ง€ ์—ญํ• ์„ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

  - ์—ญํ• ์ด ๋งŽ์œผ๋ฉด ์ด๋ฆ„๋„ ๋ช…ํ™•ํ•˜์ง€ ์•Š๊ฒŒ ๋œ๋‹ค. (ex. User, GeneralUtil ···)

 

โ‰ซ ๋ถˆํ•„์š”ํ•œ ์ •๋ณด/๋ฐ˜๋ณต์€ ์ œ๊ฑฐํ•ด์•ผ ํ•œ๋‹ค.

  - ์ด๋ฆ„์€ ์ดํ•ด๊ฐ€๋Šฅํ•œ ์ตœ์†Œํ•œ์˜ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค. (๋„ˆ๋ฌด ์งง์ง€๋„, ์žฅํ™ฉํ•˜์ง€๋„ ์•Š์•„์•ผ ํ•จ)

  - ๋ถˆํ•„์š”ํ•œ ์ •๋ณด (ex. UserData, processFunc() ···)

 

โ‰ซ ์ค„์ž„๋ง(์•ฝ์–ด)๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค.

  - ์ค„์ž„๋ง์€ ๊ฐ€๋…์„ฑ์„ ์‹ฌ๊ฐํ•˜๊ฒŒ ์ €ํ•˜์‹œํ‚จ๋‹ค.

  - ๋ˆ„๊ตฌ๋‚˜ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์ค„์ž„๋ง์€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค.

  - ์ค„์ž„๋ง์˜ ์˜ˆ (temp, prdt, acc() → temperature, product, accelerateSpeed() ···)

 

โ‰ซ ๊ทœ์น™๊ณผ ์ผ๊ด€์„ฑ์€ ์ค‘์š”ํ•˜๋‹ค.

  - ์–ธ์–ด๋ณ„, ์กฐ์ง๋ณ„ Naming Convention์„ ์ผ๊ด€์„ฑ ์žˆ๊ฒŒ ์ง€์ผœ์•ผ ํ•œ๋‹ค.

  - ์ผ๊ด€์„ฑ์€ ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•˜๊ณ  ์ˆ˜์ •ํ•˜๋Š” ๋…ธ๋ ฅ์„ ๊ฐ์†Œ์‹œํ‚จ๋‹ค.

  - ์ผ๊ด€์„ฑ ์—†๋Š” Naming์€ ๊ฐ€๋…์„ฑ์„ ์ €ํ•˜์‹œํ‚จ๋‹ค.

 

โ‰ซ ๋™๋ฃŒ์™€ ์ƒ์˜ํ•ด์•ผ ํ•œ๋‹ค.

  - ๋ชจ๋“  ์›์น™์„ ์ ์šฉํ•ด๋„ ์ข‹์€ ์ด๋ฆ„์ด ๋– ์˜ค๋ฅด์ง€ ์•Š์„ ๋•Œ

  - ๋‚ด๊ฐ€ ๋ช…๋ช…ํ•œ ์ด๋ฆ„์— ๋Œ€ํ•œ ํ™•์‹ ์ด ์—†์„ ๋•Œ

   → ์ด๋Ÿด๋•Œ๋Š” ๋™๋ฃŒ์™€ ํ•จ๊ป˜ํ•˜๋Š” ๋ฆฌ๋ทฐ, ๋ธŒ๋ ˆ์ธ์Šคํ† ๋ฐ์ด ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์ด๋‹ค.

 

 


 

"  Variable ์„ ์œ„ํ•œ Clean Naming "

 

๋ณ€์ˆ˜์˜ type์— ๋”ฐ๋ผ ์ด๋ฆ„์„ ์–ด๋–ป๊ฒŒ ์ž‘์„ฑํ•ด์•ผ ํ• ๊นŒ?

 

์œ„ Naming์˜ ์‹ค์ œ ์‚ฌ๋ก€๋ฅผ ๋ณด์ž

Naming์˜ ์‚ฌ๋ก€

 

๊ทธ๋Ÿฌ๋‚˜, ์ด๋Ÿฌํ•œ ์ด๋ฆ„๋„ ์ถฉ๋ถ„ํžˆ ์ข‹์ง€๋งŒ ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋ถ€๊ฐ€์ ์ธ ์ •๋ณด๋ฅผ ์ œ์‹œํ•œ๋‹ค๋ฉด ๋” ๋ช…ํ™•ํžˆ ๋ณ€์ˆ˜๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ถ€๊ฐ€์ ์ธ ์ •๋ณด๋ฅผ ํฌํ•จํ•œ ๋ณ€์ˆ˜๋ช… ์˜ˆ์‹œ

 

๊ทธ๋Ÿผ Clean Variable Naming์˜ Bad Smell์— ๋Œ€ํ•ด์„œ๋„ ์•Œ์•„๋ณด์ž

Bad Smell์˜ ์˜ˆ์‹œ

 

์•ž์„œ ๋ณธ ๊ฐ ๋ณ€์ˆ˜์— ๋Œ€ํ•œ Bad Smell์˜ ์‚ฌ๋ก€๋ฅผ ๋ณด์ž

๋ณ€์ˆ˜์— ๋”ฐ๋ฅธ Bad Smell ์‚ฌ๋ก€

 

 


 

"  Method ๋ฅผ ์œ„ํ•œ Clean Naming "

 

· Method์˜ ์ด๋ฆ„์€ ์˜๋„์™€ ๊ธฐ๋Šฅ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ํ‘œํ˜„ํ•ด์•ผ ํ•œ๋‹ค.

· Method์˜ ์ด๋ฆ„์€ ์–ด๋–ค ๋™์ž‘(๋™์‚ฌ)์„ ๋ฌด์—‡์„ ๋Œ€์ƒ(๋ช…์‚ฌ)์œผ๋กœ ํ•  ๊ฒƒ์ธ์ง€๋กœ '๋™์‚ฌ+๋ช…์‚ฌ'๋กœ ์กฐํ•ฉํ•˜์—ฌ ํ‘œํ˜„ํ•œ๋‹ค.

 

Method Type์— ๋”ฐ๋ผ ์ด๋ฆ„์„ ์–ด๋–ป๊ฒŒ ์ž‘์„ฑํ•ด์•ผ ํ• ๊นŒ?

 

์œ„ ์ž‘์„ฑ๋ฒ•์— ๋”ฐ๋ฅธ Naming์— ๋ถ€๊ฐ€์ ์ธ ์ •๋ณด๋ฅผ ํ•จ๊ป˜ํ•œ ์‚ฌ๋ก€๋ฅผ ๋ณด์ž

๋ถ€๊ฐ€์ ์ธ ์ •๋ณด๋ฅผ ์ถ”๊ฐ€ํ•œ ๋ฉ”์†Œ๋“œ๋ช… ์˜ˆ์‹œ

 

๊ทธ๋Ÿผ Clean Variable Naming์˜ Bad Smell์— ๋Œ€ํ•ด์„œ๋„ ์•Œ์•„๋ณด์ž

Method Bad Smell์˜ ์˜ˆ์‹œ
Method์— ๋”ฐ๋ฅธ Bad Smell ์˜ˆ์‹œ

 

 


 

"  Class ๋ฅผ ์œ„ํ•œ Clean Naming "

 

- ํด๋ž˜์Šค์— ์˜ํ•ด ์ƒ์„ฑ๋˜๋Š” ๊ฐ์ฒด๋ฅผ ์˜๋ฏธ์žˆ๊ฒŒ ์„ค๋ช…ํ•ด์•ผ ํ•œ๋‹ค.

- '๋ช…์‚ฌ ๋˜๋Š” ๋ช…์‚ฌ๊ตฌ'๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ๋™์‚ฌ๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.

 

Class Name์˜ ์‚ฌ๋ก€๋ฅผ ๋ณด์ž

๊ฐ€์šด๋ฐ์˜ ์ด๋ฆ„์ด ๊ฐ€์žฅ ์ ์ ˆํ•œ ์‚ฌ๋ก€

 

โ–ถ Clean Class Naming์˜ ์›์น™
  - ๊ตฌ์ฒด์ ์ด๊ณ  ๋ช…ํ™•ํ•œ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•ด๋ผ.
  - Convention์„ ์ค€์ˆ˜ํ•˜๋Š” ์ผ๊ด€์„ฑ ์žˆ๋Š” ์ด๋ฆ„์„ ์‚ฌ์šฉํ•ด๋ผ.
  - ๋ณดํŽธ ์–ธ์–ด๋ฅผ ํ™œ์šฉํ•ด๋ผ.

 

โ‰ซ ๊ตฌ์ฒด์ ์ด๊ณ  ๋ช…ํ™•ํ•œ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•ด๋ผ.

์ข‹์€ ํด๋ž˜์Šค ์ด๋ฆ„์˜ ์˜ˆ์‹œ

 

โ‰ซ Convention์„ ์ค€์ˆ˜ํ•˜๋Š” ์ผ๊ด€์„ฑ ์žˆ๋Š” ์ด๋ฆ„์„ ์‚ฌ์šฉํ•ด๋ผ.

ํŠน์ • ๊ฐœ๋…์— ๋Œ€ํ•ด ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๋Š” ์˜ˆ์‹œ

  - ์กฐ์ง๋‚ด๋ถ€์—์„œ ํŠน์ • ๊ฐœ๋…์— ๋Œ€ํ•œ ์šฉ์–ด๋ฅผ ์ •์˜ํ•˜๊ณ  ์ผ๊ด€์„ฑ์ด ์žˆ๊ฒŒ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

  - ๋ณดํŽธ์ ์ธ ๊ธฐ์ˆ  ์šฉ์–ด๋ฅผ ํ™œ์šฉํ•ด์•ผํ•œ๋‹ค. (ex. Factory, Builder, Obsever, Controller)

 

โ‰ซ ๋ณดํŽธ ์–ธ์–ด๋ฅผ ํ™œ์šฉํ•ด๋ผ.

๋„๋ฉ”์ธ ์ „๋ฌธ๊ฐ€๊ฐ€ ์‚ฌ์šฉํ•œ ๊ฐœ๋…์„ ์—”์ง€๋‹ˆ์–ด๋Š” ๋„๋ฉ”์ธ ๋ชจ๋ธ์˜ ์„ค๊ณ„/๊ตฌํ˜„ ํด๋ž˜์Šค์—๋„ ๋™์ผํ•˜๊ฒŒ ์‚ฌ์šฉํ•ด์•ผ ํ•จ

  - ๋„๋ฉ”์ธ ์ „๋ฌธ๊ฐ€, SW ์•„ํ‚คํ…ํŠธ, ๊ฐœ๋ฐœ์ž์˜ ์–ธ์–ด๋ฅผ ๋ชจ๋‘ ํ†ต์ผํ•ด์•ผ ํ•œ๋‹ค.

  - ๊ธฐ์ค€์€ ๋„๋ฉ”์ธ ์ „๋ฌธ๊ฐ€๋“ค์ด ์‚ฌ์šฉํ•˜๋Š” ์–ธ์–ด๊ฐ€ ๋˜์–ด์•ผ ํ•œ๋‹ค.

  - ์ด ์–ธ์–ด๋Š” ๋ชจ๋“  ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜, ์„ค๊ณ„๋ฌธ์„œ, ์‹ค์ œ ์ฝ”๋“œ๊นŒ์ง€ ํ†ต์ผ๋˜์–ด์•ผ ํ•œ๋‹ค.

 

 


 

Coding Rule

SW ๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ๋ผ์ธ ๋ฐ ๊ทœ์น™์˜ ๋ชจ์Œ

 

Coding Rule์˜ ์ข…๋ฅ˜

 

 

Coding Rule์˜ ์ค€์ˆ˜์—ฌ๋ถ€ ํ™•์ธ

 

 


 

์ฝ”๋“œํ”„๋ ˆ์†Œ Java ์›น ๊ฐœ๋ฐœ ์ฒดํ—˜๋‹จ ํ™œ๋™ ์ค‘ 'SW ์œ ์ง€๋ณด์ˆ˜์„ฑ ํ–ฅ์ƒ์„ ์œ„ํ•œ Clean Code' ์ด๋Ÿฌ๋‹ ๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ  ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค :)
์ฝ”๋“œํ”„๋ ˆ์†Œ URL: https://www.codepresso.kr/

 

ํ”„๋ฆฌ๋ฏธ์—„ IT ๊ต์œก ์„œ๋น„์Šค - ์ฝ”๋“œํ”„๋ ˆ์†Œ

 

www.codepresso.kr

 

๋ฐ˜์‘ํ˜•