๐Ÿ™…๐Ÿปโ€โ™€๏ธ ๋‹ˆ๋“ค์€ else ๊ฐ™์€๊ฑฐ ์“ฐ์ง€๋งˆ๋ผ

์˜ค์ธ๊ทœยท2020๋…„ 5์›” 27์ผ
83

๐Ÿค” else ์ข‹์€๋ฐ ๋ญ๊ฐ€ ๋ฌธ์ œ์•ผ?

else ์ž์ฒด๋Š” ์ฃ„๊ฐ€ ์—†๋‹ค. ๋‹ค๋งŒ, else๋ฅผ ํ”ผํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํ™ฉ์—์„œ else๋ฅผ ์“ฐ๋Š”๊ฒƒ์ด ๋ฌธ์ œ๋‹ค.

else๋ฅผ ์•ˆ์จ๋„ ๋˜๋Š”๊ณณ์—์„œ else๋ฅผ ๊ณ„์† ์“ฐ๋ฉด ~๋ผ๋ฉด, ~๋ผ๋ฉด์ด ์•„๋‹ˆ๋ผ๋ฉด, ~๋ผ๋ฉด์ด ์•„๋‹Œ๋ฐ์„œ ๋˜ ~๋ผ๋ฉด, ~๊ฐ€ ์•„๋‹Œ๋ฐ์„œ ๋˜ ~๊ฐ€ ์•„๋‹ˆ๊ณ  ~... ์ฒ˜๋Ÿผ ๋ณต์žกํ•œ ๋…ผ๋ฆฌ๊ฐ€ ๋“œ๋Ÿฌ๋‚˜๊ฒŒ๋œ๋‹ค.

๐Ÿค”๋ญ๊ฐ€ ๋ฌธ์  ์ง€๋Š” ์•Œ๊ฒ ๋Š”๋ฐ else๋ฅผ ์–ด๋–ป๊ฒŒ ์ค„์—ฌ?

else๋ฅผ ์ค„์—ฌ์ฃผ๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ํ…Œํฌ๋‹‰๋“ค์ด ์žˆ๋Š”๋ฐ ๊ทธ์ค‘์—์„œ๋„ ์˜ค๋Š˜์€ early return ๊ณผ early continue, early break๋ฅผ ์•Œ์•„๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

early return

early return์ด๋ž€ return์„ ๋นจ๋ฆฌ ํ•ด๋ฒ„๋ ค์„œ ๋’ท ์ฝ”๋“œ์˜ ๊ตฌ์กฐ๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ํŒจํ„ด์ด๋‹ค.

์˜ˆ๋ฅผ๋“ค์–ด์„œ ์ŠคํŠธ๋ง์„ ๋ฐ›์•„์„œ ์ŠคํŠธ๋ง์ด ์–ด๋–ค ํƒ€์ž…์ธ์ง€ ๋ฆฌํ„ดํ•˜๋Š” get_string_type ํ•จ์ˆ˜๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•˜์ž. ์•„๋ž˜์˜ ์ฝ”๋“œ๋Š” early return์ด ์ ์šฉ๋˜์ง€ ์•Š์€๋ฐ๋‹ค๊ฐ€ ๋ฆฌํ„ด์€ ํ•œ๊ณณ์—์„œ๋งŒ ํ•œ๋‹ค๋Š” ํ™˜์ƒ์˜ ์ฝ”๋”ฉ์Šคํƒ€์ผ์ด ๊ฒฐํ•ฉ๋œ ๊ฒฐ๊ณผ๋ฌผ์ด๋‹ค.

int get_string_type(char* string) {
    int ret;
    if (is_rule_1(string)) {
        ret = 1;
    } else {
        if (is_rule_2(string)) {
            ret = 2;
        } else {
            ret = 0;
        }
    }

    return ret;
}

์œ„์˜ ์ฝ”๋“œ๋Š” early return์„ ์ ์šฉ์‹œ์ผœ ๊น”๋”ํ•˜๊ฒŒ ์ •๋ฆฌ ํ•  ์ˆ˜ ์žˆ๋‹ค.

int get_string_type(char* string) {
    if (is_rule_1(string))
        return 1;
    if (is_rule_2(string))
        return 2;

    return 0;
}

ํ•จ์ˆ˜ ๋‚ด์—์„œ return์„ ํ•˜๋ฉด ๋’ค์˜ ์ฝ”๋“œ๋กœ ์ง„์ž…ํ•˜์ง€ ์•Š๋Š” ํŠน์„ฑ์„ ์ด์šฉํ•ด์„œ else { }๋กœ ๊ตฌ์„ฑ๋˜๋Š” ํ•˜๋‚˜์˜ compound statement ๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

