Skip to content

Latest commit

ย 

History

History
294 lines (162 loc) ยท 10.5 KB

Refactoring.md

File metadata and controls

294 lines (162 loc) ยท 10.5 KB

Refactoring

Android ๋ฆฌํŒฉํ† ๋ง์— ๋Œ€ํ•˜์—ฌ

์ž‘์„ฑ์ž : ๋ฐ•ํƒœ์ž„

Present Time : 2018โ€“08-09-THU


1. ์‹œ์ž‘

1.1 ๋ฆฌํŒฉํ† ๋ง์ด๋ž€?

๋ฆฌํŒฉํ† ๋ง์€ ๊ฒ‰์œผ๋กœ ๋“œ๋Ÿฌ๋‚˜๋Š” ์ฝ”๋“œ์˜ ๊ธฐ๋Šฅ์€ ๋ฐ”๊พธ์ง€ ์•Š์œผ๋ฉด์„œ ๋‚ด๋ถ€ ๊ตฌ์กฐ๋ฅผ ๊ฐœ์„ ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์†Œํ”„ํŠธ์›จ์–ด ์‹œ์Šคํ…œ์„ ์ˆ˜์ •ํ•˜๋Š” ๊ณผ์ •์ด๋‹ค. ๋ฒ„๊ทธ๊ฐ€ ์ƒ๊ธธ ๊ฐ€๋Šฅ์„ฑ์„ ์ตœ์†Œํ™”ํ•˜๋ฉฐ ์ฝ”๋“œ๋ฅผ ์ •๋ฆฌํ•˜๋Š” ์ •์ œ๋œ ๋ฐฉ๋ฒ•์ด๋‹ค.

* ๋ฆฌํŒฉํ† ๋ง์ด ์•„๋‹Œ ๊ฒƒ : -๋ฒ„๊ทธ๋ฅผ ์—†์• ๊ฑฐ๋‚˜ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋Š” ํ–‰์œ„

1.2 ๋ฆฌํŒฉํ† ๋ง์˜ ๋ชฉ์ 

์ปดํ“จํ„ฐ๊ฐ€ ์ธ์‹ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ๋Š” ๋ฐ”๋ณด๋ผ๋„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์ธ๊ฐ„์ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ๋Š” ์‹ค๋ ฅ ์žˆ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ๋งŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.



2. ๋ฆฌ์†Œ์Šค ๋ฆฌํŒฉํ† ๋ง

2.1 ๋ฆฌํŒฉํ† ๋ง ๋‹จ๊ณ„

colors.xml ๊ณผ dimens.xml ๋ถ€ํ„ฐ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

์™œ๋ƒํ•˜๋ฉด, style.xml ๊ณผ themes.xml ์ด color์™€ dimens์— ์˜์กดํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์•„๋ž˜ ์‚ฌ์ง„์„ ๋ณด๋ฉด style.xml์—์„œ color์™€ dimens์— ์˜์กด์„ฑ์„ ๊ฐ–๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

๋”ฐ๋ผ์„œ, ๋ฆฌ์†Œ์Šค๋ฅผ ๋ฆฌํŒฉํ† ๋งํ•  ๋•Œ๋Š” ๋จผ์ € ์ปฌ๋Ÿฌ์™€ ๋””๋ฉ˜์…˜(ํฌ๊ธฐ)์„ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

refactoring_1


2.2 colors.xml

colors.xml ์€ ์•ฑ์— ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ์ƒ‰์„ ์ •์˜ํ•œ๋‹ค.

์„น์…˜ ๋‚˜๋ˆ„์–ด ์ปฌ๋Ÿฌ ๊ด€๋ฆฌํ•˜๊ธฐ

๋‚˜๋Š” ์›๋ž˜ ๋ชจ๋“  ์ƒ‰์ƒ์„ ์ˆœ์„œ์—†์ด ์ •๋ฆฌํ•ด ๋‘์—ˆ๋Š”๋ฐ ์„น์…˜์„ ๋‚˜๋ˆ„์–ด ์ปฌ๋Ÿฌ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ข‹์€ ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ํ•œ๋‹ค.

Greyscales ๊ณผ Quipper colors ๋‘๊ฐ€์ง€ ์„น์…˜์œผ๋กœ ๋‚˜๋ˆˆ๋‹ค. (๋„ˆ๋ฌด ๋งŽ์€ ์„น์…˜์„ ๋งŒ๋“œ๋Š” ๊ฒƒ๋ณด๋‹ค๋Š” ๋‘๊ฐ€์ง€๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋‚˜๋ˆ„๋Š” ๊ฒƒ์œผ๋กœ๋„ ์ถฉ๋ถ„ํ•˜๋‹ค.)

