(MISRA-C 8๊ฐ•) ํ•จ์ˆ˜ ์„ค๊ณ„ ๊ทœ์น™๊ณผ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ ์ž‘์„ฑ

๐ŸŽฏ 8๊ฐ•: ์„ค๊ณ„ ๊ทœ์น™๊ณผ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ ์ž‘์„ฑ

์•ˆ๋…•ํ•˜์„ธ์š” ์—ฌ๋Ÿฌ๋ถ„! ๐Ÿ‘‹

์˜ค๋Š˜์€ ์šฐ๋ฆฌ๊ฐ€ ๋งค์ผ ์“ฐ๋Š” ํ•จ์ˆ˜(Function)๋ฅผ ์–ด๋–ป๊ฒŒ ์„ค๊ณ„ํ•ด์•ผ
MISRA-C์— ๋งž๋Š” ์•ˆ์ „ํ•˜๊ณ  ๊น”๋”ํ•œ ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š”์ง€ ์‚ดํŽด๋ณผ๊ฒŒ์š”. ๐Ÿš€


1. ํ•จ์ˆ˜ ์ธ์ž์˜ ๊ฐœ์ˆ˜ ์ œํ•œ โœ‹

ํ•จ์ˆ˜์— ์ธ์ž๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์œผ๋ฉด ์ฝ๊ธฐ๋„ ์–ด๋ ต๊ณ , ์‚ฌ์šฉํ•˜๊ธฐ๋„ ํž˜๋“ค์ฃ .
MISRA-C๋Š” ํ•จ์ˆ˜ ์ธ์ž์˜ ๊ฐœ์ˆ˜๋ฅผ 8๊ฐœ ์ดํ•˜๋กœ ์ œํ•œํ•  ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

// ๐Ÿšจ ๋‚˜์œ ์˜ˆ์‹œ
void process(int a, int b, int c, int d, int e, int f, int g, int h, int i);

// โœ… ์ข‹์€ ์˜ˆ์‹œ (๊ตฌ์กฐ์ฒด๋กœ ๋ฌถ๊ธฐ)
typedef struct {
    int a, b, c, d;
} Params;
void process(Params p);

๐Ÿ‘‰ ์ธ์ž๊ฐ€ ๋งŽ์•„์ง€๋ฉด ๊ตฌ์กฐ์ฒด๋กœ ๋ฌถ๊ฑฐ๋‚˜, ๊ธฐ๋Šฅ์„ ๋‚˜๋ˆ„์–ด ์„ค๊ณ„ํ•˜์„ธ์š”!


2. ์žฌ๊ท€ ํ˜ธ์ถœ ๊ธˆ์ง€ ๐Ÿ”„

์žฌ๊ท€(Recursion)๋Š” ๊น”๋”ํ•ด ๋ณด์ด์ง€๋งŒ, ์Šคํƒ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ์˜ ์œ„ํ—˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.
ํŠนํžˆ ์ž„๋ฒ ๋””๋“œ ํ™˜๊ฒฝ์—์„œ๋Š” ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ œํ•œ์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ์žฌ๊ท€๋Š” ๊ธˆ์ง€๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•„์š”.

// ๐Ÿšจ ๋‚˜์œ ์˜ˆ์‹œ
int factorial(int n) {
    if (n <= 1) return 1;
    return n * factorial(n - 1);
}

// โœ… ์ข‹์€ ์˜ˆ์‹œ (๋ฐ˜๋ณต๋ฌธ ์‚ฌ์šฉ)
int factorial_iter(int n) {
    int result = 1;
    for (int i = 2; i <= n; i++) {
        result *= i;
    }
    return result;
}

3. Side Effect ์—†๋Š” ํ•จ์ˆ˜ ์„ค๊ณ„ ๐Ÿงผ

Side Effect(๋ถ€์ˆ˜ ํšจ๊ณผ)๋ž€ ํ•จ์ˆ˜๊ฐ€ ์ž์‹ ์˜ ์ž…๋ ฅ๊ฐ’ ์™ธ์˜ ์™ธ๋ถ€ ์ƒํƒœ๋ฅผ ๋ฐ”๊ฟ”๋ฒ„๋ฆฌ๋Š” ๊ฒƒ์„ ๋งํ•ด์š”.
์˜ˆ๋ฅผ ๋“ค์–ด, ์ „์—ญ ๋ณ€์ˆ˜๋ฅผ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ I/O๋ฅผ ์ง์ ‘ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ํ•ด๋‹น๋ฉ๋‹ˆ๋‹ค.

MISRA-C์—์„œ๋Š” ํ•จ์ˆ˜๊ฐ€ ์ž…๋ ฅ → ์ถœ๋ ฅ์˜ ๊ด€๊ณ„๊ฐ€ ๋ช…ํ™•ํžˆ ๋“œ๋Ÿฌ๋‚˜๋„๋ก ์„ค๊ณ„ํ•˜๋Š” ๊ฑธ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

// ๐Ÿšจ ๋‚˜์œ ์˜ˆ์‹œ: ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ ์ „์—ญ ๋ณ€์ˆ˜ ์ˆ˜์ •
int g_counter = 0;
void increment() {
    g_counter++;  // ์™ธ๋ถ€ ์ƒํƒœ ๋ณ€๊ฒฝ (Side Effect)
}

// โœ… ์ข‹์€ ์˜ˆ์‹œ: ์ž…๋ ฅ/์ถœ๋ ฅ ๊ด€๊ณ„๊ฐ€ ๋ช…ํ™•
int increment(int value) {
    return value + 1;
}

๐Ÿ‘‰ ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํ•จ์ˆ˜๋Š” ์˜ˆ์ธก ๊ฐ€๋Šฅํ•˜๊ณ , ํ…Œ์ŠคํŠธํ•˜๊ธฐ๋„ ์‰ฌ์›Œ์ง‘๋‹ˆ๋‹ค!


๐ŸŽฏ ์˜ค๋Š˜์˜ ํ•ต์‹ฌ ์ •๋ฆฌ

ํ•จ์ˆ˜ ์ธ์ž๋Š” 8๊ฐœ ์ดํ•˜๋กœ → ๊ฐ€๋…์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ UP

์žฌ๊ท€ ํ˜ธ์ถœ์€ ๊ธˆ์ง€ → ์•ˆ์ „ํ•œ ๋ฐ˜๋ณต๋ฌธ ํ™œ์šฉ

Side Effect ์—†๋Š” ํ•จ์ˆ˜ ์„ค๊ณ„ → ์‹ ๋ขฐ์„ฑ๊ณผ ํ…Œ์ŠคํŠธ ์šฉ์ด์„ฑ ๊ฐ•ํ™”


๐Ÿ“ข ๋‹ค์Œ ํšŒ์ฐจ ์˜ˆ๊ณ 

๐Ÿ‘‰ MISRA-C์™€ ์ •์  ๋ถ„์„ ๋„๊ตฌ ํ™œ์šฉ ์ „๋žต ๐Ÿ› ๏ธ
“๊ทœ์น™์„ ์ž๋™์œผ๋กœ ๊ฒ€์‚ฌํ•ด์ฃผ๋Š” ๋„๊ตฌ ํ™œ์šฉ๋ฒ•”์„ ์•Œ์•„๋ด…๋‹ˆ๋‹ค. ๊ธฐ๋Œ€ํ•ด์ฃผ์„ธ์š”! ๐ŸŽ‰

๋ฐ˜์‘ํ˜•