본문 바로가기
[Effective Java] 작명 패턴보다는 주석(annotation)을 사용하자. [Effective Java] 작명 패턴보다는 주석(annotation)을 사용하자. - 1.5 배포판 이전에는 도구나 프레임워크에서 특별히 취급할 필요가 있는 프로그램 요소들을 나타내기 위해 작명 패턴(naming pattern)을 사용하는 것이 일반적. 예를 들어 JUnit 테스팅 프레임워크에서는 테스트 메소드들의 이름을 test로 시작하도록 하였다. 이 방법은 효과는 있지만 단점들이 있다. 1. 철자상의 오류로 인한 오류 2. 적합한 프로그램 요소에만 사용되는지 확신할 방법이 없다. 3. 매개 변수 값을 프로그램 요소와 연관시키는 좋은 방법을 제공하지 않는다. - 작명패턴의 단점은 annotation 을 사용하여 깔끔히 해결된다. - annotation 정의는 다음과 같이 한다. @Retention.. 2017. 1. 2.
[Effective Java] 컴파일 경고 메세지가 없게 하자. [Effective Java] 컴파일 경고 메세지가 없게 하자. - 제네릭을 사용해서 프로그램을 작성하면 컴파일 경고 메세지를 많이 마딱뜨릴 수 있다. unchecked cast, unchecked method call, unchecked generic array generation, unchecked conversion 등. - 가능한 모든 unchecked 경고 메세지를 없애자. 이는 Runtime 시 ClassCastException 예외가 생기지 않음을 의미한다. - 특정 경고 메세지는 없앨 수 없지만, 그 메세지를 유발시킨 코드가 타입 안전을 보장한다면 @SuppressWarnings("unchecked") Annotation 을 사용해서 경고 메시지를 안 나타나게 억제할 수 있다. Suppre.. 2016. 11. 24.
@NotNull annotation 의 장점 @NotNull annotation 의 장점 http://robaustin.wikidot.com/annotations-and-notnullhttps://www.jetbrains.com/idea/documentation/howto.html - Find Bugs 와 IntelliJ 는 null check annotation 을 지원한다. 코드 가독성 측면에서 좋지 않다는 이야기도 있지만, 그건 케바케. - function 의 param 에 null 이 들어오면 RuntimeException 을 던지도록 처리하는 것이 좋다.public void testMethodNotNull( @NotNull String param ){ // do sth.}만약 method 선언부에 @NotNull 을 선언하면, valida.. 2015. 6. 23.
@SerialzedName 어노테이션 @SerialzedName 어노테이션 - field 에 마킹하는 어노테이션으로, JSON 으로 serialize 될 때 매칭되는 이름을 명시하는 목적으로 사용한다. ex) @SerializedName("name")private final String name; @serializedname, annotation, field, GSON, JSON, Serialize, serialized, 어노테이션 2015. 6. 20.
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.
[Java] Reflection Tutorial - Annotations. [Java] Reflection Tutorial - Annotations. What are Java Annotations Java5 에 소개된 기능으로, meta data 를 코드형태로 담을 수 있고, runtime 에 이 meta data 에 접근할 수 있다. pre-compiler 가 코드를 conversion 할 때 사용되기도 한다. Annotation 은 interface 형태이다. @Retention( RetentionPolicy.RUNTIME );@Target( ElementType.TYPE )public @interface TestAnnotation{public String name();public String value();} @TestAnnotation(name="variable", va.. 2013. 12. 23.
[Java] Reflection Tutorial - Class [Java] Reflection Tutorial - Class Java Reflection 은 class, interface, field, 그리고 method 를 runtime 에 조사할 수 있도록 해준다. 새로운 object 를 만들 수도 있고, method 를 호출할 수도 있다. script language 가 runtime 에 java 의 함수를 호출한다거나, database table 과 object 를 맞출 때 자주 사용한다. Class Class 로 부터 얻을 수 있는 정보들. Class NameClass Modifier ( public, private, synchronized... )Pakcage InfoSuper classImplemented InterfacesConstructorsMeth.. 2013. 11. 12.
[android] AndroidAnnotations 와 Otto 를 이용한 빠른 앱 개발. AndroidAnnotations 와 Otto 를 이용한 빠른 앱 개발 휴휴님의 강좌에서 좋은 open source library 들을 알게 되어 내용을 공유하고자 한다. PPT 링크 아래녀석은 PPT 내용을 pdf 로 뽑은 것. 링크와 pdf 파일 등 공유에 문제가 있다면 댓글이나 방명록을 통해 알려주세요. 조치하겠습니다.! CleanAndroidCode? CleanAndroidCode 는 Dagger, Otto, AndroidAnnotations 의 장점을 합쳐놓은 녀석. https://github.com/pyricau/CleanAndroidCode AndroidAnnotattions? http://androidannotations.org/ open source framework 으로 여러가지 idi.. 2013. 7. 15.
[android] Lombok 뭐 하는 녀석이냐? 안드로이드, Lombok 뭐 하는 녀석이냐? Lombok 이 뭐야? OpenSource project 로 eclipse 에 설치해서 사용하는 유용한 녀석이다. add-on 비슷한 녀석이랄까?annotation 등을 이용하여 반복적으로 생성하는 지루한 코드들을 모두 생략할 수 있다. Lombok Features Lombok Feature Official Page @Getter, @Setter 자동으로 getter, setter 들을 만들어준다.accesslevel 도 지정가능하고, override 도 가능하다. @Getter(lazy=true) thread-safe 한 getCached() 라는 함수를 만들어준다. 이 함수는 expensive 한 작업에 대해서 cache를 뜬다. @ToString 필자가 .. 2013. 7. 14.
반응형