티스토리 뷰

프로그램에서 함수는 기능을 처리 하기 위한 작은 단위로 하나의 기능만 처리해야 하지만 실제 함수에 여러 기능을 만들어서 라인 수가 많아 진다. 라인이 많으면 프로그램을 수정할 때 많은 잠재적 오류를 낼 수 있으며 복잡도가 높아져서 언젠가는 수정 불가능 할 정도가 된다. 어느 정도가 적당한 라인수 인가? 20라인 10라인 5라인... 라인수 보다는 함수 안에는 하나의 기능 있어야 한다는 것을 기억해야 한다. 하나의 기능으로 된 함수는 getter, setter와 같이 값을 설정하는 것을 제외하고 동사 수준으로 기능 코드는 5줄 미만이 되어야 하고 많아야 10줄 미만의 라인수를 의미한다. 

함수의 이름은 함수가 수행하는 기능을 표현할 수 있는 이름으로 작명을 해야 한다. 프로젝트의 도메인에 따른 용어 사전을 만들었으면 함수의 이름을  축약해서 작성할 수 있다. 이때는 표기법의 기준을 수립해서 축약으로 작성하면 된다, 용어 사전이 없으면 의미를 정확히 하기 위해서 축약을 사용하먼 안된다.

함수 내부에 조건식과 반복문이 많이 있으면 복잡도가 증가 하게 된다. 조건식 안에 조건식, 반복문안에 반복문, 조건식과 반복문이 엉켜있는 코드는 작성을 하지 말아야 한다. 기능이 복잡할 때는 어쩔 수 없어라고 코드를 작성하지만 곰곰이 생각하면 기능을 분리할 수 있고 각 기능을 함수로 만들고 메인 함수에서 나뉜 함수를 호출하는 방법으로 코드를 작성하면 복잡한 조건식이나 반복문을 읽기 쉽고 복잡도가 낮은 가독성이 뛰어나누코드를 만들 수 있다. 즉 기능을 단순화하여 분리해서 작은 기능의 함수를 만들어야 한다.

함수의 매개변수는 여러개를 작성하기보다는 3,4개 정도를 넘지 않게 하고 만약 넘게 된다면 값만 가지는 객체( 구조체)로 만들어서 사용해야 한다. 많은 매개변수는 코드가 복잡하게 만드는 원인이 된다. 또한 매개변수로 참조형을 사용해서 사용하고 리턴문을 사용하지 않으면 함수 내부에서 참조형의 값을 변경할 수 있어서 원하지 않는 결과를 얻을 수 있으므로 함수 내부에서 값을 생성하거나 수정이 있다면 생성된 값이나 수정되는 값은 반환해야 한다. 매개변수는 3, 4개 정도로, 많아 지면 객체로, 참조형 보다는 반환값을 만들어야한다.

정리하면 함수는 기능에 맞는 이름으로 작명하고, 매개변수는 3,4 개 정도로 하고 반환 값이 있는 단순히 하나의 기능을 담고 있어야 한다.