새로운 언어를 익힐 때는 보통 해당 언어의 코딩스타일 가이드라인을 찾아 보거나, 원 제작자(사)의 문서나 예제에 사용된 소스의 코딩 스타일을 사용하는 경우가 많습니다.

저는 아직까지 Objective-C에 익숙하지 않아서 시작할 때 부터 애플에서 많이 사용하고 권장하는 형식으로 습관을 들일려고 하고 있습니다. 그런데 사소한 것이지만 애플의 샘플코드나 Xcode에서 생성해 주는 소스코드를 보면 조금씩 차이를 보이며, 이는 같은 코드 내에서도 스타일이 조금씩 다른 경우를 볼 수 있습니다.

* 스타일 1
/Developer/Examples/QuickTime/QTKit/QTKitPlayer/MovieDocument.m
-  (BOOL)panel:(id)sender shouldShowFilename:(NSString *)filename
{
    if (isDir)
    {
        return YES;
    }
}
'{'과 '}'이 한라인을 차지하는 스타일은 Xcode의 C++을 사용하는 카본에서도 많이 볼 수 있습니다. 샘플 코드중에도 MS VC++의 MFC를 보는 듯한 코드를 자주 볼 수 있습니다. 아마 애플의 기존 C++ 프로그래머가 작성하지 않았나 하는 추측이 듭니다.

하지만 애플의 일반적인 코코아에 관련된 문서나 Xcode에서 생성해 주는 코드에는 이런 스타일은 흔하지 않은 것 같습니다.

* 스타일 2
/Developer/Examples/Quartz Composer/Applications/ImageFX/AppController.m
-  (BOOL)  performDragOperation:(id<NSDraggingInfo>)sender
{
    if(_sourceRef) {
        if(imageRef = CGImageSourceCreateImageAtIndex(_sourceRef, 0, NULL)) {
        }
    }
}
메소드의 '{'는 한 라인을 차지하고 메소드 내에서의 '{'는 같은 라인에서 사용하고 있습니다. if문 바로 뒤에 '('를 공백없이 사용하는 것과 타입(BOOL)과 함수명 사이에 공백을 둔 것을 제외하면 흔히 볼 수 있는 스타일 같습니다. 많은 예제와 Xcode가 생성한 코드, 그리고 많이들 보시는 Cocoa Programming for mac os x의 소스에서도 이 스타일을 사용하고 있습니다.

* 스타일 3
-  (void)setTitle:(NSString *)newTitle {

    if (instanceVar != newTitle) {
        [instanceVar release];

        instanceVar = [newTitle copy];
    }
}
요즘 나오는 예제들과 코드에서는 주로 위와 같이 사용하는 경우가 많은 것 같습니다. 위의 코드는 Coding Guidelines for Cocoa 문서의 뒷부분에서 발췌한 것인데, 아마 애플에서는 저런 스타일을 지향하는 것 같습니다.

제가 주의 깊게 보는 곳은 메소드의  '-' 뒤에 공백이 오는지와 반환타입과 메소드명 사이에 공백이 오는지의 여부인데요. 위와 같이 '-' 뒤에는 공백을 두고 나머지는 공백 없이 쓰는 것이 더 많은 것 같습니다. 
 
개인적으론 2번째 스타일에다 if 뒤에 공백을 하나 두는 방식이 편한 것 같은데, 더 알아 보면서 남들이 많이 쓰는 형식으로 쓸려고 합니다.

Xcode의 샘플이나 생성된 코드의 스타일에 조금씩 차이를 보이는 것이 애플이 아주 소소한 부분은 개발자들의 취향에 맡기는 것인지, 각자의 고집이 반영된 것인지는 잘 모르겠습니다.

코코아에서 Objective-C의 코딩스타일 가이드라인은 ADCCoding Guidelines for Cocoa 문서를 참조하실 수 있습니다.

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

Objective-C class의 특징  (2) 2008.03.17
C/C++ 사용자를 위한 간단한 Objective-C 소개  (17) 2007.05.14
AND