2014-01-31 1 views
1

반환 할 데이터가 없을 때 보통 nil을 반환합니다. 예 :데이터를 반환 할 수 없다는 것을 나타 내기 위해 nil을 반환하는 것은 나쁜 습관입니까?

- (MyObject *)myMethod:(MyParam *)param { 
    MyObject *object = nil 
    if (param ok and there is enough data to calculate on) { 
     object = results of some calculations 
    } 

    return object; 
} 

하지만이 습관을 생각하는 동료 (자바 프로그래머와 객체 지향 순수 주의자)에 대한 논의에있어 오류가 발생하기 쉬운 또는 적어도 하나의 데이터 ISN 반환하는지 확인하는 조건문을 많이 얻을 수 아니야. 적절한 경우 NSError 매개 변수를 param과 함께 전달합니다.

당신의 생각은 무엇입니까? 더 좋은 방법이 있습니까?

+1

Dude Java is weird. 애플의 자체 클래스 중 일부는 Ex :'NSURL'을 사용한다. 우리를위한 표준 연습. – Amar

+0

중복 : http://stackoverflow.com/questions/1274792/is-returning-null-bad-design 및 http://stackoverflow.com/questions/1626597/should-functions-return-null-or-an-empty -object – san

+1

nil이 null이 아닙니다. – MdaG

답변

3

일반적으로 C에서 NULL 또는 0 또는 nullptr을 사용하는 C++를 사용하는 예입니다.

대체 방법은 무엇입니까? 의 일부 양식을 반환합니다. 잘못된 개체 인스턴스? 그 결과로 object.isValid 등을 호출하는 것과 같은 조건문이 생깁니다.

+0

"유효하지 않은 개체 인스턴스"가 제안 된 대체 방법 이었지만 사용자가 말한대로 조건문도 생성됩니다. – MdaG

2

OOP 순수 주의자는 nil을 반환하는 객체를 염두에두고 OOP 순수 객체를 염두에두고 있습니다. 자바와 같은 일부 언어에서는 null 객체를 사용하면 예외가 발생하지만 거기에서도 문제가 해결되는 것보다 더 많은 문제가 발생합니다.
Object C에서 nil을 반환하는 것은 수행중인 작업을 알고있는 경우 무조건 nil 객체를 안전하게 사용할 수 있기 때문에 수행해야하는 작업입니다 (예 : nil 객체에서 [obj method] 호출은 안전합니다).

관련 문제