티스토리 뷰
함수 및 인자 명명법에 대한 고찰
1. 기본 함수 정의
우리가 처음 배우는 함수명은 대부분 다음과 같은 형태입니다:
void foo();
void boo();
하지만 이러한 함수명은 그 목적과 기능을 전혀 알 수 없기 때문에 적절하지 않습니다. 함수가 어떤 동작을 수행하는지, 리턴 값이 무엇을 의미하는지 알 수 있도록 함수명을 명확하게 짓는 것이 필요합니다.
2. 리턴 값이 있는 함수
리턴 값을 사용하는 경우 함수명을 통해 그 역할을 더욱 명확하게 나타낼 수 있습니다:
bool foo(); // 성공 또는 실패를 리턴
LRESULT boo(); // 특정 결과 코드 리턴
3. 함수명 개선: 명확한 의미 전달
함수명이 동작을 명확히 나타내도록 개선해야 합니다. 예를 들어, 크기(size)를 반환하는 함수라면 다음과 같이 명명할 수 있습니다:
int GetSize(); // 크기를 반환하는 함수
bool IsTerminate(); // 종료 여부를 확인하는 함수
4. 인자 추가
함수에 인자를 추가하여 더 세부적인 동작을 수행하도록 합니다. 이 경우 함수명과 인자명을 보고 함수의 기능을 추론할 수 있어야 합니다:
int GetSize(TCHAR* Name); // TCHAR 포인터를 인자로 받음
int GetSize(std::string Name); // std::string을 인자로 받음
5. 인자명을 통한 타입 구분
인자명만으로도 변수의 타입을 알 수 있도록 하는 것이 중요합니다. 이를 위해 헝가리안 표기법을 사용할 수 있습니다:
int GetSize(TCHAR* szName); // 'sz'는 문자열을 의미
int GetSize(std::string ssName); // 'ss'는 std::string을 의미
6. 상수(const) 사용
불필요한 값 복사를 방지하고, 데이터를 변경하지 않겠다는 의도를 명확하게 하기 위해 const를 사용해야 합니다:
int GetSize(const TCHAR* szName); // 변경 불가한 문자열 포인터
int GetSize(const std::string& ssName); // 변경 불가한 문자열 참조
7. 함수 인자에서 __in
과 같은 매크로 사용
매크로를 사용하여 함수 인자가 입력(__in
), 출력(__out
), 입출력(__inout
)을 나타낼 수 있습니다. 이는 함수 내부에서 인자가 어떻게 사용되는지 명확히 알 수 있도록 도와줍니다:
int GetSize(__in const TCHAR* szName);
int GetSize(__in const std::string& ssName);
8. 입력과 출력을 명확히 표현하는 함수
입력과 출력이 명확히 구분되어야 하는 함수의 경우, 매크로와 함께 입력/출력 인자를 명확히 나타낼 수 있습니다. 예를 들어, 이름을 받아 전체 이름을 반환하는 함수는 다음과 같이 구현할 수 있습니다:
int GetFullName(__in const TCHAR* _pszName, __out TCHAR* _pszFullName);
이를 더욱 명확하게 하기 위해 버퍼 크기를 고려한 함수 정의는 다음과 같습니다:
int GetFullName(__in const TCHAR* _pszName, __out TCHAR* _pszFullName, __in int _nBufSize);
9. 완성된 함수 형태
입력과 출력, 그리고 참조형 변수에 대해 명확하게 표현한 최종 함수 형태는 다음과 같습니다:
int GetFullName(__in LPCTSTR _pszName, __out LPTSTR _pszFullName, __inout int& _nBufSize);
이 함수는 다음과 같은 동작을 합니다:
LPCTSTR
형식의 이름을 입력으로 받고,LPTSTR
형식의 버퍼에 전체 이름을 저장합니다._nBufSize
는 버퍼의 크기를 의미하며, 함수가 실행된 후에는 실제 저장된 문자열의 길이가 담깁니다.
10. 결론
함수와 인자를 명명할 때는 함수의 목적, 리턴 값, 인자의 타입과 역할이 명확히 드러나야 합니다. 이를 통해 다른 사람이 코드를 더 쉽게 이해하고 유지보수할 수 있습니다.
- 함수명은 그 기능을 명확히 나타내야 합니다.
- 인자명은 타입과 목적을 나타내야 합니다.
- 매크로를 활용해 함수 인자의 역할을 명확히 구분해야 합니다.
개발자는 다른 사람들이 볼 코드라는 점을 항상 염두에 두고, 코드를 간결하고 명확하게 작성해야 합니다.
- Total
- Today
- Yesterday
- 암호화
- C
- script
- 블루버블다이빙팀
- 서귀포
- C# 고급 기술
- Build
- C#.NET
- DLL
- OpenSource
- 스쿠버 다이빙
- PowerShell
- 패턴
- CMake
- 네트워크 정보
- 현포다이브
- 외돌개
- 제주도
- 블루버블
- Windows
- 서귀포블루버블
- 블루버블다이브팀
- C++
- Linux
- 울릉도
- 스쿠버다이빙
- 티스토리챌린지
- C#
- 오블완
- 성산블루버블
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |