함수의 목적
함수의 설계원칙을 들어가기 전, 함수의 쓰이는 이유부터 살펴봐야 되는데, 우선 함수의 쓰임은 도구로 쓰이는가, 부품으로 쓰이는가에 따라서 각각 SDK(소프트웨어개발키트)와 사용자 정의함수로 나뉜다고 했다. 그럼 함수로 만드는 이유는 뭘까?
첫 번째는 반복을 함수로 쓴다. 반복이라고 하면 이미 반복문이 있는데, 왜 함수를 쓰는가 하면, 반복횟수가 일정하지 않는(가변)경우엔 반복문이 용이하지 않다. 아에 그래서 구조를 함수로 간추려서, 불규칙한 반복을 함수로 바꿔 쓰는 것이다.
두 번째는 분할하기 위해 함수로 쓴다. UI(사용자 인터페이스)와 기능을 서로 분리하는 이유인데, 한 기능으로 뭉쳐있는 코드를 따로 쪼개는 목적으로 쓰는 것이다.
예로 들면 프로그램의 번역문제가 있는데, 어떤 프로그램을 다른 언어로 바꾸는 경우에(다르게 응용하는 경우) 분할을 해놨으면, 분할된 언어부분만 고치면 되지만, 분할시키지 않은 경우, 모두 바꿔야 하기에 유연하지 못하다.
함수 설계원칙
함수의 이름이 길어지더라도 이름에 기능을 명시해야 된다.(변수 이름붙이는 것과 비슷한 이유다) 그리고 코드가 같은 구조로 2회 중복되고, 다시 사용될 가능성이 있을 경우 함수로 만들어야 된다. 그리고 함수내부에 출력을 하지 말아야 된다.(분할의 목적을 생각하면 쉽다) 또한 매개변수가 너무 많으면 구조체(=배열과 뭉친 것 같지만, 뭉쳐있는 요소가 서로 다른 성질을 가지고 있다)활용을 하면 좋다. 그리고 함수가 너무 크게 되면 분할하는 것이 편하다. 자신이 라이브러리를 통째로 만들 경우에는 함수이름에 전치사를 붙이는 원칙도 있다.
예시
간단하게 이름을 입력받아 출력하는 문자로 코드를 짰다고 하자. 이때 이것의 기능은 영상에서처럼, 문자열을 조합하고, 동시에 출력하는 것이고, 사실 UI는 글자가 출력되는 부분 이고, 기능은 문자열 조합과 출력을 하는 행이라고 볼수 있다. 그 때 함수로 바꿔주면, 위의 2개의 행(printf로 입력하라는 문자를 출력하고, gets로 문자열을 입력받은 것)을 함수로 대체해도 되는 것이다. 이때의 자료형은 void으로 함수를 정해줘도 된다. 매개변수는 입력받는 값이 들어가는 변수의 포인터변수가 들어간다. 그렇게 코드에 함수를 짜여 맞춰줄 수 있는 것이다.
이 예제에서 포인터를 다룬 김에 영상에서는 포인터에 대해 복습이 들어갔다. 이 복습에서 중요히 알아야 할 점은, 배열과 포인터는 거의 같지만, 배열은 직접 있고, 포인터는 그걸 가리키기 때문에, 배열은 사용에 주로 쓰이고, 포인터는 관리에 치중해 있다. 이때의 자료형과 배열의 곱이 메모리의 바이트라는 것도 상식으로 알아두자.
'c언어 > 워딩(미정리)' 카테고리의 다른 글
문자열의 구분 및 문자 처리 함수 (0) | 2019.07.08 |
---|---|
매개변수 전달방식 (0) | 2019.07.08 |
함수의 문법, 호출 (0) | 2019.07.08 |
함수 (0) | 2019.07.08 |
다차원배열의 간접지정연산 (0) | 2019.07.08 |