๐Ÿคญ ์ด์ •๋„๋Š” ๋ด์ค„๋งŒํ•œ๋ฐ?

์ด์ •๋„ ์ฝ”๋“œ ๊ดœ์ฐฎ๋‹ค๊ณ  ๋„˜๊ธด๋‹ค ์น˜์ง€๋งŒ, ๋งŒ์•ฝ์— ์•ž์— ์ธ์ž๊ฐ€ ์ œ๋Œ€๋กœ ๋„˜์–ด์™”๋Š”์ง€ ์ฒดํฌํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ฝ”๋“œ์— ์ถ”๊ฐ€ํ•ด์•ผ ๋œ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ?

int get_string_type(char* string) {
    int ret;
    if (check_parameter_here) {
        ret = -1;
    } else {        
        if (is_rule_1(string)) {
            ret = 1;
        } else {
            if (is_rule_2(string)) {
                ret = 2;
            } else {
                ret = 0;
            }
        }
    }

    return ret;
}

์ด๋Ÿฐ ํ—ฌํŒŒํ‹ฐ๊ฐ€ ํŽผ์ณ์ง€๊ฒŒ ๋œ๋‹ค.

๋ฌดํ™˜else๋ฌธ

๋ฐ˜๋ฉด early return์„ ์ ์šฉํ•œ ์ฝ”๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ๋‹จ์ˆœํ•˜๊ฒŒ ์ž‘์„ฑ๋œ๋‹ค.

int get_string_type(char* string) {
    if (check_parameter_here)
        return -1;
    if (is_rule_1(string))
        return 1;
    if (is_rule_2(string))
        return 2;

    return 0;
}

ํŽธ์•ˆํ•˜๋‹ค!

early continue

ํ•จ์ˆ˜์—์„œ return์œผ๋กœ ํ๋ฆ„์„ ๋Š์„ ์ˆ˜ ์žˆ๋Š”๊ฒƒ์ฒ˜๋Ÿผ ๋ฐ˜๋ณต๋ฌธ์—์„œ๋Š” continue์™€ break๋กœ ํ๋ฆ„์„ ๋Š์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— early continue, early break๋„ ์ฝ”๋“œ๋ฅผ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ๋งŒ๋“ ๋‹ค.

if (condition) { a }
else { b } ๋Š” if (condition a) { a; continue; } b ๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค.

for () {
    if (condition a) {
        code1;
        code2;
        code3;
    } else {
        code4;
        code5;
        code6;
    }
}

์œ„์˜ ์ฝ”๋“œ๋Š” continue๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๋ฐ”๋€” ์ˆ˜ ์žˆ๋‹ค.

for () {
    if (condition a) {
        code1;
        code2;
        code3;
        continue;
    }
    code4;
    code5;
    code6;
}

๋…ผ๋ฆฌ ๋ฐ˜์ „์„ ์ด์šฉํ•œ early continue

"if(a) run b"๋ผ๋Š” ์ฝ”๋“œ๋Š” "if(!a) continue; run b" ๋กœ ๋ฐ˜๋ณต๋ฌธ ์•ˆ์—์„œ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค.

run b๊ฐ€ ํ•œ์ค„์งœ๋ฆฌ์ฝ”๋“œ์ด๋ฉด ์ „์ž๊ฐ€ ๋” ๊ฐ„๊ฒฐํ•˜์ง€๋งŒ b๊ฐ€ ์—ฌ๋Ÿฌ์ค„์ด๋ผ๋ฉด ๋ฐ˜์ „์‹œ์ผœ์„œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š”๊ฒƒ์ด ์ฝ”๋“œ๋ฅผ ๋” ๊ฐ„๊ฒฐํ•˜๊ฒŒ ๋งŒ๋“ ๋‹ค.

for () {
    for () {
        if (condition a) {
            code1;
            code2;
            code3;
            if (condition b) {
                code4;
                code5;
            }
        }
    }
}

๐Ÿ‘ฎ๐Ÿปโ€โ™€๏ธ TMI: if ๊ด„ํ˜ธ ์•ˆ์— ๋“ค์–ด๊ฐ€๋Š”๊ฑด ์‚ฌ์‹ค condition์ด ์•„๋‹ˆ๋ผ expression์ด๋ผ๊ณ  ํ•˜๋Š”๊ฒŒ ๋งž๋‹ค. (PL์‹œ๊ฐ„์— ๋ฐฐ์›€ใ… ใ… )

