[TIL] ๐Ÿ“Ÿ ๊ณ„์‚ฐ๊ธฐ ํ”„๋กœ์ ํŠธ

YJinยท2025๋…„ 3์›” 4์ผ

[๋‚ด๋ฐฐ์บ  Spring 6๊ธฐ_TIL]

๋ชฉ๋ก ๋ณด๊ธฐ
7/56

1. ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ์‚ฌ์น™์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋Š” Java ๊ธฐ๋ฐ˜์˜ ๊ณ„์‚ฐ๊ธฐ ํ”„๋กœ๊ทธ๋žจ


๊ธฐ๋Šฅ

โœ… ์‚ฌ์น™์—ฐ์‚ฐ (๋ง์…ˆ, ๋บ„์…ˆ, ๊ณฑ์…ˆ, ๋‚˜๋ˆ—์…ˆ)
โœ… ํ˜„์žฌ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๊ฐ’ ๋ณด๋‹ค ํฐ ์ด์ „์˜ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๊ฐ’๋“ค ์ถœ๋ ฅ
โœ… ์˜ˆ์™ธ ์ฒ˜๋ฆฌ (์‚ฌ์šฉ์ž ์ž…๋ ฅ, ๋‚˜๋ˆ—์…ˆ etc.)
โœ… ์‹คํ–‰ ์ข…๋ฃŒ


์‹คํ–‰ ํ™”๋ฉด

image image

2. ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…

Git ์‚ฌ์šฉ ๊ด€๋ จ

README.md ์ƒ์„ฑ ํ›„ ์ถฉ๋Œ

โ›” ๋ฌธ์ œ

! [rejected]        main -> main (non-fast-forward)
error: failed to push some refs to 'https://github.com/.../'
  • github ์›๊ฒฉ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— README.md ์ƒ์„ฑ ํ›„, ๋กœ์ปฌ์—์„œ main์œผ๋กœ push ์‹œ๋„ ์‹œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉฐ push ๊ฑฐ๋ถ€
  • git pull ๋„ ๋™์ž‘ํ•˜์ง€ ์•Š์Œ

โ“ ์›์ธ

  • non-fast-forward: ๋กœ์ปฌ๊ณผ ์›๊ฒฉ ๋ธŒ๋žœ์น˜๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ์ปค๋ฐ‹์„ ํฌํ•จํ•จ.
    --> ์›๊ฒฉ์˜ README.md ์ƒ์„ฑ ์ปค๋ฐ‹์ด ๋กœ์ปฌ ๋ธŒ๋žœ์น˜ ์ปค๋ฐ‹ ๊ธฐ๋ก์—๋Š” ์กด์žฌ X

  • git pull ๊ฑฐ๋ถ€: pull ๋ช…๋ น์–ด๋Š” fetch+merge ์œผ๋กœ, merge๋Š” ๊ณตํ†ต๋œ commit ์ง€์ ์ด ์กด์žฌํ•ด์•ผ ๊ทธ ์ง€์ ๋ถ€ํ„ฐ ๋ณ‘ํ•ฉํ•จ.
    --> ์ฒซ ์ปค๋ฐ‹์ด๋ฏ€๋กœ ๊ณตํ†ต๋œ commit ์ง€์ ์ด ์—†์—ˆ์Œ

โ— ํ•ด๊ฒฐ

1. ๊ฐ•์ œ push

git push origin main --force
  • --forece ์˜ต์…˜์œผ๋กœ ๊ฐ•์ œ push
  • ๋กœ์ปฌ ๋ธŒ๋žœ์น˜์˜ ๋‚ด์šฉ์„ ์›๊ฒฉ ๋ธŒ๋žœ์น˜์— ๋ฎ์–ด์“ฐ๊ฒŒ ๋˜๋‹ˆ ์ฃผ์˜

2. ์—ฐ๊ด€ ์—†๋Š” ์ €์žฅ์†Œ ๋ณ‘ํ•ฉ ์˜ต์…˜

git pull origin master --allow-unrelated-histories
  • --allow-unrelated-histories ์˜ต์…˜์œผ๋กœ ์—ฐ๊ด€ ์—†๋Š” ์ €์žฅ์†Œ๋ผ๋ฆฌ ๋ณ‘ํ•ฉ

3. ์ถฉ๋Œ ํŒŒ์ผ ์ง์ ‘ ์ˆ˜์ •

  • ์ถฉ๋Œ ํŒŒ์ผ์„ ๋กœ์ปฌ์—์„œ ์ง์ ‘ ์ˆ˜์ •ํ•œ ํ›„ ๋‹ค์‹œ ์ปค๋ฐ‹ ์‹œ๋„
    --> ์ถฉ๋Œ๋‚œ ํŒŒ์ผ์ด ๋กœ์ปฌ์— ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์‹œ๋„๋Š” ํ•˜์ง€ ์•Š์Œ

  • ์ดˆ๊ธฐ ํ”„๋กœ์ ํŠธ ์„ค์ •์ด๋ฏ€๋กœ 1๋ฒˆ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ•์ œ push ํ•˜์˜€์Œ

  • ๊ทธ ํ›„ ์›๊ฒฉ์—์„œ ๋‹ค์‹œ README.md ์ƒ์„ฑ ํ›„ git pull์„ ํ†ตํ•ด ๋ฐ›์•„์˜ค๋Š” ๊ฒƒ์œผ๋กœ ์ถฉ๋Œ ํ•ด๊ฒฐ


์˜ˆ์™ธ ์ฒ˜๋ฆฌ

โ›” ๋ฌธ์ œ
ArithmeticCalculator ํด๋ž˜์Šค์—์„œ ์˜ˆ์™ธ ๋ฐœ์ƒ ์‹œ App ํด๋ž˜์Šค๊นŒ์ง€ ์˜ˆ์™ธ ์ „๋‹ฌ๋˜์ง€ ์•Š๋Š” ์ƒํ™ฉ

  • ์˜ˆ์™ธ ๋ฐœ์ƒ ์‹œ ๋‹ค์‹œ App ํด๋ž˜์Šค์˜ ํ”ผ์—ฐ์‚ฐ์ž ์ž…๋ ฅ ๋ถ€๋ถ„์œผ๋กœ ๋Œ์•„๊ฐ€์•ผ ํ•˜์ง€๋งŒ ์˜๋„๋Œ€๋กœ ๋™์ž‘ํ•˜์ง€ ์•Š์Œ

โ“ ์›์ธ

  • ArithmeticCalculator ํด๋ž˜์Šค ๋‚ด๋ถ€์—์„œ throws๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„ ์˜ˆ์™ธ ์ „๋‹ฌ์ด ๋˜์ง€ ์•Š์Œ

โ— ํ•ด๊ฒฐ

  • ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰ ํ๋ฆ„์„ ํŒŒ์•…ํ•˜์—ฌ, App ํด๋ž˜์Šค๊นŒ์ง€ ์˜ˆ์™ธ ์ „๋‹ฌ์„ ํ•˜์—ฌ ์˜ˆ์™ธ ๋ฐœ์ƒ ์‹œ ํ”„๋กœ๊ทธ๋žจ์ด ๋‹ค์‹œ ์ž…๋ ฅ๋ฐ›๋Š” ๋ถ€๋ถ„์œผ๋กœ ๋Œ์•„๊ฐˆ ์ˆ˜ ์žˆ๊ฒŒ๋” ๋ณ€๊ฒฝ


์ œ๋„ค๋ฆญ

์ œ๋„ค๋ฆญ ํƒ€์ž… ํ•œ์ • (extends Number)

โ›” ๋ฌธ์ œ

'ClassName'์€(๋Š”) abstract๋กœ ์„ ์–ธ๋˜๊ฑฐ๋‚˜ 'Number'์—์„œ ์ถ”์ƒ ๋ฉ”์„œ๋“œ 'intValue()'์„(๋ฅผ) ๊ตฌํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค
  • ์ œ๋„ค๋ฆญ ํด๋ž˜์Šค์— Number ํƒ€์ž… ํ•œ์ • ์‹œ ์œ„์™€ ๊ฐ™์€ ์—๋Ÿฌ ๋ฉ”์„ธ์ง€ ๋ฐœ์ƒ

โ“ ์›์ธ

public class ClassName <T> extends Number {
	...
}
  • ์ œ๋„ค๋ฆญ ํด๋ž˜์Šค ์„ ์–ธ ์‹œ, ๊บฝ์‡  ๋ฐ–์— extends ํ‚ค์›Œ๋“œ ์‚ฌ์šฉ
    ---> ํด๋ž˜์Šค ์ƒ์† ํ‚ค์›Œ๋“œ extends์™€ ํ˜ผ๋™