colors_1

Greyscales ์„น์…˜์—๋Š” ํฐ์ƒ‰, ๊ฒ€์€์ƒ‰, ํšŒ์ƒ‰์„ ์ •์˜ํ–ˆ๋Š”๋ฐ, ๋„ค์ด๋ฐ ๊ทœ์น™์„ ์ž˜ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.

  1. grey1, grey2, grey3
  2. grey darker, grey lighter

2๋ฒˆ๊ณผ ๊ฐ™์ด ๋„ค์ด๋ฐ์„ ํ•˜๋ฉด ๋‹ค์–‘ํ•œ ํšŒ์ƒ‰ ์กฐ ์ƒ‰์ƒ์„ ์“ฐ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊ธฐ๋Š”๋ฐ, 'grey white', 'grey whiter', 'grey whitest' ๋กœ๋Š” ์ดํ•ดํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์— 1๋ฒˆ๊ณผ ๊ฐ™์ด ๋„ค์ด๋ฐ ๊ทœ์น™์„ ์ •ํ–ˆ๋‹ค.

(ํ•˜์ง€๋งŒ, ์ž์‹ ์—๊ฒŒ ๋” ์ฝ”๋”ฉํ•˜๊ธฐ ์‰ฌ์šด ๋„ค์ด๋ฐ ๊ทœ์น™์œผ๋กœ ์ •ํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™๋‹ค. )

Quipper colors ์„น์…˜์—์„œ๋Š” ์•ฑ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํŠน์ • ์ƒ์ƒ์„ ์ •์˜ํ•˜์˜€๋‹ค.

"warning", "danger" ๋“ฑ ๊ฐ™์€ ์ด๋ฆ„๋„ ์‚ฌ์šฉํ•˜๋ฉด ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๋‹ค.

colors_2



2.3 dimens.xml

dimens_base.xml ๊ณผ dimens.xml

dimens_base.xml ๊ณผ dimens.xml ๋‘ ํŒŒ์ผ์„ ์ •์˜ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

dimens_base.xml : ์•„์ด์ฝ˜, ํ…์ŠคํŠธ, ๋ฒ„ํŠผ ๋“ฑ ๊ธฐ๋ณธ ๊ตฌ์„ฑ์š”์†Œ์˜ ๊ธฐ๋ณธ ํฌ๊ธฐ๋ฅผ ์ •์˜

space, text, button, radius, elevation ๋“ฑ์œผ๋กœ ์„น์…˜์„ ๋งŒ๋“ ๋‹ค.

dimens_base

dimens.xml : ํŠน์ • ํŽ˜์ด์ง€์˜ ํฌ๊ธฐ๋ฅผ ์ •์˜

dimens

์ปฌ๋Ÿฌ์™€ ๋””๋ฉ˜์…˜์„ ๋ฆฌํŒฉํ† ๋ง ํ–ˆ์œผ๋‹ˆ ์ด์ œ ํ…Œ๋งˆ์™€ ์Šคํƒ€์ผ์„ ๋ฆฌํŒฉํ† ๋งํ•˜๋Ÿฌ ๊ณ ๊ณ ๊ณ ~~โ€ผ๏ธ



2.4 themes.xml

ํ…Œ๋งˆ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ฐ ์ปดํฌ๋„ŒํŠธ์˜ ์œˆ๋„์šฐ ๋ฐฑ๊ทธ๋ผ์šด๋“œ, ์ปฌ๋Ÿฌ, ์‚ฌ์ด์ฆˆ ๋“ฑ ๊ณตํ†ต ์†์„ฑ์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์Šคํ”Œ๋ž˜์‹œ ์•กํ‹ฐ๋น„ํ‹ฐ๋Š” ํˆฌ๋ช…ํ•œ ํ…Œ๋งˆ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฐฐ๊ฒฝ์ƒ‰์„ ํˆฌ๋ช…ํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.

themes.xml์€ styles.xml๊ณผ ๋น„์Šทํ•˜๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์™œ ๋‘˜์ด ๋ถ„๋ฆฌ๋˜์–ด ์žˆ๋Š” ๊ฒƒ์ผ๊นŒ?

