Study/CleanCode

[Study][CleanCode - 1] 4. ์ฃผ์„

youn12 2022. 7. 11. 17:39
๐Ÿ“‹ ๋ชฉ์ฐจ.

4. ์ฃผ์„
    .์ข‹์€ ์ฃผ์„
    .๋‚˜์œ ์ฃผ์„


โœ”๏ธ ๋‚ด์šฉ.

 

4. ์ฃผ์„

 

 ์ฃผ์„์ด ํ•„์š”ํ•œ ์ƒํ™ฉ๋งˆ๋‹ค ์ฝ”๋“œ๋กœ ํ‘œํ˜„ํ•  ๋ฐฉ๋ฒ•์ด ์ •๋ง๋กœ ์—†๋Š”์ง€ ๋‹ค์‹œ ํ•œ๋ฒˆ ์ƒ๊ฐํ•ด๋ณธ๋‹ค.
์ฃผ์„์€ ์˜ค๋ž˜๋„๋ฆฌ์ˆ˜๋ก ์ฝ”๋“œ์—์„œ ๋ฉ€์–ด์ง„๋‹ค. ์ฃผ์„์„ ์œ ์ง€๋ณด์ˆ˜ ํ•˜๊ธฐ๋ž€ ํ˜„์‹ค์ ์œผ๋กœ ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
๋ถ€์ •ํ™•ํ•œ ์ฃผ์„์€ ์—†๋Š” ์ฃผ์„๋งŒ ๋ชปํ•˜๋‹ค. ์ฝ”๋“œ๋งŒ์ด ์ž๊ธฐ๊ฐ€ ํ•˜๋Š” ์ผ์„ ์ง„์‹ค๋˜๊ฒŒ ๋งํ•œ๋‹ค. 
๊ทธ๋Ÿฌ๋ฏ€๋กœ ์ฃผ์„์„ ๊ฐ€๋Šฅํ•œ ์ค„์ด๋„๋ก ๊พธ์ค€ํžˆ ๋…ธ๋ ฅํ•œ๋‹ค.

 


 

.์ข‹์€ ์ฃผ์„

 

์–ด๋–ค ์ฃผ์„์€ ํ•„์š”ํ•˜๊ฑฐ๋‚˜ ์œ ์ตํ•˜๋‹ค. ํ•˜์ง€๋งŒ ์ •๋ง๋กœ ์ข‹์€ ์ฃผ์„์€, ์ฃผ์„์„ ๋‹ฌ์ง€ ์•Š๋Š” ๋ฐฉ๋ฒ•์ด๋ผ๋Š” ๊ฒƒ์„ ๋ช…์‹ฌํ•œ๋‹ค.

 

- ๋ฒ•์ ์ธ ์ฃผ์„

 

๋•Œ๋กœ๋Š” ํšŒ์‚ฌ๊ฐ€ ์ •๋ฆฝํ•œ ๊ตฌํ˜„ ํ‘œ์ค€์— ๋งž์ถฐ ๋ฒ•์ ์ธ ์ด์œ ๋กœ ํŠน์ • ์ฃผ์„์„ ๋„ฃ์œผ๋ผ๊ณ  ๋ช…์‹œํ•œ๋‹ค.

 

// Copyright (C) 2003,2004,2005 by Object Mentor, Inc, All rights reserved.
// GNU General Public License ๋ฒ„์ „ 2์ด์ƒ์„ ๋”ฐ๋ฅด๋Š” ์กฐ๊ฑด์œผ๋กœ ๋ฐฐํฌํ•œ๋‹ค.

 

- TODO ์ฃผ์„

 

 ๋•Œ๋กœ๋Š” '์•ž์œผ๋กœ ํ•  ์ผ'์„ ์ฃผ์„์œผ๋กœ ๋‚จ๊ฒจ๋‘๋ฉด ํŽธํ•˜๋‹ค.

ํ•„์š”ํ•˜๋‹ค ์—ฌ๊ธฐ์ง€๋งŒ ๋‹น์žฅ ๊ตฌํ˜„์— ํž˜๋“  ์—…๋ฌด์ผ ๊ฒฝ์šฐ TODO ์ฃผ์„์œผ๋กœ ๊ธฐ์ˆ ํ•œ๋‹ค.

๋‹จ, ์ฃผ๊ธฐ์ ์œผ๋กœ TODO ์ฃผ์„์„ ์ ๊ฒ€ํ•ด ๊ดœ์ฐฎ์€ ์ฃผ์„์€ ์—†์• ๋„๋ก ํ•ด์•ผํ•œ๋‹ค.

 

- ๋ณต์žกํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ์žˆ์–ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ ํ•˜๋Š” ์ฃผ์„

 

 ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์›Œ์ง์— ์žˆ์–ด ๋„์›€์ด ๋  ๊ฒฝ์šฐ ๋‚จ๊ฒจ๋‘๋Š” ๊ฒƒ์„ ์„ ํ˜ธํ•˜๋Š” ํŽธ์ด๋‹ค. (ํ•„์ž ๋™๊ฐ)
