Objective - C 의 우아 한 이름
비고: 명명 규범 은 Effective Objective - C 2.0 이라는 책 도 참고 할 수 있 습 니 다.
There are only two hard things in Computer Science: cache > invalidation and naming things. 컴퓨터 과학 에 서 는 두 가지 어 려 운 일이 있 습 니 다. > 캐 시 실효 와 이름 -Phil Karlton
컴퓨터 언어 는 사람과 컴퓨터 간 의 통신 의 매개체 이다.좋 은 코드 는 사람 이 컴퓨터 에 말 하 는 것 처럼 자 연 스 럽 고 우아 해 야 한다.이름 을 짓 는 것 은 보기 에는 매우 간단 한 일이 지만, 흔히 간단 한 일 일수 록 잘 하기 어렵다. 그렇지 않 으 면 대사 들 도 이름 을 컴퓨터 계 의 어 려 운 문제 로 보지 않 을 것 이다.어떻게 Objective - C 라 는 컴퓨터 언어 를 우아 한 방식 으로 말 하 는 지, 아니면 엔지니어 가 그것 에 대한 이해 의 깊이 를 비교적 시험 하 는 것 입 니까?애플 의 SDK 에는 대량의 API 가 있 는데, 우 리 는 이러한 API 에서 이름 을 가 진 예술 을 체험 할 수 있다.
줄 임 말 감소
다른 사람의 코드 를 볼 때 각종 줄 임 말 을 몰라 서 그런 가?짧 은 이름 이 좋 긴 하지만 줄 임 말 을 남용 해 가 독성 을 잃 어 서 는 안 된다.
프로 세 스 화
이름 공간
각종 전역 작용 범위 의 함수, 상수, 클래스, 매 거, 구조 등 명칭 은 반드시 명칭 접 두 사 를 붙 여야 한다.Objective - C 에는 C + + 와 같은 이름 공간 개념 도 없고 자바 패키지 이름 개념 도 없 으 며, 프로젝트 코드 가 증가 함 에 따라 이름 충돌 이 불가피 하기 때문에 전역 적 역할 범위 의 이름 이 유일 해 야 합 니 다.비교적 고전적 인 방법 은 이름 접 두 사 를 붙 이 는 것 이다.대부분의 사람들 은 이름 접 두 사 는 클래스 앞 에 대문자 몇 개 를 붙 이 는 것 이 라 고 생각 하지만 사실은 그렇지 않다.
UIViewNSStringCGRect
UIApplicationDidFinishLaunchingNotificationCGRectZero
CGRectMakeCGPointMake
typedef NS_ENUM(NSInteger, UIViewAnimationTransition) {
UIViewAnimationTransitionNone,
UIViewAnimationTransitionFlipFromLeft,
UIViewAnimationTransitionFlipFromRight,
UIViewAnimationTransitionCurlUp,
UIViewAnimationTransitionCurlDown,
};
위 와 같은 몇 가 지 를 하면 이름 이 충돌 하지 않 을 정도 로 할 수 있다.
매개 변수 알림
방법 이름 을 지 을 때 매개 변수 앞 에 매개 변수의 이름 알림 을 추가 해 야 합 니 다.
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
- (void)performSegueWithIdentifier:(NSString *)identifier sender:(id)sender
대상 이름
수식 이 있 는 대상 에 게 이름 을 붙 일 때 는 형식 을 먼저 지정 하 는 것 이 아니 라 수식 + 형식 을 사용 해 야 합 니 다.많은 사람들 이 대상 의 유형 을 대상 의 이름 앞 에 놓 고 대상 이 어떤 유형 인지 표시 하 는 것 을 좋아한다. 이것 은 Objective - C 언어의 특징 에 부합 되 지 않 고 다른 의 미 를 일 으 키 기 쉽다. 예 를 들 어 UILabel 대상:
titleLabel // label, UIlabel
labelTitle //label ? NSString?
confirmButton //
buttonConfirm // , 。
방법 이름 맞 춤 법
대부분의 방법 은 아래 두 가지 로 나 눌 수 있 는데, 이 두 가 지 는 종종 남용 된다.그것들 은:
뭐 공부 해요?
'무엇 을 원 하 는가' 는 어떤 대상 을 얻 으 려 면 명 사 를 방법의 시작 으로 해 야 한 다 는 것 을 나타 낸다.'무엇 을 하 느 냐' 는 어떤 조작 을 집행 하 는 것 을 나타 내 고 동 사 를 방법 으로 시작 해 야 한다.아래 의 이 명명 방식 을 보십시오.
- (XXItem *)itemNamed:(NSString *)name //Good.
- (XXItem *)findItemWithName:(NSString *)name // , 。
findItemWithName
이 이름 은 대상 을 되 돌려 주지 않 고 작업 을 표시 합 니 다. 예 를 들 어 설정 류 의 내부 구성원 에 사용 할 수 있 습 니 다. 예 를 들 어:- (void)findItemWithName:(NSString *)name{ ... self.foundItem = xxx; ... }
get
'무엇 을 원 하 느 냐' 는 종종 get 으로 시작 하 는 방법 이 라 고 함부로 명명 된다.먼저 get 은 동사 이기 때문에 '무엇 을 하 느 냐' 거나 '무엇 을 하 느 냐' 고 말한다.그러면 get 방법 은 대상 을 되 돌려 주 는 데 사용 되 지 않 지만 매개 변수 에서 되 돌려 주 는 데 사용 할 수 있 습 니 다.
- (XXItem *)getItemAtIndex:(NSUInteger)index //Bad!!
- (XXItem *)itemAtIndex:(NSUInteger)index //Good,
- (void)getItem:(XXItem **)outItem atIndex:(NSUInteger)index // , 。
인지 성
호출 할 때 호출 자 는 호출 방법 에서 첫 번 째 매개 변수 에 호출 자 를 추가 할 수 있다 는 것 을 알 아야 합 니 다.
- (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions
- (void)buttonTapped:(UIButton*)sender
상수
전역 상수 에서 매크로 정 의 를 사용 할 수 없습니다. 매크로 로 정 의 된 알림, 키워드 등 을 자주 볼 수 있 습 니 다.사실 이렇게 하 는 것 은 매우 위험 합 니 다. 매크로 는 다시 정 의 될 수 있 고 서로 다른 파일 을 인용 하면 매크로 가 다 를 수 있 기 때문에 가능 한 한 const 를 사용 하여 상수 를 정의 합 니 다.
약간의 사고.
명명 의 좋 고 나 쁨 은 개발 에서 도 그다지 중시 하지 않 는 다. 왜냐하면 나 쁜 명명 도 프로그램 논리 에 영향 을 주지 않 기 때문이다.그러나 좋 지 않 은 이름 이 큰 프로젝트 에서 가 져 온 스텔스 유지 비용 은 상당히 높다. 이런 것들 은 프로젝트 를 시작 할 때 눈치 채 기 어 려 울 수도 있 고 나중에 앞 뒤 가 이어지는 유지 보수 곤경 에 빠 질 수도 있다.우 리 는 종종 프로젝트 논리의 복잡성 을 매우 중시 하지만 '간단 하 다' 는 이름 을 잘 지 을 수 없다.사실 간단 한 것 도 못 하면 아무리 복잡 한 것 을 만들어 도 쓰레기 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.