Andrew Grant
그는 물었다 12년 전
4

/ Param 값이 인스턴스입니다 이름을 어떻게 해야 할까요?

새로운 것을 찾고, 오브젝티브-c (단, 장기 C/++) 의 조언을 프로그래머용 I& # 39 m / 권장안을 변수에 대한 명명 규칙.

내 개인 기본 약간만이라도 활용하기 위해서는 두 함수 내에서 명확성을 위해 기능, 예를 들어 com/go/4e6b330a_kr 접두어입니다 섀도잉 매개변수입니다. 그러나, 어떤 규칙이 아웃해야 I& # 39 m 팬으로 특성는 접두사 (않으면 또 접두어입니다 너회의 속성 이름을 사용할 수 있는 t # 39 doesn& 너무 잘 외모, 다프트). 마찬가지로 내가 &quot self.variable&quot, 사용할 수 있습니다. 내가 모든 것을 할 경우에 한해 재산이잖아 전당대회

39 의 이름 아래 코드는 what& 것을 선호하는 스타일 때문에 예를 들어 / 기능 com/go/4e6b330a_kr? 그리고 만약 당신이 어떻게 처리할 수는 없는 노릇, 섀도잉 don& # 39 의, 함수 params?

@interface GridItem : NSObject
{
    CGRect _rect;
    ...  
}
@end

-(void) initFromRect:(CGRect)rect
{
    _rect = rect;
    ...
}

건배!

답변 10 개

대부분의 코코아 프로젝트 '와' 인스턴스 변수를 사용하여 언더바 비호환성의 비사양 이부트레트 접미어입니다 이부트레트 '인스턴스 변수 "에 대한 접두어입니다 사용하지 않습니다.

이유는 don& 언더바스 사용할 때 ',' t # 39 의 인스턴스 변수 에로남이네 이부트레트 nib 파일을 로드되었는지 있으면 될 수 있는 방법, 세터 접속됨 setter) 를 차지해, 라고 합니다. 이 메커니즘을 사용하여 however not 높여줍니까 Key-Value 코딩, 그 이름은 밑돌아 이부트레트 언더바 (e.g. '_myField') 가 접두어로 not 않으면 설정할 수 있는 세터 () 은 똑같이 콘센트 (e.g. 'set_myField:') 는 비표준 및 더럽게시리!

또한, '아니다' 는 점을 유념하십시오 같은 속성을 사용하여 셀f.미프로프 동일합니까 액세스을 인스턴스 변수. 메시지를 보내고 있습니다 브래킷에서 표기법 같은 속성을 사용할 때 사용한 경우, 마찬가지로 ' [자체 미프로프]'. 모든 일은 모두 setter 와 getter 제공하십시오 특성는 간결한 지정을 위한 구문, 그들의 구축, 한 줄로 합성할 수 있습니다 실제로 단락 메시지가 없는 발송하십시오 메커니즘이다. 하지만 그 자체 '직접' 인스턴스 변수는 액세스하려면 스케쳐내 접두어입니다 함께 합니다 ',' 으로 취급할 수 있는 ',' 는 등 자체 포인터입니다 self-&gt 미프로프 정말 c 스타일 필드이므로 액세스입니다.

마지막으로, 헝가리, 그리고 다른 전위 표기법 같은 코드를 작성할 때 잘 사용하지 않는 코코아 멀리 &quot f"; 및 &quot m_"; - 코드를 가진 사람이 되는 의해 쓰여졌고, t # 39 로 표시하시겠습니까 doesn& &quot 프레젠테이션이든 it"; 이를 통해 다른 개발자들이 코코아 (cocoa) 가 생길 수 있고 볼 수 있다.

일반적으로 따라와야지 충고 [코딩 안내선 코코아] [1] 에서 [Apple Developer Connection] [2], 다른 개발자가 문서 선수단 및 수거 및 파악할 수 있을 것이라고 코드와 코드의 와 함께 사용할 수 있는 모든 코코아 런타임용으로 개발하십시오 사용하는 기능을 하는.

39, s 클래스를 사용하여 어떤 here& 창이 컨트롤러거 내 댁꽕 모양입니다.

// EmployeeWindowController.h
#import <AppKit/NSWindowController.h>

@interface EmployeeWindowController : NSWindowController {
@private
    // model object this window is presenting
    Employee *_employee;

    // outlets connected to views in the window
    IBOutlet NSTextField *nameField;
    IBOutlet NSTextField *titleField;
}

- (id)initWithEmployee:(Employee *)employee;

@property(readwrite, retain) Employee *employee;

@end

// EmployeeWindowController.m
#import "EmployeeWindowController.h"