๋‘˜์ด ๊ตฌ์กฐ๋Š” ๊ฑฐ์˜ ๊ฐ™์ง€๋งŒ styles.xml ์ด ์ข€ ๋” ๋นˆ๋ฒˆํ•˜๊ฒŒ ์—…๋ฐ์ดํŠธ๊ฐ€ ๋  ๊ฐ€๋Šฅ์„ฑ์ด ํฌ๋‹ค.

ํ…Œ๋งˆ๋กœ ์ ์šฉํ•˜๋ฉด ์ ์šฉํ•œ ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ๋ฒ”์œ„ (์•กํ‹ฐ๋น„ํ‹ฐ๋‚˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜) ์˜ ๋ชจ๋“  ๋‚ด์šฉ์ด ๋ณ€๊ฒฝ๋œ๋‹ค. ์Šคํƒ€์ผ์€ ๋” ๋กœ์ปฌ์ด๋‹ค.



2.5 styles.xml

style.xml์„ ํŒŒ์ผ ๋ช‡๊ฐœ๋กœ ๋ถ„๋ฆฌ.

styles_login.xml ์ด๋‚˜ styles_messages.xml ๋“ฑ ๊ณผ ๊ฐ™์ด ํŠน์ • ํŽ˜์ด์ง€๋ฅผ ์œ„ํ•œ ๋‹ค๋ฅธ ์Šคํƒ€์ผ์„ ๋งŒ๋“ ๋‹ค.

styles.xml ์—๋Š” ์•„์ด์ฝ˜, ํ…์ŠคํŠธ, ๋ฒ„ํŠผ ์ฒ˜๋Ÿผ ๊ธฐ๋ณธ ์Šคํƒ€์ผ์„ ์ •์˜ํ•œ๋‹ค.


2.5.1 styles.xml ์ด ๋ญ์ฃ ?

๋ฏธ๋ฆฌ ์†์„ฑ๋“ค์„ ์ •์˜ํ•ด๋†“๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ. ๋ ˆ์ด์•„์›ƒ์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

styles_1


2.5.2 (styles ๊ฟ€ํŒ) ์Šคํƒ€์ผ๋„ ์ƒ์†์ด ๊ฐ€๋Šฅํ•˜๋‹ค?!

. ์œผ๋กœ ์—ฐ๊ฒฐํ•ด์„œ ์Šคํƒ€์ผ์„ ์ƒ์†์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

๋‹ค๋ฅธ ์ปฌ๋Ÿฌ์˜ ๋ฒ„ํŠผ ์Šคํƒ€์ผ์ด ํ•„์š”ํ•˜๋ฉด Button.Primary ๋ฅผ ๋งŒ๋“ค๊ณ  ๋ฐฑ๊ทธ๋ผ์šด๋“œ์™€ ํ…์ŠคํŠธ์ปฌ๋Ÿฌ ์†์„ฑ๋งŒ ์ •์˜ํ•˜๋ฉด ๋œ๋‹ค.

์ง€๊ธˆ๊นŒ์ง€ ์ƒ‰์ƒ์ด ๋‹ค๋ฅด๊ฑฐ๋‚˜ ํฌ๊ธฐ๊ฐ€ ๋‹ค๋ฅด๋ฉด style์„ ๊ฐ๊ฐ ๋”ฐ๋กœ ๋งŒ๋“ค์–ด์„œ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ ์ƒ์† ๊ฐœ๋…์„ ์ด์šฉํ•˜๋ฉด ์ฝ”๋“œ๊ฐ€ ๋งŽ์ด ์ค„์–ด๋“ค๊ฒƒ ๊ฐ™๋‹ค.

styles_2



2.6 drawables

์ผ๋ฐ˜์ ์œผ๋กœ ์•ฑ์— ๋„ˆ๋ฌด ๋งŽ์€ drawable์ด ์žˆ์œผ๋ฏ€๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์–ด๋ ค์šด ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. ์‰ฝ๊ฒŒ drawable์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์ด๋ฆ„ ํ”„๋ฆฌํ”ฝ์Šค๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์•„์ด์ฝ˜ ์ด๋ฆ„์€

  • "๊ตฌ์„ฑ์š”์†Œ"๊ฐ€ ์•„๋‹ˆ๋ผ "๋ชจ์–‘"์„ ํฌํ•จํ•ด์•ผ ํ•œ๋‹ค.

    ์˜ˆ๋ฅผ๋“ค์–ด, ๋น„๋””์˜ค ํ”Œ๋ ˆ์ด ์•„์ด์ฝ˜์ด ์žˆ๋‹ค๋ฉด ์ด ์•„์ด์ฝ˜์€ ์‚ฌ์šด๋“œ ํ”Œ๋ ˆ์ด๋กœ๋„ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ic_video_play ๋ณด๋‹ค๋Š” ic_play๋ผ๊ณ  ์ด๋ฆ„ ์ง“๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

  • ์ปฌ๋Ÿฌ๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค.

    ์ด๋ฆ„์— ์ปฌ๋Ÿฌ๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š์€ ์ด์œ ๋Š” ํ‹ดํŠธ ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€ ๋ทฐ๋Š” ํ‹ดํŠธ ์†์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

