문제

나는 아직도 프로그래밍에 매우 익숙하지 않으며 가능한 가장 깨끗한 코드를 작성하고 싶습니다.

이것은 어리석은 질문처럼 들릴지 모르지만 내 방법을 어떤 순서로 넣어야합니까? 물론 기능적으로는 중요하지 않지만 레이아웃은 큰 차이를 만듭니다. 따라서 한 클래스에 다음 코드가 있다고 가정합니다.

-(void)testCreateProjectWithStartDate {
    [self setUpTestCreateProjectWithStartDate];
    ...
}

-(void)setUpTestCreateProjectWithStartDate {
    testMOC = [self setUpInMemoryStore];
    [self mockOutXMLStoreForInMemoryStore];
}

- (NSManagedObjectContext *)setUpInMemoryStore {
    ...
    NSPersistentStoreCoordinator *coordMock = [self pscMock];
    ...
}

- (NSPersistentStoreCoordinator *)pscMock {
    ...
}

-(void)mockOutXMLStoreForInMemoryStore {
    ...
}

내가 호출되는 순서대로 주문한 방법이 있습니까? 수업 내 두 곳에서 메소드가 호출되면 어떻게됩니까?

이 코드 스 니펫은 나에게 완전히 엉망인 것처럼 보입니다. 매우 간단한 흐름이 무엇인지 알아 내기 위해 이것만큼 건너 뛰는 것이 매우 혼란 스럽습니다.

어떤 순서가 더 의미가 있습니까?

도움이 되었습니까?

해결책

방법을 그룹화 할 수있는 여러 가지 옵션이 있습니다.

  • 기능 별 (즉, 서로가 필요한 방법)
  • 가시성으로 (예 : 인터페이스에서 선언 된 공개 방법이 우선)
  • 이름으로 (예 : 메소드는 이름으로 정렬됩니다)

개인적으로 나는 그들의 기능을 통해 방법을 그룹화하는 것을 선호하므로 흐름을 추적하면 너무 멀리 점프 할 필요가 없습니다. 당신을 위해 점프하는 현대의 IDE가있는 것은 더 이상 큰 문제가 아닙니다.

특정 예에서는 가독성을 향상시키기위한 방법의 수를 줄일 수 있습니다. 메소드가 모두 매우 짧고 (2-3 줄) 한 곳에서만 호출되면 코드를 인화하고 일부 방법을 생략 할 수 있습니다.

다른 팁

나는 이것이 수업보다 방법에 대해 더 사실이라는 것을 알았습니다. 그러나 나는 그것을 충분히하지 않기 때문이라고 생각합니다. 충분히 짧게 유지하고 이와 같은 질문이 사라집니다.

따라서 방법의 경우 - 상단의 모든 변수를 초기화 할 것인지 또는 사용되는 위치 근처에 초기화할지 여부에 대한 질문이 오랫동안있었습니다 (답은 사용 된 위치에 가깝습니다, FWIW). 방법은 충분히 짧고 중요하지 않습니다. 그들이 사용되는 곳 근처 ~이다 상단에.

적어도 이론적으로는 수업에 대해서도 마찬가지입니다. 충분히 짧게 유지하고 내부 조직은 중요하지 않습니다 (제한적이고 불가능한 경우 : 클래스 당 하나의 방법, 선언하는 순서대로 자동입니다). 수업에 정리하는 방법이 너무 많으면 자신의 수업에 함께 속한 몇 가지 방법을 추출하는 방법을 생각해보십시오. 더 작습니다.

프로젝트/직장에 따라야 할 표준이 없다면 이에 대한 확실한 답이없는 것 같습니다. 개인적으로, 다른 표준을 따르지 않으면 생성자를 먼저, 소멸자 (들)를 먼저 배치합니다. 그 후, 나는 단지 메소드 이름으로 알파벳 순서로 넣었습니다. 나는 약간의 공룡 (카터 행정 이후 프로그래밍을 해왔다)이므로 객체 지향 프로그래밍에 대해 듣기 전에 기능에 대한 알파벳 접근 방식을 채택하고 물체를 시작했을 때 방금 가져 왔습니다.

나는 항상 다음과 같은 내 방법을 주문합니다.

첫 번째 생성자/소멸자, 그 다음 액세서, 그리고 다른 방법은 중요성으로 분류되었습니다.

중요한 방법 먼저 파일을 열면 가장 중요한 방법을 얻으려면 가장 적게 스크롤해야합니다.

Public/Protected/Private : Public First에 동일하므로 파일을 열 때 다른 파일에서 사용할 수있는 모든 것이 신속하게 표시됩니다.

나도이 문제가 있었다. 나는 수업의 역할을 기반으로 방법을 그룹화하려고 노력했다. 그 접근법은 실제로 많은 것을 드러내지 않기 때문에 실제로 작동하지 않습니다. 최근에 Objective-C에 대한 다음 규칙을 사용하기 시작했습니다.

방법은 initialize, init, dealloc, awakeFromNib 그리고 편의 방법 (즉, 클래스의 자동 출시 인스턴스를 반환하는 클래스 방법).

//initialze, init, dealloc, awakeFromNib
//convenience methods
//properties
//IBActions
//General public methods
//Delegate methods (eg NSResponder, NSTableview etc)
//Binding and notification call back methods
//private methods

나는 아직도 100% 확실하지 않다 ivar헤더 파일에서 s. 당분간 나는 메모리 관리 책임으로 주문하고 있습니다.

//IBOutlets
//other non-retained objects (eg delegates - these can most likely be labeled IBOutlet too)
//primative data types (no mm responsibilties)
//retained objects
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top