함수가 필요할때

드디어 10강에 안착했다.

이제부터 함수에 대해 자세하게 공부하겠다. 그전에 함수가 필요한지, 즉 언제 함수가 필요한지에 대해 알아보고 시작하겠다.

큰 프로그램을 만들때는 두가지 관점을 관철해야 한다.

  1. 일반화의 관점 - 더 많은, 더 다양한 환경과 변수 하에서 작동 가능해야한다.
  1. 단순화의 관점 - 같은 기능이 중복되어서 나타나면 안된다. 유지보수가 어려워짐

단순히 효율과 결과에만 집중하지 말고, 위의 두가지 관점을 계속 생각하며 코딩하라.

다음의 두 예제코드를 보자.

1번

int main() {
	printf("********************");
	printf("    Jo_Hyeon_Jin\\n");
	printf("    Kimje, Korea\\n");
	printf("********************");

	return 0;
}

2번

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>

#define WIDTH 20
#define NAME "Jo_Hyeon_Jin"
#define ADDRESS "Kimje, Korea"

void print_bar(int n_stars)
{
	for (int i = 0; i <= n_stars; i++) {
		printf("*");
	}
	printf("\\n");
	
}

int main()
{
	print_bar(WIDTH);
	printf("    %s\\n", NAME);
	printf("    %s\\n", ADDRESS);
	print_bar(WIDTH);

	return 0;

}

1번과 2번은 동일한 결과를 내놓지만 구성은 아예 다르다. 2번은 별의 개수와 명함에 들어갈 내용을 수정가능. 즉 명함을 만든다는 핵심적인 기능만 유지한 채, 그 안에 들어갈 구성요소는 언제든지 수정가능하게 만든 더 General한 코드인 것.

1번 코드를 2번코드와 같이 만드는것을 Refactoring이라고 함. 코드를 작성할때 1번처럼 만든 후, 기능을 하나하나 Refactoring하면서 동시에 실행결과가 계속 같다는걸 확인하면서 만드는 기법이 있음.