@implementation EmployeeWindowController

@synthesize employee = _employee;

- (id)initWithEmployee:(Employee *)employee {
    if (self = [super initWithWindowNibName:@"Employee"]) {
        _employee = [employee retain];
    }
    return self;
}

- (void)dealloc {
    [_employee release];

    [super dealloc];
}

- (void)windowDidLoad {
    // populates the window's controls, not necessary if using bindings
    [nameField setStringValue:self.employee.name];
    [titleField setStringValue:self.employee.title];
}

@end

39 you& I& # 39 m, ll, 인스턴스 변수 '를 사용하여 한 것을 볼 수 있는' 내 '직접' 방법 '와' 디요크 참조입니다 부하예요 init 반면, 다른 방법을 사용하여 i& # 39 m 의. # 39 의 일반적으로 that& 좋은 가진 패턴을 속성: 터치 기반 인스턴스 변수 '에 있는 거라곤 속성에 대해' 의 setter 와 getter, 그 초기화 디요크 재산이잖아

[1]: http://developer.apple.com/documentation/Cocoa/Conceptual/CodingGuidelines/index.html &quot 코딩 안내선 Cocoa"; [2]: http://developer.apple.com/ &quot 애플 개발자 Connection";

Christopher Lloyd
그는 11년 전 댓글을 달았습니다
1

39 의 인스턴스 변수 이름 있는 apple& 위터스트비에프 m_.

Chris Hanson
그는 10년 전 댓글을 달았습니다
0

.and? # 39, t doesn& 가능하도록 할 수 있는 좋은 아이디어입니다. )

내가 크리스씨가 Hanson& # 39 의 조언을 따라 이와 관련해 밑줄 이바르 접미어입니다 underscore& 사용하여 # 39 에 대한 이부트레츠 나는한다 인정해야 하지만, 제가 잘 알려져 있다. 그러나 최근 '시작' 선언 '에 # 39, ve I& 이부트레트 @property' 라인을 따라 움직이는 내 [@mmalc& # 39 의 추천] [1]. 이제 내 모든 혜택을 에로남이네 밑줄 및 표준 KVC 세터 인스턴스 변수 (즉, '세트남필드') 이라고 부른다. 또한 don& # 39 에서 밑줄, 출구 이름 없는 인터페이스 빌더 ().

@interface EmployeeWindowController : NSWindowController {
@private
    // model object this window is presenting
    Employee *_employee;

    // outlets connected to views in the window
    NSTextField *_nameField;
    NSTextField *_titleField;
}

- (id)initWithEmployee:(Employee *)employee;

@property(readwrite, retain) Employee *employee;
@property(nonatomic, retain) IBOutlet NSTextField *nameField;
@property(nonatomic, retain) IBOutlet NSTextField *titleField;

@end

[1]: https://stackoverflow.com/questions/155964/what-are-best-practices-that-you-use-when-writing-objective-c-and-cocoa # 167495

Community
Chris Hanson
그는 11년 전 댓글을 달았습니다
1

이것은 실제로 내가 이제 뭘 IB& 이부트레트 대한 지원 덕분에 # 39 에 대해 다음과 같이 정의한다. )

계속 사용할 비사양 언더바 언더바 접두어입니다 사용할 수 있습니다) 에 이름을 인스턴스 변수 및 속성. 이렇게 합성된 접근자에 위한, 그냥.

@synthesize foo = _foo;

이 에서 컴파일러와의 foo 를 합성하는 데 사용하여 속성 the_foo 이바르.

직접 작성하는 방법을 사용할 수 있는 경우, 그러면 그냥 계속 비사양 언더바 접근자에 언더바 이바르 구축 및 메서드 이름.

내가 보고 접두사가 &quot _&quot 속성를 도입으로 필요 없음;; 수업 듣고 인스턴스 변수. 간단한 규칙을 설정할 수 있습니다 (설명됨 in your 헤더 파일) 을 통해 모든 변수를 액세스되어야 클래스 외부에 대해 메서드를 사용하여 클래스의 속성 또는 액세스되어야 함 사용자 정의 영향을 미칠 것으로 값. 것보다 훨씬 더 좋은 것 같다, 나한테 이런 이름이 &quot _&quot. 전면의 저들이요 한다. 또한 그들은 어떻게 캡슐화합니다 값을 제대로 제어할 수 있도록 바뀌었다.

개인적으로 이 기능을 사용하여 준수하십시오 코코아 명명 규칙 및 변수 및 낙타 케이스 낙타 케이스 대문자로 개체 이름 (없이 최고의 ns 물론).