drawable_namingrule

์ผ๋ฐ˜์ ์œผ๋กœ Drawable์„ ๋ฆฌํŒฉํ† ๋งํ•˜๋Š” ๊ฒƒ์€ ์–ด๋ ต๊ธฐ๋ณด๋‹ค๋Š” ๊ท€์ฐฎ์€ ์ผ์— ๊ฐ€๊น๋‹ค.

๋จผ์ €, ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋“œ๋กœ์–ด๋ธ”์„ ์‚ญ์ œํ•œ๋‹ค. ์• ์ดˆ์— ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋“œ๋กœ์–ด๋ธ”์„ ์—†์• ๋ฉด ๋ฆฌ๋„ค์ด๋ฐํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์„ ์“ฐ์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

๋‹ค์Œ ๋‹จ๊ณ„๋Š”, ๋ชจ๋“  ์•„์ด์ฝ˜ ์ด๋ฆ„์„ ๋ฆฌ๋„ค์ด๋ฐ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์•„์ด์ฝ˜์„ ๋ณ€๊ฒฝํ•œ ๋‹ค์Œ์œผ๋กœ๋Š” ๋‹จ๊ณ„์ ์ธ ๋ฆฌํŒฉํ† ๋ง์„ ์œ„ํ•ด ์ด๋ฏธ์ง€ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•œ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ ๋‹ค๋ฅธ ๋“œ๋กœ์–ด๋ธ”์„ ์กฐ๊ธˆ์”ฉ ๋ฆฌ๋„ค์ด๋ฐ ํ•œ๋‹ค.




3. ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง

3.1 ๋ฉ”์„œ๋“œ ์ •๋ฆฌ > ๋ฉ”์„œ๋“œ ์ถ”์ถœ (Extract Method)

๋ฆฌํŒฉํ† ๋ง์˜ ์ฃผ๋œ ์ž‘์—…์€ ์ฝ”๋“œ๋ฅผ ํฌ์žฅํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์ ์ ˆํžˆ ์ •๋ฆฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๊ฑฐ์˜ ๋ชจ๋“  ๋ฌธ์ œ์ ์€ ์žฅํ™ฉํ•œ ๋ฉ”์„œ๋“œ๋กœ ์ธํ•ด ์ƒ๊ธด๋‹ค.

์–ด๋–ค ์ฝ”๋“œ๋ฅผ ๊ทธ๋ฃน์œผ๋กœ ๋ฌถ์–ด๋„ ๋˜๊ฒ ๋‹ค๊ณ  ํŒ๋‹จ๋  ๋•Œ๋Š”, ๊ทธ ์ฝ”๋“œ๋ฅผ ๋นผ๋‚ด์–ด ๋ชฉ์ ์„ ์ž˜ ๋‚˜ํƒ€๋‚ด๋Š” ์ง๊ด€์  ์ด๋ฆ„์˜ ๋ฉ”์„œ๋“œ๋กœ ๋งŒ๋“ค์ž.

๋ฉ”์„œ๋“œ ์ถ”์ถœ ๊ธฐ๋ฒ•์€ ์ œ์ผ ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค. ๋ฉ”์„œ๋“œ๊ฐ€ ๋„ˆ๋ฌด ๊ธธ๊ฑฐ๋‚˜ ์ฝ”๋“œ์— ์ฃผ์„์„ ๋‹ฌ์•„์•ผ๋งŒ ์˜๋„๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์„ ๋•Œ, ๊ทธ ์ฝ”๋“œ๋ฅผ ๋นผ๋‚ด์–ด ๋ณ„๋„์˜ ๋ฉ”์„œ๋“œ๋กœ ๋งŒ๋“ ๋‹ค.

