-
코딩 사고법 : 프로그램은 Function(함수) 부품의 조립알라딘 코딩 2025. 3. 20. 13:22
같은말을 여러번 하는건 귀찮은 일입니다.
퇴근 후 한잔하는 맥주집에서 화장실 비밀번호는 종이에 적어서 잘 보이는 곳에 두지요, 매번 물어볼때 마다 말을 하기 귀찮으니까요.
책도 마찬가지 입니다. 이전의 XXX Page 의 내용을 참고하세요, 라고 적지 매번 같은 설명을 적지는 않지요.
프로그램에서의 함수도 마찬가지 역할을 합니다.
저쪽에 있는 이미 만들어 놓은 이러이러한 일을 하라고 지시하는 것이 함수를 호출하는 것 입니다.
매번 같은 코드를 여러번 적지 않아서 코드의 중복(사람으로 치면 같은 말 여러번 하지 않는것) 과 같습니다.
함수를 이용하면 코드의 중복을 없앨 수 있습니다.
그리고, 함수를 이용하면 프로그램의 기능들을 부품들로 만들고 그 부품들을 조립하는 식으로 만들 수 있습니다.
아무리 작은 복잡한 시계도 결국에는 각 기능을 하는 작은 톱니바퀴의 모임으로 만들어 집니다.
복잡한 자동차도 기능 모듈(엔진, 미션 등등)로 만들어지고 그 각 모듈들은 다시 작은 부품들로 만들어 집니다.
아무리 복잡한 기계라도 결국은 작은 부품들의 모임으로 만들어 집니다.
프로그램도 마찬가지 입니다. 많은 기능을 하는 복잡한 프로그램도 작은 Function 들의 모임으로 만들 수 있습니다.
이렇게 되면, 복잡한 문제를 작고 단순한 해결책의 모임으로 풀어나갈 수 있습니다.
프로그램 코딩에서 Function 을 만들어고, 이들 Function 들을 조합해서 전체 기능이 동작하게 하는 것은
다음의 두가지 이점이 있습니다.
- 반복해서 자주 사용되는 코드의 중복을 방지한다.
- 코드의 부품화를 통해, 복잡한 기능을 작은 단위 기능으로 나누어서 구현한다. (Divide-and-Conquer)
중복 코드의 방지
프로그램 내에서 여러곳에서 값들의 평균을 구해야 한다고 예를 들어 보겠습니다.
.
값들을 모두 더한다.
더한 값을 갯수로 나눈다.
.
.
값들을 모두 더한다.
더한 값을 갯수로 나눈다.
.
.
값들을 모두 더한다.
더한 값을 갯수로 나눈다.
.
.
값들을 모두 더한다.
더한 값을 갯수로 나눈다.
.
.
코드가 이와 같이 되어 있다고 하면 여러곳에 동일 코드가 반복됩니다.
이와 같이 코딩을 하게 되면.
- 평균을 구하는 코드에 오류가 있으면, 여러곳을 고쳐야 합니다.
- 반복되는 코드가 있기 때문에 코드를 보기도 귀찮아 지고, 소스 코드의 양도 많아 집니다.
이는 다음과 같이 평균값을 계산하는 함수를 만들어서 사용하면
평균 함수
{
값들을 모두 더한다.
더한 값을 갯수로 나눈다.
.
}
.
.
평균 함수 호출
.
평균 함수 호출
.
평균 함수 호출
.
위에서와 같이 함수를 만들어서 호출하는 식으로 코딩을 하면 중복코드를 여러번 적어야 하는 불편함이 없어집니다.
이렇게 작성을 하게 되면 평균을 구하는 함수에 오류가 있을 경우, 함수를 호출하는 코드는 변경하지 않고 평균을 구하는 함수의
구현 코드만 수정하면 됩니다.
함수를 호출하는 부분에 코드가 적어지고 단지 함수를 호출하기만 하면 되니 소스 코드가 훨씬 보기 좋아 집니다.
함수의 이름은 variable 의 이름을 만드는 규칙과 동일합니다. 내가 원하는 이름을 지어서 붙이면 됩니다.
함수 이름도 variable와 같이 그 이름만 봐도 무슨 기능을 하는 함수 인지 의미를 알수 있는 이름으로 정하는게 좋습니다.
코드의 부품화 (Divide and Conquer)
아무리 복잡한 기계도 여러가지 단순한 부품들로 만들어 집니다. 아무리 복잡해도, 결국은 작은 부품들의 모임입니다.
프로그램도 마찬가지 입니다.
아무리 복잡한 기능의 프로그램도 결국은 작고 단순한 기능들의 모임입니다. 이 작은 기능들이 함수입니다.
코딩을 하는 것은 ,
구현해야 하는 프로그램들이 어떤 기능들로 나뉘는지를 생각하고,
각 기능을 함수로 만든 후,
그 함수들을 조립하는 과정을 하는 것 입니다.
프로그램 코딩은 어떤 커다란 덩어리를 계속 쪼아서 작품을 만드는 조각이 아닙니다.
코딩은 작은 레고 조각들을 만들고 이 조작들을 조립해서 작품을 만드는 것과 같습니다.
전체적으로 아무리 복잡한 내용들도 작고 단순한 여러개의 기능들로 나누고,
그 기능들을 조합하는 식으로 접근을 하면 어려운 문제도 작은 문제들로 나누어서 풀어가는 식으로 해결해 나갈 수 있습니다.
이때 작고 단순한 기능에 해당하는 것이 함수 입니다.
작은 레고블럭에 해당하는 것이 함수 입니다.
프로그램 코딩은 이 작은 레고블럭(함수)도 만들고, 이 레고블럭들을 조립하는 것으로 생각할 수 있습니다.
이에 대해서는 다음글에 좀더 적겠습니다.
'알라딘 코딩' 카테고리의 다른 글
코딩 사고법 : 문제를 흐름으로 풀어내기, 잘게 쪼게서 흐름을 따라. (2) 2025.03.21 Variable(변수)와 데이터 종류 (2) 2025.03.19 어떤 프로그래밍 언어를 배우는 것이 좋을지 ? (2) 2025.03.16 코드(Code) , 코드 블록(Block), 블록내의 Variable (0) 2025.03.16 variable : 변수 -> 상태값 (1) 2025.03.13