AppleApp/Objective-C2010. 7. 6. 01:30
공동 프로젝트로 코딩을 하다보면 서로 서로 코드를 쉽게 보거나,
클래스, 변수 및 함수명의 충돌을 최소한으로 방지하기 위해  몇 가지 방침들을 정하게 된다.

Objective-C 또는 Objective-C++를 코딩함에 있어서도 Apple에서 정한 방침들이 있다.
애플에서 발행한 공식문서는 다음과 같다.(영문)
http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/CodingGuidelines/CodingGuidelines.html

중점 요소는 다음과 같다.
1. 클래스명과 함수명은 무조건 대문자로 시작한다. 그 외의 변수나 메서드명은 소문자로 시작한다.
인스턴스 생성을 비롯한 기타 사용시에 쉽게 알아보기 위함이다.

2. 함수는 선언부분 다음줄에서 중괄호를 열고, 나머지는 선언부분에서 중괄호를 연다.
함수(메서드) 정의는 그 다음에 중괄호를 열고 닫는다.
- (void) thisIsSample: (NSString *) string
{
NSLog(@"HelloWorld");
}
그 외의 경우(@interface, if문, for문 등..)에는 문장 표현이 있는 있는 줄에서 중괄호를 연다.
@interface refrigerator: NSObject {
NSInteger *temperatureInside;
NSInteger *temperatureOutside;
}
- (void) thisIsSample: (NSString *) string;
- (void) cool:
@end
이렇게 코딩하는 까닭은, C와 달리 Objective-C의 문법상 함수 인자가 늘어날수록 서두가 매우 길어지는 현상 때문이다.
예를 들어 C에서는 다음과 같이 표현하는 것을,
void helloworld(chr1, chr2, chr3, chr4, chr5, chr6, chr7, chr8, chr9, chr10) {
printf(chr1, chr2, chr3, chr4, chr5, chr6, chr7, chr8, chr9, chr10);
}
Objective-C에서는 다음과 같이 표현한다.
(현재 메서드 형태로 구현했는데, 그 까닭은 Objective-C가 C를 상속하기 때문에 메서드가 아닌 일반 함수는 C의 문법을 따르기 때문이다. - 이는 Objective-C가 문법상 일관성이 없다는 비판을 받기도 하는 이유이기도 한데, 이렇게 문법이 작성된 까닭은 최대한 C의 형태를 피함으로써 C와 Objective-C로 작성된 구간을 구분할 수 있도록 하기 위함이다.)
- (void) helloworld: (NSString *)chr1 second: chr2 third: chr3 forth: chr4 fifth: chr5 sixth: chr6 seventh: chr7 eighth: chr8 ninth:chr9 tenth:chr10
{
NSLog(@"%@%@%@%@%@%@%@%@%@%@", chr1, chr2, chr3, chr4, chr5, chr6, chr7, chr8, chr9, chr10);
}

위의 두 가지 사항만 명심하고 작성해도 프로젝트를 진행함에 있어서 큰 껄끄러움은 줄어들 것이라고 생각한다.

C 코딩시 적용하던 상식은 여기서도 당연히 적용한다.
1. 상수는 대문자로 표시한다.

'AppleApp > Objective-C' 카테고리의 다른 글

Objective-C에서의 객체 인스턴스 해제  (0) 2010.07.07
Posted by 마이클