์ง๊ด€์ ์ธ ์ด๋ฆ„์˜ ๊ฐ„๊ฒฐํ•œ ๋ฉ”์„œ๋“œ๊ฐ€ ์ข‹๋‹ค. ์™œ๋ƒํ•˜๋ฉด

  1. ๋ฉ”์„œ๋“œ๊ฐ€ ์ ์ ˆํžˆ ์ž˜๊ฒŒ ์ชผ๊ฐœ์ ธ ์žˆ์œผ๋ฉด ๋‹ค๋ฅธ ๋ฉ”์„œ๋“œ์—์„œ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  2. ์ƒ์œ„ ๊ณ„์ธต์˜ ๋ฉ”์„œ๋“œ์—์„œ ์ฃผ์„ ๊ฐ™์€ ๋” ๋งŽ์€ ์ •๋ณด๋ฅผ ์ฝ์–ด๋“ค์ผ ์ˆ˜ ์žˆ๋‹ค.
  3. ์žฌ์ •์˜ํ•˜๊ธฐ๋„ ํ›จ์”ฌ ์ˆ˜์›”ํ•˜๋‹ค.

๊ธด ๋ฉ”์„œ๋“œ์— ์ต์ˆ™ํ•ด์ง„ ์‚ฌ๋žŒ์€ ์ž˜ ์ชผ๊ฐœ์ง„ ๊ฐ„๊ฒฐํ•œ ๋ฉ”์„œ๋“œ์— ์ต์ˆ™ํ•ด์ง€๊ธฐ๊นŒ์ง€ ์‹œ๊ฐ„์ด ์ข€ ๊ฑธ๋ฆฐ๋‹ค. ๋ฉ”์„œ๋“œ ๋‚ด์šฉ์ด ๊ฐ„๊ฒฐํ•œ ๊ฒƒ๋„ ์ค‘์š”ํ•˜์ง€๋งŒ, ํšจ๊ณผ๋ฅผ ๋ณด๋ ค๋ฉด ๋ฉ”์„œ๋“œ์˜ ์ด๋ฆ„๋„ ์ž˜ ์ง€์–ด์•ผ ํ•œ๋‹ค.



3.2 ๊ธฐํƒ€ ๊ฟ€ํŒ

3.2.1 Button1, Button2, Button3 โ€ฆ ๋กœ ์ด๋ฆ„์ง€์—ˆ์„ ๋•Œ

์ผ์ผ์ด 1,2,3,4 ๋ชจ๋‘ view๋ฅผ inflateํ•  ํ•„์š” ์—†์ด ์•„๋ž˜์™€ ๊ฐ™์ด + ๊ธฐํ˜ธ๋ฅผ ์‚ฌ์šฉํ•ด ํ•œ๋ฒˆ์— ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

refactoring_2


3.2.2 ์‚ผํ•ญ ์—ฐ์‚ฐ์ž

์กฐ๊ฑด์‹ ? ํ”ผ์—ฐ์‚ฐ์ž1 : ํ”ผ์—ฐ์‚ฐ์ž2

์กฐ๊ฑด์‹์˜ ์—ฐ์‚ฐ๊ฒฐ๊ณผ๊ฐ€ true ์ด๋ฉด ๊ฒฐ๊ณผ๋Š” ํ”ผ์—ฐ์‚ฐ์ž1์ด๊ณ  , ์กฐ๊ฑด์‹์˜ ์—ฐ์‚ฐ๊ฒฐ๊ณผ๊ฐ€ false ์ด๋ฉด ๊ฒฐ๊ณผ๋Š” ํ”ผ์—ฐ์‚ฐ์ž2 ์ด๋‹ค.

// 3ํ•ญ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ
int a = (5>4) ? 50 : 40;
// 3ํ•ญ ์—ฐ์‚ฐ์ž ๋Œ€์‹  if-else๋ฌธ์„ ์‚ฌ์šฉํ–ˆ์„ ๋Œ€
int a = 0;
if(5 > 4){
    a = 50;
}else{
    a = 40;
}
์•ˆ๋“œ๋กœ์ด๋“œ์—์„œ ์‚ฌ์šฉํ•œ ์˜ˆ
position = getArguments() != null ? getArguments().getInt("position") : 0;

3.2.3 for-each๋ฌธ

for each๋ผ๋Š” ๋ช…๋ น์–ด๊ฐ€ ๋”ฐ๋กœ ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ณ  ๊ธฐ์กด๊ณผ ๋™์ผํ•œ for๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ํ•˜์ง€๋งŒ, ๋ณดํ†ต ๋‹ค๋ฅธ ์–ธ์–ด์—์„œ for each๋ผ๊ณ  ๋งŽ์ด ํ•˜๋ฏ€๋กœ ์ž๋ฐ”์—์„œ๋„ ๋ณดํ†ต for each๋ฌธ์ด๋ผ๊ณ  ๋งํ•œ๋‹ค.

๋‹จ, for each๋ฌธ์€ ๋”ฐ๋กœ ๋ฐ˜๋ณตํšŸ์ˆ˜๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์ฃผ๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๊ณ , 1์Šคํ…์”ฉ ์ˆœ์ฐจ์ ์œผ๋กœ ๋ฐ˜๋ณต๋  ๋•Œ๋งŒ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋‹ค.

// ๊ธฐ์กด for ๋ฌธ
String[] numbers = {"one", "two", "three"};
for(int i=0; i<numbers.length; i++) {
    System.out.println(numbers[i]);
}
// for each ๋ฌธ ๊ตฌ์กฐ๋กœ ๋ณ€๊ฒฝ
String[] numbers = {"one", "two", "three"};
for(String number: numbers) {
    System.out.println(number);
}
๋‚ด ์ฝ”๋“œ์— ์žˆ๋Š” for๋ฌธ for each๋กœ ๋ฐ”๊ฟ”๋ณด๊ธฐ
// ๋ณ€๊ฒฝ์ „
for (int i = 0; i < reviewCnts.length; i++) {
    if (reviewCnts[i] > max) max = reviewCnts[i];
}
     
// ๋ณ€๊ฒฝํ›„
for(int reviewCnt : reviewCnts){
    if (reviewCnt > max) max = reviewCnt;
}

for๋ฌธ๋ณด๋‹ค for each๋ฌธ์ด ํƒ€์ดํ•‘์˜ ์–‘๋„ ์ž‘๊ณ  ๊ฐ€๋…์„ฑ์ด ๋” ์ข‹์€ ๊ฒƒ ๊ฐ™๋‹ค.



4. ๋งˆ๋ฌด๋ฆฌ

4.1 ์†Œ๊ฐ

๋ฆฌํŒฉํ† ๋ง์€ ๊ฑฐ์ฐฝํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค. ๋ณ€์ˆ˜๋‚˜ ๋ฉ”์„œ๋“œ์˜ ์ด๋ฆ„์„ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋ฐ”๊พธ๋Š” ๊ฒƒ๋„ ์ž‘์€ ๋ฆฌํŒฉํ† ๋ง์˜ ์˜ˆ๊ฐ€ ๋œ๋‹ค.

๊ฐœ๋ฐœ์ž๋กœ์„œ ์ฝ”๋“œ์˜ ํ’ˆ์งˆ์„ ์ƒ๊ฐํ•˜๊ณ , ํ˜‘์—…ํ•  ๋•Œ ๊ฐ™์ด ์ผํ•˜๋Š” ๊ฐœ๋ฐœ์ž๋“ค์„ ์ƒ๊ฐํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ๋ฆฌํŒฉํ† ๋ง์€ ๋”์šฑ ์ค‘์š”ํ•ด์งˆ ๊ฒƒ ๊ฐ™๋‹ค.

4.2 ์ถœ์ฒ˜

๋„์„œ

  • ๋ฆฌํŒฉํ† ๋ง : ์ฝ”๋“œ ํ’ˆ์งˆ์„ ๊ฐœ์„ ํ•˜๋Š” ๊ฐ์ฒด์ง€ํ–ฅ ์‚ฌ๊ณ ๋ฒ• (๋งˆํ‹ด ํŒŒ์šธ๋Ÿฌ ์ง€์Œ)

  • ์†Œํ”„ํŠธ์›จ์–ด ์•…์ทจ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๋ฆฌํŒฉํ† ๋ง : ๊ตฌ์กฐ์  ์„ค๊ณ„ ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋‚ด๋Š” ์ตœ์„ ์˜ ์‹ค์ฒœ๋ฒ• (๊ธฐ๋ฆฌ์‰ฌ ์„œ์•ผ๋‚˜๋ผ์•ผ๋‚˜ ์™ธ 2๋ช… ์ง€์Œ)

    โ€‹

์›น์‚ฌ์ดํŠธ