본문 바로가기
[Effective Objective-C] #3 메서드보다는 같은 일을 하는 리터럴 문법을 사용하라 [Effective Objective-C] #3 메서드보다는 같은 일을 하는 리터럴 문법을 사용하라 출처 : Effective Objective-C -NSString, NSNumber, NSArray, NSDictionary 인스턴스 모두 리터럴 문법을 지원한다. -리터럴 문법을 사용하면 소스 코드 크기가 줄고 코드가 읽기 쉬워진다. 리터럴 숫자 -정수, 실수, 불린 값을 Objective-C 로 감쌀(wrapping) 필요가 있다.이는 숫자 타입을 다룰 수 있는 NSNumber 클래스를 이용해 할 수 있다. -리터럴을 쓰지 않으면 다음과 같이 생성한다.NSNumber *number = [NSNumber numberWithInt:1]; 그러나 리터럴을 사용하면 이렇게 간단하다.NSNumber *numbe.. 2017. 7. 20.
[Effective Java] 지나친 동기화는 피하자 [Effective Java] 지나친 동기화는 피하자 - 지나친 동기화는 성능을 저하시키고 교착상태(dead lock)을 유발시키며, 심지어 예기치 않은 행동을 초래할 수 있다. - 동기화된 메소드나 블록 안에서 절대로 클라이언트에게 제어권을 넘기면 안 된다. 즉, 동기화된 영역 내부에서는 오버라이딩된 메소드를 호출하지 않아야 하며, 함수 객체의 형태로 클라이언트가 제공하는 메소드도 호출하지 말아야 한다. 동기화된 영역을 갖는 클래스의 관점에서 그런 메소드들은 매우 이질적인 녀석들이다. 그 메소드가 무슨 일을 하는지 알지 못하며, 이질적인 일을 하는 것을 제어하지도 못한다. 외계인 메소드가 하는 일에 따라 다르겠지만, 동기화된 영역에서 그 메소드를 호출하면 예외나 dead lock 또는 데이터 손상까지 .. 2017. 3. 9.
[Effective Java] 잘 판단해서 최적화하자 [Effective Java] 잘 판단해서 최적화하자 - 최적화에 대한 명언이 있다. 더 많은 컴퓨팅 죄악이 다른 어떤 한 가지 이유(무지로 인한 어리석음을 포함해서)보다는 효율성(달성이 안 되는)의 이름으로 저질러진다. 사소한 효율성은 잊어야 한다. 97%의 시간에 대해 논하자. 성급한 최적화는 모든 죄악의 근원이다. 최적화에 관한 두 가지 규칙을 따르자. 규칙 1. 하지 말자. 규칙 2. (전문가에 한해서). 아직 하지 말자. 정말 최적화되지 않은 솔루션이 있을 때까지는. - 성급한 최적화는 얻는 것보다 잃는 것이 더 많기 쉽다. 최적화를 하면서 빠르지도 않고 제대로 동작하지도 않으며, 문제를 쉽게 해결하기도 어려운 소프트웨어를 만들기도 쉽다. - 성능 때문에 훌륭한 아키텍쳐 원리를 포기하지 말자. .. 2017. 2. 16.
[Effective Java] 매개 변수가 유효한지 검사하기. [Effective Java] 매개 변수가 유효한지 검사하기. - 대부분의 메소드와 생성자는 자신들의 매개 변수로 전달될 수 있는 값에 제한을 둔다. 그런 모든 제약은 명확하게 문서화해야 하며, 메소드 몸체 코드의 맨 앞에서 검사하도록 해야 한다. 이것은 에러가 발생한 후 가능한 빨리 검출해야 한다는 일반적 원칙의 특별한 경우이다. 만일 사전 검사에 실패하면 에러의 검출이 불확실하게 되고, 에러가 생긴 소스 코드를 찾기가 더욱 어려워진다. - public 메소드의 경우는 javadoc 의 @throws 태그를 사용해서 매개 변수 값의 제약을 위반했을 때 발생되는 예외를 문서화한다. 일반적으로 IllegalArgumentException, IndexOutOfBoundsException, NullPointe.. 2017. 1. 9.
[Effective Java] 클래스와 그 멤버의 접근성을 최소화하자. [Effective Java] 클래스와 그 멤버의 접근성을 최소화하자. - 잘 설계된 모듈과 그렇지 않은 것을 구분 짓는 가장 중요한 잣대는, 모듈 자신의 내부 데이터 및 그 외의 상세한 구현 부분을 다른 모듈로부터 어느 정도로 숨기느냐에 달려 있다. - 모듈은 자신의 API 를 통해서만 다른 모듈과 상호작용한다. 정보 은닉(information hiding) 또는 캡슐화(encapsulation)이 그것이다. - 정보 은닉은 시스템을 구성하는 모듈들 간의 결합도를 낮추어(decoupling) 모듈 별로 개발, 테스트, 최적화, 사용 및 수정이 가능하도록 한다. 또한 이렇게 하면 병행 개발 ( parallel development ) 를 할 수 있어 시스템 개발이 빨라진다. 모듈을 더 빨리 파악할 수 있.. 2016. 10. 17.
[책 정리] 먹고 단식하고 먹어라 #1 먹고 단식하고 먹어라 #1 출처 : 먹고 단식하고 먹어라 - 칼로리를 제한하면 살은 빠진다. 그러나 칼로리 제한 식단은 장기적으로 실천하기 어렵다. - 영양과 체중 감량에 관해서는 절대적인 진실이 단 두가지만 존재한다. 1. 장기적인 칼로리 제한이 영양학적으로 입증된 유일한 체중 감량법이다. 2. 인간은 둘 중 하나의 상태에 놓일 수밖에 없다. 만복 아니면 공복이다. - 대부분의 과학 연구 결과는 그렇지 않아도 정신 없는 기존 영양학 이론과 다이어트 방법에 혼란만 가중시키고 있다. 이유는 뻔하다. 영양과 식품에 관한 연구가 더는 우리의 건강과 안녕을 증진시킬 목적으로 이뤄지지 않기 때문이다. 연구의 목적은 마케팅이다. 이 제품 대신 저 제품을 사도록 유도하기 위한 방법에 불과한 것이다. 이런 연구는 사람.. 2016. 6. 22.
[책 리뷰] 남재현 박사가 가르쳐주는 뱃살 빼는 다이어트 [책/리뷰] 남재현 박사가 가르쳐주는 뱃살 빼는 다이어트 남재현 박사가 가르쳐주는 뱃살 빼는 다이어트저자남재현 지음출판사중앙생활사 | 2014-07-28 출간카테고리건강책소개각종 방송에 출연하며 시청자들의 사랑을 받고 있는 의학박사 남재...글쓴이 평점 이 책을 구매할까 망설이는 당신에게.. 이 책은 여러 환자들의 사례, 세계적으로 발표된 연구 결과 등을 많이 다루고 있다.사례가 많다는 것이 장점이 될 수도 있지만, 필자의 경우는 해당하는 사례가 없어 대부분 그냥 스킵하는 경향으로 읽었다. 또한 어떤 이야기를 할 떄 수치적으로 이야기를 많이 해서 일반인들이 읽기에는 꽤나 거부감이 많이 생길 수 있다.공부하는 느낌이 많이 들며, 꽤나 지루하다. 게다가 일반적으로 다이어트 상식들을 많이 알고 있는 사람에게는.. 2016. 4. 22.
[iOS Study] 상태 복원 [iOS Study] 상태 복원 출처 : 아론 힐리가스의 IOS 프로그래밍 -앱의 수명은 제한돼 있다.만약 시스템이 더 많은 메모리가 필요하고 자신의 앱이 백그라운드 상태에 있다면, iOS는 아마 그 앱을 죽여 시스템에 메모리를 반환하도록 할 것이다.사용자는 이러한 사실을 알 필요가 없다.항상 앱의 마지막 장면으로 돌아가야 할 것이다. -앱에 상태 복원(state restoration)을 적용해야 한다.상태 복원은 데이터를 저장하는 데 사용했던 아카이빙과 매우 비슷하게 작동한다.앱이 잠시 중단 상태로 들어가면 뷰 컨트롤러 계층의 스냅샷(snapshot)이 저장된다.사용자가 다시 열기 전에 앱이 죽었다면 시작 시에 그 상태가 복원될 것이다.(만약 앱이 죽지 않았다면 모든 것은 메모리에 남아있고 상태를 복원.. 2016. 3. 26.
[iOS Study] 오토 레이아웃 : 프로그래밍으로 제약조건 만들기 [iOS Study] 오토 레이아웃 : 프로그래밍으로 제약조건 만들기 출처 : 아론 힐리가스의 iOS 프로그래밍 -애플은 가능한 한 XIB 파일에서 뷰를 만들고 제한하는 것을 추천한다.하지만 코드로 뷰를 만들면 프로그래밍으로 제약 조건을 적용해야 한다. -프로그래밍으로 뷰를 만들기 위해서는 loadView 메소드를 재정의한다.NIB 파일을 로드하여 만들어진 뷰 계층구조에 뷰를 추가하고 제한하려면 viewDidLoad 메소드를 재정의한다. -변환 제약조건(translated constraints)에 관한 코드는 예전 시스템 인터페이스인 오토리사이징 마스크(autoresizing mask)와 함께 동작해야만 한다.iOS 앱은 오토 레이아웃이 도입되기 전에 여러 크기의 화면에 따라 뷰를 조절하기 위해 오토리사.. 2016. 3. 4.
반응형