본문 바로가기
[Effective Java] 상속을 위한 설계와 문서화를 하자. 그렇지 않다면 상속의 사용을 금지시킨다. 상속을 위한 설계와 문서화를 하자. 그렇지 않다면 상속의 사용을 금지시킨다. - 메소드 오버라이딩으로 인한 파급 효과를 분명하게 문서화해야 한다. 같은 클래스의 다른 메소드들이 호출하는지에 대해 반드시 문서화해야 한다. ( self-use ) - 각각의 public 이나 protected 메소드 및 생성자가 어떤 오버라이드 가능한 메소드를 호출하는지, 어떤 순서로 하는지, 호출한 경로가 다음 처리에 어떤 영향을 주는지에 대해서도 반드시 문서화해야 한다. 오버라이드 가능하다는 것은 final 이 아니면서 public 이나 protected 인 경우를 의미한다. - 관례적으로 오버라이드 가능한 메소드를 호출하는 메소드에는 문서화 주석의 제일 끝에 그런 호출에 대한 설명을 추가한다. 그리고 설명의 시작은 "이.. 2016. 11. 1.
[Effective Java] 가변성을 최소화 하자. [Effective Java] 가변성을 최소화 하자. -불변 클래스는 자신의 인스턴스가 갖는 값을 변경할 수 없는 클래스. - 불변 클래스는, 가변 클래스에 비해 설계와 구현 및 사용이 더 쉽다. 에러 발생이 적으며 보안이나 사용 측면에서 더 안전하다. - 불변 클래스를 만들 때는 다음 다섯 가지 규칙을 따르자. 1. 객체의 상태를 변경하는 그 어떤 메소드도 제공하지 않는다. 2. 상속을 할 수 없도록 하자. ( class 에 final 을 주어 막을 수 있다. ) 3. 모든 필드를 final 로 지정한다. 4. 모든 필드를 private 으로 지정한다. 5. 가변 컴포넌트의 직접적인 외부 접근을 막자. 생성자와 접근자 메소드 및 readObject 메소드에서 해당 객체의 방어 복사본을 만들어 사용하도록.. 2016. 10. 24.
[iOS Study] 저장, 읽기, 앱 상태 [iOS Study] 저장, 읽기, 앱 상태 출처 : 아론 힐리가스의 iOS 프로그래밍 -여기서는 iOS 에서 파일 시스템을 통해 읽고 쓰는 데 필요한 개념과 기법을 배운다. -아카이빙은 iOS 에서 모델 객체를 저장하는 가장 흔한 방법 중 하나이다.객체의 아카이빙은 그 객체의 프로퍼티들을 모두 기록하고 파일시스템에 그 내용을 저장하는 것을 포함한다.언아카이빙(unarchiving)은 아카이브한 데이터로부터 객체를 다시 만든다. -인스턴스들을 아카이브하고 언아카이브해야 할 클래스들은 NSCoding 프로토콜을 반드시 따라야 하며, 두 필수 메소드 encodeWithCoder: 와 initWithCoder: 를 구현해야 한다. -encodeWithCoder: 메시지를 받으면, 전달된 인자인 NSCoder .. 2016. 3. 7.
android generate parcelable open source library android generate parcelable open source library https://github.com/frankiesardo/android-auto-value Serializable 처럼 아주 간단하게 Parcelable 을 만들 수 있다. @AutoValueabstract class SomeModel implements Parcelable { abstract String name(); abstract List subModels(); abstract Map modelsMap(); static SomeModel create(String name, List subModels, Map modelsMap) { return new AutoValue_SomeModel(name, subModels,.. 2014. 8. 12.
[android] Parcelable vs Serializable android, Parcelable vs. Serializable Serializable 은 Java 만 아는 사람이라면 쉽게 알 수 있는 serialization 방법.그냥 Serializable 을 implementation 만 해주면, serialize 가 필요한 순간에 알아서 serialze 해주는 편리한 marker interface. 그러나, mobile 시대가 강림하면서 등장한 유망한 어린이(?) 가 있으니 그는 바로 Parcelable.이 녀석은 IPC ( Inter Process Communication ) 에 최적화된 녀석으로.Serialize 보다 속도가 빠르다.물론, 해야 하는 일은 Serialize 보다 훨씬 많다.직접 serialize 되어야 할 녀석들을 선별해서 그것을 쓰고 읽.. 2014. 2. 15.
[android] 안드로이드 개발 10계명 안드로이드 개발 10계명 ( 명심해야 할 10가지 ) 1. 앱 구성요소간 데이터를 주고받을 경우, Extra 로 여러값을 따로따로 전달하기보다는 Parcelable 을 사용하는 것이 유지보수에도 쉽고 성능이슈도 있다. Serialization 도 방법이긴 하지만 안드로이드에서는 Parcelable 이 Serialization 보다 더 효율적이다. 2. UI 와 관련된 코드를 제외한 다른 Heavy 한 모든 일은 다른 thread 를 만들어 수행해야 한다. 3. Object Cache 를 적극 활용하자. ( Object Pool 패턴사용이 추천된다. ) 안드로이드의 GC 는 폰이 버벅대는 효과를 가져오는 1등공신(?) 이다. 4. ListAdapter 내부에서는 오랜 시간이 소요되는 연산을 수행하지 않는다.. 2013. 9. 24.
[Java] Serializable & Externalizable 자바, Serializable & Externalizable Serializable 은 implement 를 해주면 자동으로 object 안에 있는 모든 변수들이 serializable 하게 된다. 물론 primitive type 에 대해서이다. Serializable 을 구현한 클래스에서 다른 object 를 담고 있다면 해당 object 도 serializable 해야 정상적으로 serializable 하게 된다. 만약 변수 중에 serializable 하게 만들고 싶지 않은 것들이 있다면 transient 이라는 키워드를 앞에 붙여주어야 한다. Externalizable 인터페이스는 Serializable 인터페이스의 자식 클래스이다.Serializable 은 object 의 모든 변수들을 자동으로.. 2013. 9. 9.
[android] framework FAQ 안드로이드, framework FAQs 하나의 어플에 포함되어 있는 모든 Activity 와 Service 들이 하나의 프로세스에서 동작해? 메니페스트에 android:process 를 따로 기술하지 않는 한 네개의 기본 Component 들 ( Activity, Service, BroadcastReceiver, ContentProvider ) 는 모두 한 프로세스에서 동작한다. Component 간 Data 공유는 어떻게 해? Primitive type 들은 Intent.putExtra() 를 통해서 내용전달을 할 수 있다. Preference 에 저장하여 공유할수도 있다.Application 클래스에 저장하여 공유한다.public static 변수로 공유한다. 이 방법은 추천되지 않는다.Object .. 2013. 7. 24.
반응형