โ— ํ•ด๊ฒฐ

public class ClassName <T extends Number> {
	...
}
  • ๊บฝ์‡  ์•ˆ์— extends๋ฅผ ์„ ์–ธํ•˜์—ฌ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ œ๋„ค๋ฆญ ํƒ€์ž… ํ•œ์ • ์‚ฌ์šฉ



3. ๊ณ ๋ฏผํ•œ ๋ถ€๋ถ„ / ์–ด๋ ค์› ๋˜ ๋ถ€๋ถ„

Git ์‚ฌ์šฉ ๊ด€๋ จ

โœ… ๊ธฐ๋Šฅ ๋‹จ์œ„ ์ปค๋ฐ‹

ํŠœํ„ฐ ๋‹˜์—๊ฒŒ ๋ณต๊ตฌ๋‚˜ ์ถ”์ ์ด ํŽธํ•˜๊ฒŒ๋” ๊ธฐ๋Šฅ ๋‹จ์œ„๋กœ ์ปค๋ฐ‹์„ ํ•˜๋ผ๊ณ  ํ”ผ๋“œ๋ฐฑ ๋ฐ›์Œ.

๊ธฐ๋Šฅ ๊ฐœ๋ฐœ ์ค‘์— ๋ง‰ํžˆ๋ฉด ๋‹ค๋ฅธ ๊ธฐ๋Šฅ ์ž‘์—…์„ ํ•˜๋Š” ์Šต๊ด€์ด ์žˆ์—ˆ๋Š”๋ฐ, ์ฒด๊ณ„์ ์œผ๋กœ ์ž‘์—…ํ•˜์—ฌ ์ปค๋ฐ‹ ๋‹จ์œ„๋ฅผ ์ค€์ˆ˜ํ•˜๋ ค๊ณ  ํ•จ.
---> ์ปค๋ฐ‹ ๋กœ๊ทธ๋ฅผ ํ†ตํ•œ ์ž‘์—… ๋‚ด์—ญ ์ถ”์ ์ด ํŽธ๋ฆฌ

โœ… ์ปค๋ฐ‹ ์ปจ๋ฒค์…˜

์ปค๋ฐ‹ ๋ฉ”์„ธ์ง€ ์ž‘์„ฑ ์‹œ ์ปค๋ฐ‹ ์ปจ๋ฒค์…˜์„ ๋”ฐ๋ผ ์ด๋ฒˆ ์ปค๋ฐ‹์—์„œ ์–ด๋–ค ์ž‘์—…์„ ํ–ˆ๋Š”์ง€ ๋ช…์‹œ

Header : commit message
โ€ป Header: Feat, Fix, Refactor, Chore... etc.

โœ… Pull Request ์‚ฌ์šฉ

PR(Pull Request) ๋ฅผ ํ†ตํ•ด PR ๋ฉ”์‹œ์ง€ ์ปจ๋ฒค์…˜๊ณผ ๋ผ๋ฒจ, ์ž‘์—…์ž ์ถ”๊ฐ€ ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ์ตํžˆ๊ณ  ํ”„๋กœ์ ํŠธ์— ์ ์šฉ ์‹œ๋„ํ•จ


์˜ˆ์™ธ ์ฒ˜๋ฆฌ

โœ… ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ์ฑ…์ž„ ์œ„์น˜

์•ฑ ์‹คํ–‰ ํ๋ฆ„ (๐Ÿ”ดApp ํด๋ž˜์Šค, ๐ŸŸขArithmeticCalculator ํด๋ž˜์Šค)

๐Ÿ”ดํ”„๋กœ๊ทธ๋žจ ์‹œ์ž‘ --> ๐Ÿ”ด๋ฐ˜๋ณต (๐Ÿ”ด์‚ฌ์šฉ์ž ์ž…๋ ฅ --> ๐ŸŸข์—ฐ์‚ฐ --> ๐Ÿ”ด๊ณ„์‚ฐ ๊ฒฐ๊ณผ ์ถœ๋ ฅ --> ๐ŸŸข๋” ํฐ ์ด์ „ ๊ฒฐ๊ณผ๊ฐ’ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ --> ๐Ÿ”ด๋” ํฐ ์ด์ „ ๊ฒฐ๊ณผ๊ฐ’๋“ค ์ถœ๋ ฅ) --> ๐Ÿ”ด์ข…๋ฃŒ

