๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ’ป/Java CleanCode Study

(10)
๐Ÿชœ์‚ฌ๋‹ค๋ฆฌ ๊ฒŒ์ž„ # 2022.04.18~2022.05.02 ๐ŸŽˆ ๊ตฌํ˜„ ๊ธฐ๋Šฅ ๋ชฉ๋ก ์ž…๋ ฅ ์ฐธ์—ฌ์ž ์ด๋ฆ„ ์‹คํ–‰ ๊ฒฐ๊ณผ ์ตœ๋Œ€ ์‚ฌ๋‹ค๋ฆฌ ๋†’์ด ๊ฒฐ๊ณผ ๋ณด๊ณ ์‹ถ์€ ์‚ฌ๋žŒ ์ด๋ฆ„ (๊ฐœ์ธ or all) ์ถœ๋ ฅ ์‚ฌ๋‹ค๋ฆฌ ๊ฒฐ๊ณผ ํ•˜๋‚˜์˜ ๊ฐ€๋กœ ๋ผ์ธ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” Line Class ํ•˜๋‚˜์˜ ์„ธ๋กœ ๋ผ์ธ์— ๋นˆ ๊ฐ’์ด ์—†๋„๋ก ๊ฐ€๋กœ ๋ผ์ธ์„ ์ƒ์„ฑํ•˜๋Š” ๋กœ์ง ์ถ”๊ฐ€ ์ตœ๋Œ€ ์‚ฌ๋‹ค๋ฆฌ ๋†’์ด๋งŒํผ Line์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” Ladder Class ์‹คํ–‰ ๊ฒฐ๊ณผ (๊ฐœ์ธ or all) ๋ผ์ธ์„ ๋”ฐ๋ผ player์˜ ์œ„์น˜๋ฅผ ์ด๋™ ์‹œ์ผœ ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋กœ์ง ์ถ”๊ฐ€ ๐Ÿš€ ๊ธฐ๋Šฅ ์š”๊ตฌ ์‚ฌํ•ญ ์‚ฌ๋‹ค๋ฆฌ ๊ฒŒ์ž„์— ์ฐธ์—ฌํ•˜๋Š” ์‚ฌ๋žŒ์— ์ด๋ฆ„์„ ์ตœ๋Œ€5๊ธ€์ž๊นŒ์ง€ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ๋‹ค. ์‚ฌ๋‹ค๋ฆฌ๋ฅผ ์ถœ๋ ฅํ•  ๋•Œ ์‚ฌ๋žŒ ์ด๋ฆ„๋„ ๊ฐ™์ด ์ถœ๋ ฅํ•œ๋‹ค. ์‚ฌ๋žŒ ์ด๋ฆ„์€ ์‰ผํ‘œ(,)๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๊ตฌ๋ถ„ํ•œ๋‹ค. ์‚ฌ๋žŒ ์ด๋ฆ„์„ 5์ž ๊ธฐ์ค€์œผ๋กœ ์ถœ๋ ฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ๋‹ค๋ฆฌ ํญ๋„ ๋„“์–ด์ ธ์•ผ ํ•œ๋‹ค. ์‚ฌ๋‹ค๋ฆฌ ํƒ€๊ธฐ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜..
๐Ÿƒ๋ธ”๋ž™์žญ ๊ฒŒ์ž„ # 2022.03.13~2022.04.09 ๐Ÿš€ ๋ธ”๋ž™์žญ 1๋‹จ๊ณ„ ๊ธฐ๋Šฅ ์š”๊ตฌ์‚ฌํ•ญ ๋ธ”๋ž™์žญ ๊ฒŒ์ž„์„ ๋ณ€ํ˜•ํ•œ ํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌํ˜„ํ•œ๋‹ค. ๋ธ”๋ž™์žญ ๊ฒŒ์ž„์€ ๋”œ๋Ÿฌ์™€ ํ”Œ๋ ˆ์ด์–ด ์ค‘ ์นด๋“œ์˜ ํ•ฉ์ด 21 ๋˜๋Š” 21์— ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์ˆซ์ž๋ฅผ ๊ฐ€์ง€๋Š” ์ชฝ์ด ์ด๊ธฐ๋Š” ๊ฒŒ์ž„์ด๋‹ค. ํ”Œ๋ ˆ์ด์–ด๋Š” ๊ฒŒ์ž„์„ ์‹œ์ž‘ํ•  ๋•Œ ๋ฐฐํŒ… ๊ธˆ์•ก์„ ์ •ํ•ด์•ผ ํ•œ๋‹ค. ์นด๋“œ์˜ ์ˆซ์ž ๊ณ„์‚ฐ์€ ์นด๋“œ ์ˆซ์ž๋ฅผ ๊ธฐ๋ณธ์œผ๋กœ ํ•˜๋ฉฐ, ์˜ˆ์™ธ๋กœ Ace๋Š” 1 ๋˜๋Š” 11๋กœ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, King, Queen, Jack์€ ๊ฐ๊ฐ 10์œผ๋กœ ๊ณ„์‚ฐํ•œ๋‹ค. ๊ฒŒ์ž„์„ ์‹œ์ž‘ํ•˜๋ฉด ํ”Œ๋ ˆ์ด์–ด๋Š” ๋‘ ์žฅ์˜ ์นด๋“œ๋ฅผ ์ง€๊ธ‰ ๋ฐ›์œผ๋ฉฐ, ๋‘ ์žฅ์˜ ์นด๋“œ ์ˆซ์ž๋ฅผ ํ•ฉ์ณ 21์„ ์ดˆ๊ณผํ•˜์ง€ ์•Š์œผ๋ฉด์„œ 21์— ๊ฐ€๊น๊ฒŒ ๋งŒ๋“ค๋ฉด ์ด๊ธด๋‹ค. 21์„ ๋„˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ์›ํ•œ๋‹ค๋ฉด ์–ผ๋งˆ๋“ ์ง€ ์นด๋“œ๋ฅผ ๊ณ„์† ๋ฝ‘์„ ์ˆ˜ ์žˆ๋‹ค. ๋‹จ, ์นด๋“œ๋ฅผ ์ถ”๊ฐ€๋กœ ๋ฝ‘์•„ 21์„ ์ดˆ๊ณผํ•  ๊ฒฝ์šฐ ๋ฐฐํŒ… ๊ธˆ์•ก์„ ๋ชจ๋‘ ์žƒ๊ฒŒ ๋œ๋‹ค. ๋”œ๋Ÿฌ๋Š” ์ฒ˜์Œ์— ๋ฐ›์€ 2์žฅ..
๐ŸŽฐ๋กœ๋˜ ๊ฒŒ์ž„ (MVC ํŒจํ„ด) #2022.02.21~2022.03.05 ๐Ÿš€ ๊ธฐ๋Šฅ ์š”๊ตฌ์‚ฌํ•ญ ๋กœ๋˜ ๊ฒŒ์ž„ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค. ๊ทœ์น™์„ ๋ชจ๋ฅด๋ฉด ๊ฒ€์ƒ‰ํ•ด ๋กœ๋˜ ๊ทœ์น™์„ ์ฐพ์•„๋ณธ๋‹ค. ๋กœ๋˜ ๊ตฌ์ž… ๊ธˆ์•ก์„ ์ž…๋ ฅํ•˜๋ฉด ๊ตฌ์ž… ๊ธˆ์•ก์— ํ•ด๋‹นํ•˜๋Š” ๋กœ๋˜๋ฅผ ๋ฐœ๊ธ‰ํ•ด์•ผ ํ•œ๋‹ค. ๋กœ๋˜ 1์žฅ์˜ ๊ฐ€๊ฒฉ์€ 1000์›์ด๋‹ค. ๋กœ๋˜ ๋‹น์ฒจ ๊ธˆ์•ก์€ ๊ณ ์ •๋˜์–ด ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ๊ฐ€์ •ํ•œ๋‹ค. ์ˆ˜์ต๋ฅ ์„ ๊ณ„์‚ฐํ•ด ์ถœ๋ ฅํ•ด์•ผ ํ•œ๋‹ค. โœ๐Ÿป ์ž…์ถœ๋ ฅ ์š”๊ตฌ์‚ฌํ•ญ โŒจ๏ธ ์ž…๋ ฅ ๋กœ๋˜ ๊ตฌ์ž… ๊ธˆ์•ก ๋กœ๋˜ ๋‹น์ฒจ๋ฒˆํ˜ธ ๋กœ๋˜ ๋ณด๋„ˆ์Šค ๋ฒˆํ˜ธ ๐Ÿ–ฅ ์ถœ๋ ฅ ๊ตฌ์ž…ํ•œ ๋กœ๋˜ ๊ฐœ์ˆ˜๋งŒํผ ์ƒ์„ฑ๋œ ๋กœ๋˜๋ฒˆํ˜ธ ๋ชฉ๋ก 3๊ฐœ๋ฅผ ๊ตฌ๋งคํ–ˆ์Šต๋‹ˆ๋‹ค. [8, 21, 23, 41, 42, 43] [1, 3, 6, 7, 33, 37] [6, 16, 25, 29, 39, 45] ๋‹น์ฒจ ํ†ต๊ณ„ ๋‹น์ฒจ ํ†ต๊ณ„ -------------- 3๊ฐœ ์ผ์น˜ (5000์›) - 1๊ฐœ 4๊ฐœ ์ผ์น˜ (50000์›) - 0๊ฐœ 5๊ฐœ ์ผ์น˜ (1500000์›) ..
Could not find method testCompile() for arguments [{group=junit, name=junit, version=4.12}] ๋ฒ„์ „ ๋ณ€๊ฒฝ build.gradle plugins { id 'java' } group 'cleancode-study' version '1.0-SNAPSHOT' sourceCompatibility = 1.8 repositories { mavenCentral() } dependencies { testCompile group: 'junit', name: 'junit', version: '4.12' } dependencies { testCompile('org.junit.jupiter:junit-jupiter:5.4.2') testCompile('org.assertj:assertj-core:3.11.1') } test { useJUnitPlatform() }
[ERROR] - Could not find or load main class worker.org.gradle.process.internal.worker.GradleWorkerMain https://blue-mina.tistory.com/94 [ERROR] Intellij Could not find or load GradleWorkerMain ์—๋Ÿฌํ•ด๊ฒฐ ๊ฒ€์ƒ‰์–ด๋ฅผ ์ž˜๋ชป ์„ ํƒํ•œ๊ฑด์ง€ ๋ชฐ๋ผ๋„, ์ด ์—๋Ÿฌ๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค๊ณ  3์‹œ๊ฐ„์ด๋‚˜ ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค.. ์ธํ…”๋ฆฌ์ œ์ด๋Š” ์ฝ”๋“œ์ž‘์„ฑ์—๋Š” ํŽธํ•˜์ง€๋งŒ, ์ฑ…์ด๋‚˜ ๊ฐ•์˜๋ฅผ ๋”ฐ๋ผํ•  ๋•Œ ์„ธํŒ…์„ ์ž˜ ๋ชปํ•ด์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๋“ค์€ ํ•ด๊ฒฐ์ด blue-mina.tistory.com
[JAVA] test code ์ž‘์„ฑ๋ฒ• 1. build.gradle ํŒŒ์ผ์— ์ถ”๊ฐ€ dependencies { testCompile('org.junit.jupiter:junit-jupiter:5.4.2') testCompile('org.assertj:assertj-core:3.11.1') } test { useJUnitPlatform() } 2. ์˜ค๋ฅธ์ชฝ gradle tap > refresh 3. src ์•„๋ž˜์— testํด๋” ์ƒ์„ฑ > test ํด๋” ์•„๋ž˜์— javaํด๋” ์ƒ์„ฑ ํ›„ ์ž‘์„ฑ
๐Ÿ”จ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด๋ž€? : Business Logic ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง(๋„๋ฉ”์ธ ๋กœ์ง ๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง) ์œ ์ €์˜ ์š”์ฒญ์— ๋”ฐ๋ฅธ ๊ฒฐ๊ณผ๋ฌผ์„ ๋งŒ๋“ค์–ด๋‚ด๊ธฐ ์œ„ํ•œ ์ผ๋ จ์˜ ์ž‘์—…๋“ค(๋ฐ์ดํ„ฐ ์ž…๋ ฅ, ์ˆ˜์ •, ์กฐํšŒ ๋“ฑ ๊ฐ์ข… ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ) ํ”„๋กœ๊ทธ๋žจ์˜ ํ•ต์‹ฌ ๋กœ์ง. ์ฆ‰, ์–ด๋–ป๊ฒŒ ๋ฐ์ดํ„ฐ๊ฐ€ ์ƒ์„ฑ๋˜๊ณ  ์ €์žฅ๋˜๊ณ  ์ˆ˜์ •๋˜๋Š”์ง€๋ฅผ ์ •์˜ํ•œ ๊ฒƒ ์œ ์ € ๋ˆˆ์—” ๋ณด์ด์ง„ ์•Š์ง€๋งŒ, ์œ ์ €๊ฐ€ ๋ฐ”๋ผ๋Š” ๊ฒฐ๊ณผ๋ฌผ์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋„์ถœํ•˜๊ธฐ ์œ„ํ•ด ์š”๊ตฌ์‚ฌํ•ญ์— ๋งž์ถฐ ์ˆ˜์‹œ๋กœ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•„ ์–ผ๋งˆ๋‚˜ ๊น”๋”ํ•˜๊ณ  ์ฝ๊ธฐ ์‰ฝ๊ณ  ์œ ์ง€๋ณด์ˆ˜ํ•˜๊ธฐ ์‰ฝ๊ฒŒ ์งœ๋Š๋ƒ๊ฐ€ ์‹ค์ œ ํ”„๋กœ์ ํŠธ์— ํฐ ์˜ํ–ฅ์„ ๋ผ์นจ. ex) ํšŒ์›๊ฐ€์ž… ์•„์ด๋”” ์ค‘๋ณต ์ฒดํฌ. DB์— ์ ‘๊ทผํ•˜์—ฌ ์œ ์ €๊ฐ€ ์ž…๋ ฅํ•œ ์•„์ด๋””๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ์ ˆ์ฐจ ์ง„ํ–‰. ์ฆ‰, ์‚ฌ์šฉ์ž๊ฐ€ ์–ด๋–ค ์š”์ฒญ์„ ํ–ˆ์„ ๋•Œ, ๊ทธ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋‚ด๋ถ€์ ์œผ๋กœ ์ง„ํ–‰๋˜๋Š” ์ ˆ์ฐจ.
๐Ÿช“ MVC ํŒจํ„ด์ด๋ž€? : Model, View, Controller 1) User๊ฐ€ Controller๋ฅผ ์กฐ์ž‘ํ•œ๋‹ค. 2) Controller๋Š” Model์„ Manipulate(์กฐ์ข…)ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ–๊ณ ์˜จ๋‹ค. (์•Œ๋งž์€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ˆ˜ํ–‰) 3) ๊ฐ€์ ธ์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ View๋ฅผ ๊ฐฑ์‹ ํ•œ๋‹ค. 4) ๊ฐฑ์‹ ๋œ View๋ฅผ ์‚ฌ์šฉ์ž๊ฐ€ ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. - 2022.03.03 : lottoGame mvc ํŒจํ„ด ์žฌ ์ ์šฉํ•˜๋ฉฐ ์ดํ•ดํ•œ ๋‚ด์šฉ ์ปจํŠธ๋กค๋Ÿฌ ๊ทธ ์ž์ฒด์—์„œ view๋ฅผ ํ˜ธ์ถœํ•ด ์ž…๋ ฅ๋ฐ›๊ฒŒ ํ•˜๊ณ , ์—ฌ๊ธฐ์„œ ์ „๋‹ฌ๋ฐ›์€ ๊ฐ’์„ view ํ˜ธ์ถœํ•ด์„œ ์ถœ๋ ฅํ•ด์ฃผ๊ฑฐ๋‚˜ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ model ์˜์—ญ์œผ๋กœ ์ „๋‹ฌํ•ด์„œ ์›ํ•˜๋Š” ๊ฐ’์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  ๊ฐ’์„ ๊ฐ€์ ธ์™€์„œ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ view ํ˜ธ์ถœํ•ด ์ด ๊ฐ’์„ ์‚ฌ์šฉ์ž๊ฐ€ ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ์ถœ๋ ฅ. โ‘  model Application ์ •๋ณด, data DB์™€ ์ƒํ˜ธ์ž‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ๋ชฉํ‘œํ•˜๋Š” ์ž‘์—…์„ ์›ํ™œํ•˜๊ฒŒ ์ˆ˜ํ–‰..