본문 바로가기
[Effective Java] static 맴버 클래스를 많이 사용하자. [Effective Java] static 맴버 클래스를 많이 사용하자. - 중첩 클래스(nested class) 혹은 내부 클래스(inner class)는 외곽 클래스(enclosing class)를 지원하는 목적으로만 존재해야 한다. 만일 어떤 중첩 클래스가 일부 다른 분야나 클래스에서도 유용하게 사용된다면 그 클래스는 독립적인 최상위 클래스가 되어야 한다. - 중첩 클래스는 다음 4가지 종류가 있다. static 맴버 클래스 static 이 아닌 맴버 클래스 익명 ( anonymous ) 클래스 지역 ( local ) 클래스 - static 맴버 클래스는 가장 간단한 종류의 중첩 클래스로, 어떤 클래스의 내부에 선언되어 있으며, 그 외곽 클래스의 모든 static 맴버들( private 으로 선언된.. 2016. 11. 17.
[Java] writeObject 와 readObject 는 무엇인가? [Java] writeObject 와 readObject 는 무엇인가? 참조 : http://www.javablogging.com/what-are-writeobject-and-readobject-customizing-the-serialization-process/ - serialize 하고 싶은 객체에 Serializable interface 만 implements 해주면 serialize 가 가능하다. -ObjectOutputStream 을 이용하여 stream 형태로 만들어 file 에 쓰거나 전송할 수 있다. - transient 나 static 으로 마크되지 않은 필드들은 모두 serialized 된다. - 기본적인 serialization 에 추가적으로 어떤 조치를 취하고 싶다면 아래와 같이 w.. 2016. 10. 25.
[Java] Generic explicit type parameter 이야기 [Java] Generic explicit type parameter 이야기 참조 : http://shanhe.me/2011/09/11/explicit-type-parameters-for-generic-methods 참조 : http://docs.oracle.com/javase/tutorial/java/generics/genTypeInference.html - 자바 7, 8 로 version up 이 되면서 조금 더 강화된 compiler 로 type inference 도 강화되어 explicit type parameter 를 지정할 일이 거의 없다. -public static Map toHashMap(Map map) {return new HashMap(null == map ? Collections.em.. 2016. 10. 18.
[iOS Study] 자동 회전, 팝오버 컨트롤러, 모달 뷰 컨트롤러 [iOS Study] 자동 회전, 팝오버 컨트롤러, 모달 뷰 컨트롤러 출처 : 아론 힐리가스의 iOS 프로그래밍 -이 장에서는 아래의 주제를 다룬다. 장치 의존적인 코드를 작성하는 방법과 장치의 종류에 따라 테스트하는 방법 회전, 팝오버 컨트롤러, 모달 뷰 컨트롤러 -iOS 에서는 방향을 장치방향 (device orientation) 과 인터페이스 방향(interface orientation) 두 가지로 구분한다. -장치 방향은 장치 표면이나 후면에서 정방향, 뒤집힌 상태, 왼쪽 회전, 오른쪽 회전인지에 따른 물리적 방향을 나타낸다.UIDevice 클래스의 orientation 프로퍼티를 통해 장치의 방향에 접근할 수 있다. -인터페이스 방향은 실행 중인 프로그램의 프로퍼티이다. UIInterfaceOr.. 2016. 3. 5.
[iOS Study] UITableView 와 UITableViewController [iOS Study] UITableView 와 UITableViewController 출처 : 아론 힐리가스의 iOS 프로그래밍 -UITableView 는 여러 행을 가질 수 있는 단일 열에 데이터를 보여준다. -UITableView 의 dataSource 는 UITableViewDataSource 프로토콜을 따르는 한 어떠한 Objective-C 객체든 될 수 있다. -UITableViewController 클래스의 인스턴스는 뷰 컨트롤러, 데이터 소스, 델리게이트의 세 가지 역할을 다 할 수 있다. -UITableViewController 는 UIViewController 의 하위 클래스이기 때문에 view 프로퍼티를 가진다.UITableViewController 의 view 는 언제나 UITable.. 2016. 2. 20.
Objective-C 의 기본 ( Basic Objective-C ) Object-C 의 기본 ( Basic Objective-C ) 출처 : http://www.tutorialspoint.com/objective_c/ > - OOP 언어로 Smalltalk-style 을 C 언어 에 가미한 언어이다. Apple 의 OSX 와 iOS 에서 공식적으로 사용되는 언어이다. > - Object-C 는 OOP 의 4가지 조건 ( Encapsulation, Data hiding, Inheritance, Polymorphism ) 을 모두 만족시키는 언어이다. - Foundation Framework 는 아래 명시된 기능들을 비롯해 많은 기능을 제공한다. * NSArray, NSDictionary, NSSet 과 같은 data type 을 제공 * file, string 등 많은 u.. 2015. 6. 16.
[Effective Java] 불필요한 객체의 생성을 피하자. 불필요한 객체의 생성을 피하자. - 기능적으로 동일한 객체를 필요할 때마다 매번 새로 생성하기보다는 하나의 객체를 재사용하는 것이 좋을 때가 많다. 재사용을 하면 객체 생성에 소요되는 비용(시간과 자원)이 절감되어 실행 속도가 더 빨라지고 코드도 보기 좋게 작성할 수 있다. 불변(immutable) 객체는 항상 재사용이 가능하다. - 불 필요한 객체 생성을 막기 위한 첫번째 좋은 방법은 static 팩토리 메소드를 사용하는 것이다. - 불변객체가 아닌 가변객체더라도 상태가 변경되지 않는 것이 보장되면 재사용 가능하다. - 재사용을 막기 위한 static 팩토리 메소드에서 늦 초기화 ( lazy initialization ) 을 하는 경우가 있는데, 후에 다루겠지만 두드러진 성능 개선이 나타나진 않고, 오.. 2015. 4. 30.
[Effective Java] private 생성자를 사용해서 인스턴스 생성을 못하게 하자. private 생성자를 사용해서 인스턴스 생성을 못하게 하자. - static 메소드와 static 필드만을 모아 놓은 클래스를 만들 경우 private 생성자를 사용해서 인스턴스 생성을 못하게 하자. - 명시적으로 지정한 생성자가 없을 때는 컴파일러가 디폴트 생성자 ( default constructor ) 를 생성한다. 이는 javadoc 프로그램으로 생성하는 API 문서에도 나타나므로 인스턴스 생성이 가능한 클래스로 오인될 수 있다. public class UnilityClass{ private UtilityClass(){ throw new AssertError(); } ... } - 이 방법은 sub class 를 가질 수 없다는 단점이 있지만, Utility 함수들은 대부분 상속을 위해 설계되지.. 2015. 4. 5.
Android 놓치기 쉬운 안드로이드 성능 향상 팁 Android 놓치기 쉬운 안드로이드 성능 향상 팁 출처 : http://developer.android.com/training/articles/perf-tips.html 아래 두가지 규칙이 모든 성능 향상의 기본 법칙이다. 1. 필요 없는 일은 하지 말아라. 2. 피할 수 있다면 memory 를 잡는 일을 하지 말아라. 참고로 micro-optimization 을 한다고 해도 모든 단말에서 똑같은 성능향상이 있는 것이 아니다.VM 의 종류, Processor 의 종류에 따라서도 조금씩 다르고, JIT 의 유무에 따라서도 다르다. 아래 항목들은 대부분의 환경에서 최적화시킬 수 있는 micro-optimization 기술을 소개한다. 쓸 데 없이 객체를 생성하지 말자. GC 를 유발하며, GC 는 conc.. 2014. 4. 3.
반응형