---> throws๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ArithmeticCalculator์—์„œ App์œผ๋กœ ์˜ˆ์™ธ ์ „ํŒŒํ•˜์—ฌ ์ฒ˜๋ฆฌํ•˜๋„๋ก ์„ค๊ณ„

  • ArithmeticCalculator์—์„œ ์—๋Ÿฌ ๋ฐœ์ƒ ์‹œ App ์—์„œ๋„ ์—๋Ÿฌ ๋ฐœ์ƒ์„ ์ „๋‹ฌ ๋ฐ›์•„์•ผ ์ดํ›„์˜ ์‹คํ–‰ ๊ณผ์ • ์ƒ๋žตํ•˜๊ณ  ๋ฐ˜๋ณต๋ฌธ ์ดˆ๊ธฐ๋กœ ์ ํ”„ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ
  • ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๋ถ€๋ถ„ : ์ž…๋ ฅ(์—ฐ์‚ฐ์ž, ํ”ผ์—ฐ์‚ฐ์ž), 0์œผ๋กœ ๋‚˜๋ˆ„๊ธฐ etc.


Java ๊ฐœ๋…

โ—์ œ๋„ค๋ฆญ

  • ์ œ๋„ค๋ฆญ์ด ๋ณ€์ˆ˜ํƒ€์ž…์„ ๋ณ€์ˆ˜ํ™”ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๊ฐœ๋…์ด๋ผ๋Š” ๊ฒƒ์€ ์ดํ•ดํ–ˆ์œผ๋‚˜ ์‹ค์ œ ๊ตฌํ˜„์—์„œ ์–ด๋ ค์›€์„ ๊ฒช์Œ
  • ์ œ๋„ค๋ฆญ ์ ์šฉ ํ›„, incetanceof๋กœ ์ œ๋„ค๋ฆญ์œผ๋กœ ๋„˜์–ด์˜ฌ ์ˆ˜ ์žˆ๋Š” Integer, Double์„ ๊ตฌ๋ถ„ํ•˜์—ฌ ๊ฐ๊ฐ์— ๋งž๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•จ
  • ์ฒ˜์Œ์—๋Š” ํƒ€์ž… ์ฒดํฌ๋ฅผ ํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ƒ๊ฐ์„ ๋ชป ํ–ˆ๊ณ , ์ฝ”๋“œ๊ฐ€ ๋” ๊ธธ์–ด์ง€๋Š” ๊ฒƒ์— ๋น„ํšจ์œจ์ ์ด์ง€ ์•Š์€๊ฐ€ ๊ณ ๋ฏผํ•˜์˜€์Œ


โ—์ŠคํŠธ๋ฆผ

  • ์ž๋ฐ” ์ŠคํŠธ๋ฆผ์€ ์ƒ์„ฑ - ์ค‘๊ฐ„ ์—ฐ์‚ฐ - ์ตœ์ข… ์—ฐ์‚ฐ ๊ตฌ์กฐ
  • ํ˜„์žฌ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๊ฐ’๋ณด๋‹ค ๋” ํฐ ์ด์ „์˜ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๊ฐ’๋“ค์„ ์ถœ๋ ฅ ์‹œ์— ์‚ฌ์šฉ
  • for ๋ฌธ ์‚ฌ์šฉ์ด ๋” ์ต์ˆ™ํ•˜์ง€๋งŒ, ์ŠคํŠธ๋ฆผ์„ ์ปฌ๋ ‰์…˜์— ์ ์šฉํ•˜๋‹ˆ ์ฝ”๋“œ๊ฐ€ ๋ณด๋‹ค ๊ฐ„๊ฒฐํ•ด์ง


์ฐธ๊ณ 

https://inpa.tistory.com/entry/JAVA-%E2%98%95-%EC%A0%9C%EB%84%A4%EB%A6%ADGenerics-%EA%B0%9C%EB%85%90-%EB%AC%B8%EB%B2%95-%EC%A0%95%EB%B3%B5%ED%95%98%EA%B8%B0
https://maybe-b50.tistory.com/155

profile
๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ๋„ ๋ฝ์ด๋‹ค

0๊ฐœ์˜ ๋Œ“๊ธ€