์œ„์˜์ฝ”๋“œ๋Š” condition a์—๋Œ€ํ•ด์„œ ๋…ผ๋ฆฌ ๋ฐ˜์ „ continue๋ฅผ ์‚ฌ์šฉํ•ด์„œ code1 ~ code5 ๊นŒ์ง€์˜ indent level์„ ํ•œ๋‹จ๊ณ„ ๋‚ด๋ฆด ์ˆ˜ ์žˆ๋‹ค.

for () {
    for () {
        if (!condition a) continue;
        code1;
        code2;
        code3;
        if (condition b) {
            code4;
            code5;
        }
    }
}

์œ„ ์ฝ”๋“œ๋Š” condition b์— ๋Œ€ํ•ด์„œ ํ•œ๋ฒˆ ๋” ๋ฐ˜์ „์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

for () {
    for () {
        if (!condition a) continue;
        code1;
        code2;
        code3;
        if (!condition b) continue;
        code4;
        code5;
    }
}


์‚ฌ์‹ค ์ฝ”๋“œ ์Šคํƒ€์ผ์— ์ •๋‹ต์€ ์—†๋‹ค. ๋•Œ๋กœ๋Š” indent level์ด ๊นŠ์–ด์ง€๋”๋ผ๋„ if else๋กœ ๋ช…ํ™•ํ•˜๊ฒŒ ๋…ผ๋ฆฌ๋ฅผ ๋“œ๋Ÿฌ๋‚ด๋Š”๊ฒƒ์ด ๋” ์ข‹์„ sudo ์žˆ์„๊ฒƒ์ด๋‹ค. ์Œ!

profile
๋„ค์ด๋ฒ„๋žฉ์Šค ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž

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

comment-user-thumbnail
2020๋…„ 5์›” 27์ผ

(๋Œ€์ถฉ ์—…๋ณดํŠธ ์ฐฐ์‹น ๋•Œ๋ฆฌ๋Š” ๋Œ“๊ธ€)

2๊ฐœ์˜ ๋‹ต๊ธ€
comment-user-thumbnail
2020๋…„ 6์›” 12์ผ

ํŽ€์ฟจ์„นํ•˜๊ตฐ์š”.

1๊ฐœ์˜ ๋‹ต๊ธ€
comment-user-thumbnail
2020๋…„ 6์›” 17์ผ

good

๋‹ต๊ธ€ ๋‹ฌ๊ธฐ
comment-user-thumbnail
2020๋…„ 6์›” 18์ผ

return ์€ ํ•œ๊ณณ์—์„œ ใ… 
๋ˆ„๊ตฌ๊ฐ€ ์ฒ˜์Œ ์ œ์•ˆ์„ ํ–ˆ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ
๋ณด๋ฉด ๋ณผ์ˆ˜๋ก ์žฌ๋ฏธ ์—†์Šต๋‹ˆ๋‹ค

early * ๊ฐœ์ธ์ ์œผ๋กœ ์ž˜ ํ™œ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค

๋‹ต๊ธ€ ๋‹ฌ๊ธฐ
comment-user-thumbnail
2020๋…„ 6์›” 27์ผ

early return ์ •๋ง ํด๋ฆฐ ์ฝ”๋“œ์˜ ์‹œ์ž‘์ด๋ผ๊ณ ๋„ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
์ฝ”๋“œ์˜ ๋…ผ๋ฆฌ์  ํ๋ฆ„๋„ ๊น”๋”ํ•˜๊ฒŒ ๋ถ„๋ฆฌ๋˜๋Š” ์ข‹์€ ๋ฐฉ์‹์ธ ๊ฒƒ ๊ฐ™๊ตฌ์š”, ๊ธ€ ์ž˜ ๋ดค์Šต๋‹ˆ๋‹ค ^^

1๊ฐœ์˜ ๋‹ต๊ธ€
comment-user-thumbnail
2020๋…„ 6์›” 28์ผ

ํŽ€ํ•˜๊ณ  ์ฟจํ•˜๊ณ  ์„น์‹œํ•œ ๋ฐฉ๋ฒ•์ด๋„ค์š”

1๊ฐœ์˜ ๋‹ต๊ธ€
comment-user-thumbnail
2020๋…„ 8์›” 30์ผ

Amazing!

1๊ฐœ์˜ ๋‹ต๊ธ€
comment-user-thumbnail
2023๋…„ 2์›” 26์ผ

I'm so happy when I read this post.
hurdle

๋‹ต๊ธ€ ๋‹ฌ๊ธฐ