์ œ๊ณฑ๊ทผ(Math.sqrt)์„ ์‚ฌ์šฉํ•œ ์ด์œ ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•œ๋‹ค. ์ œ๊ณฑ๊ทผ์ด ์ •๋ง ์ข‹์€ ๋ฐฉ๋ฒ•์ธ๊ฐ€์—๋Œ€ํ•ด ์„ค๋ช…ํ•˜๊ณ  ์ˆ™๊ณ ํ•  ๊ฐ€์น˜๊ฐ€ ๋ฌธ์ œ์ด๊ธฐ ๋–„๋ฌธ์— ๋‚จ๊ฒจ๋‘”๋‹ค. (ํ•„์ž ๋™๊ฐ)

 

/**
 * ์ด ํด๋ž˜์Šค๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ง€์ •ํ•œ ์ตœ๋Œ€ ๊ฐ’๊นŒ์ง€ ์†Œ์ˆ˜๋ฅผ ๊ตฌํ•œ๋‹ค.
 * ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์—๋ผ์Šคํ† ํ…Œ๋„ค์Šค์˜ ์ฒด๋‹ค.
 * 2์—์„œ ์‹œ์ž‘ํ•˜๋Š” ์ •์ˆ˜ ๋ฐฐ์—ด์„ ๋Œ€์ƒ์œผ๋กœ ์ž‘์—…ํ•œ๋‹ค.
 * ์ฒ˜์Œ์œผ๋กœ ๋‚จ์•„ ์žˆ๋Š” ์ •์ˆ˜๋ฅผ ์ฐพ์•„ ๋ฐฐ์ˆ˜๋ฅผ ๋ชจ๋‘ ์ œ๊ฑฐํ•œ๋‹ค.
 * ๋ฐฐ์—ด์— ๋” ์ด์ƒ ๋ฐฐ์ˆ˜๊ฐ€ ์—†์„ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•œ๋‹ค.
 */
public class PrimeGenerator{
  
  private static int intdetermineIterationLimit(){
    // ๋ฐฐ์—ด์— ์žˆ๋Š” ๋ชจ๋“  ๋ฐฐ์ˆ˜๋Š” ๋ฐฐ์—ด ํฌ๊ธฐ์˜ ์ œ๊ณฑ๊ทผ๋ณด๋‹ค ์ž‘์€ ์†Œ์ˆ˜์˜ ์ธ์ˆ˜๋‹ค.
    // ๋”ฐ๋ผ์„œ ์ด ์ œ๊ณฑ๊ทผ๋ณด๋‹ค ๋” ํฐ ์ˆซ์ž์˜ ๋ฐฐ์ˆ˜๋Š” ์ œ๊ฑฐํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.
    double iterationLimit = Math.sqrt(crossedOut.length);
    return (int) iterationLimit;
  }
}

 


 

.๋‚˜์œ ์ฃผ์„

 

๋Œ€๋ถ€๋ถ„์˜ ์ฃผ์„์— ๋Œ€ํ•ด ๋ถ€์ •์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ชฉ๋ก๋งŒ ๋‚˜์—ด ํ•˜๋„๋ก ํ•œ๋‹ค.

 

- ์ฃผ์ ˆ๊ฑฐ๋ฆฌ๋Š” ์ฃผ์„

- ๊ฐ™์€ ์ด์•ผ๊ธฐ๋ฅผ ์ค‘๋ณตํ•˜๋Š” ์ฃผ์„

- ์˜คํ•ดํ•  ์—ฌ์ง€๊ฐ€ ์žˆ๋Š” ์ฃผ์„

- ์˜๋ฌด์ ์œผ๋กœ ๋‹ค๋Š” ์ฃผ์„

- ์ด๋ ฅ์„ ๊ธฐ๋กํ•˜๋Š” ์ฃผ์„

- ์žˆ์œผ๋‚˜ ๋งˆ๋‚˜ํ•œ ์ฃผ์„

 

- ๋“ฑ๋“ฑ..


 

๐Ÿ“ ๋Š๋‚€์ .

- ๋Œ€์ฒด์ ์œผ๋กœ ์ฃผ์„์„ ์‚ฌ์šฉํ•˜์ง€ ๋ง๋ผ๋Š” ๋‚ด์šฉ์ด ํ•ต์‹ฌ์œผ๋กœ ์ดํ•ดํ•˜๊ณ  ๋Œ€๋ถ€๋ถ„์˜ ๋‚ด์šฉ์„ ์ƒ๋žต ํ•˜์˜€๋‹ค.
- ํ•„์š”ํ•œ ์ฃผ์„ ๋ช‡๊ฐœ์— ๊ณต๊ฐ๊ฐ€๋Š” ๋ถ€๋ถ„์ด ์žˆ์–ด์„œ ๊ธฐ์ˆ ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.