내가 찾을 수 있는 사람이 쓸 수 있는 코드를 더 불투명도로 문자줄 접두사가 didn& # 39, t (이후 모두라뇨 변함없이 에서는 다른 접두사), 그리고 현대적인 축구를 IDE it& # 39 의 별로 어려운 장비가 something& # 39 의 유형:.

39, s been said 임무야, 반드시 what& 함께 읽을 수 있는 키 값을 코코아 문서용으로 관찰 호환일 명명. 이 같은 패턴을 엄격히 장기적으로 큰 도움이 될 것이다.

내가 사랑하는 동안, 나는 '선' 의 인스턴스 변수 때문에 몹시 싫어하다 @synthesize 먹어서나 밑줄 접두어입니다 사용하여 모든 복제에서는 (it& # 39 의 별로 없는 [그리고] [1]). 매크로를 제공할 수 있을 뿐 아니라, 내가 만든 이 코드 복제에서는. 따라서 대신:

@synthesize employee = _employee;

내가 쓴:

ddsynthesize(employee);

39 을 사용하여 매크로 토큰인지 붙여넣기 밑줄이 추가할 it& 단순 오른쪽:

#define ddsynthesize(_X_) @synthesize _X_ = _##_X_

39 리팩토링 도구를 Xcode& 줄 것이라는 게 유일한 문제, 정보기술 (it), s, t get renamed, 속성 이름을 바꿀 경우 won& # 39 에서 리팩토링.

[1]: http://en.wikipedia.org/wiki/Don & # 39 t_repeat_yourself.

내 스타일은 연기하다) 에서 사용한 하이브리드, 진짜 일:

내가 가장 유용한 접두어를 사용하는 in&quot "; 및 &quot out"; 함수 / 메서드입니다 매개변수입니다. 이렇게 하면 어떻게 알고 매개변수입니다 at-a-glance 위한 방법 및 인스턴스 변수 간의 충돌 방지 및 상행담관염이라고 매개변수입니다 (몇 번 본 적 &prs. &quot table"; 인스턴스 변수는 갈등을 같은 이름의). E. g.:

- (void)doSomethingWith:(id)inSomeObject error:(NSError **)outError;

그럼 내가 사용하는 베어 이름을 인스턴스 변수 및 속성 이름:

그럼 내가 사용하는 &quot the"; 이에 따라 지역 변수를 위한 접두어입니다. 스터블, 테우를, etc. 그리고 다시 이를 통해 지역 간 차별화합니다 인스턴스 변수.

내가 사용하는 다른 si 접두어를 사용한 후 다음과 같은 몇몇 스타일. k, g, E, s 에 대한 글로벌 대한 상수입니다 이넘 정역학.

39 의 스타일을 사용하여, ve been i& 이 같은 일이 12 년을 맞았다.

Steven Fisher
그는 11년 전 댓글을 달았습니다
0

대한 확신이 서지 않는 것, 하지만 난 결국 k, g, E, s 등 추가 및 초과됩니다.

앤드루: 실제로 많은 개발자를 코코아, 인스턴스 변수 t # 39 는 좁히어 don& 접두어를 사용하여 전혀. # 39 의 세계, s 도 it& 매우 일반적인 스몰토크 (실제 I& # 39; d 말하도다 it& # 39 의 인스턴스 변수를 사용할 수 있다, s 의 접두사는 거의 빨리 진행되는 듯하다).

맞아 그건 재생하느뇨 C++-ism 항상 나를 대한 전위 인스턴스 변수 C #, Java, 그 다음에는 더 있다. 이후 오브젝티브-c 는 C++, 자바, C # 은 대부분 평행합니다 신지애 등 전 세계 it 에 대해서, 그렇게 되면 나의 후속자 &quot cultural&quot 있다. 이에 대한 여러 세트의 개발자 사이의 차이를 볼 수 있습니다.

39 로 사용하는 모든 식별자입니다 때문에, 접두어 don& 내가 마음에 밑줄, C 와 C++ lionbridge 모두 사용하는 특정 밑줄 접두어 구축상의.

Self.variable&quot &quot 사용하는 것 같아요;; 는 않았다는거지

일반적으로 꾸밈 내가 사용하는 식별자 (없는 접두어 disk_b_s10database 접미어는) 의 인스턴스 변수. # 39, t 기억할 수 있는 경우 까다로워 can& 클래스 인스턴스 변수는 you& # 39, re in trouble. 그래서 단축시킵니다 acrobatconnectcentral. I& # 39 &quot 사용하여 rect";; d 이름으로 인스턴스 변수 및 &quot newRect"; 또는 &quot aRect"; 같은 매개 변수 이름.