본문 바로가기
[Effective Java] 지역 변수의 유효 범위를 최소화 하자. [Effective Java] 지역 변수의 유효 범위를 최소화 하자. - 지역 변수의 유효 범위를 최소화하면, 코드의 가독성과 유지 보수성을 높이고 에러의 가능성이 줄어든다. - C와 같은 종전 프로그래밍 언어들은 지역 변수를 블록의 맨 앞에 선언해야 했으며, 일부 프로그래머들은 습관 때문에 계속 그렇게 한다. 하지만 이것은 버려야 할 습관이다. 자바에서는 명령문만 적법하다면 어디에든 변수를 선언할 수 있기 때문. - 지역 변수의 유효 범위를 최소화하는 가장 강력한 방법은 그 변수가 최초 사용되는 곳에 선언하는 것. 만일 변수를 사용하기 전에 선언하면 혼란만 생긴다. - 지역 변수의 선언과 초기화에 주의하자. 만일 변수를 올바르게 초기화하는데 필요한 정보가 충분하지 않다면, 충분하게 될 때 까지 선언을 .. 2017. 1. 24.
[Effective Java] 메소드 시그니처를 신중하게 설계하자. [Effective Java] 메소드 시그니처를 신중하게 설계하자. - 메소드 이름을 신중하게 짓자. 이름은 항상 표준 작명 규칙을 따라야 한다. 이름에는 일관성이 있어야 한다. 폭넓게 공감 가는 이름을 선택해야 한다. - 편리한 메소드를 만드는데 너무 열중하지 말자. 모든 메소드는 자신의 역할을 해야 한다. 메소드가 너무 많으면, 클래스를 배우고 사용하고 문서화하고 테스트하고 유지하기가 어렵다. 클래스나 인터페이스가 지원하는 각 동작에 대해서 충분한 기능을 수행하는 메소드를 제공하자. - 너무 많은 매개 변수를 피하자. 매개 변수는 네 개 이하를 목표로 하자. 매개 변수가 네 개를 넘으면 시종일관 문서를 참조하지 않고는 그 메소드 API 를 사용할 수 없다. 같은 타입의 매개 변수가 길게 나오면 특히 .. 2017. 1. 12.
[Effective Java] int 상수 대신 enum 을 사용하자. [Effective Java] int 상수 대신 enum 을 사용하자. - int enum pattern 이라고 불리는 int 를 이용한 분기는 단점이 많다. - 타입 안전을 보장하지도 않고, 편리하게 사용할 수 있는 방법도 제공하지 않는다. 즉 취약하다. - int enum 상수를 출력 가능한 문자열로 쉽게 바꾸는 방법도 없다. - 하나의 int enum 그룹에 있는 모든 상수를 loop 처리하거나, 그룹 사이즈를 알 수 있는 좋은 방법도 없다. - int enum 패턴의 변이로 String enum 패턴이 있는데 더더욱 바람직하지 않다. print 하는 부분에서는 좋지만, 문자열 비교에 의존하여 성능 문제가 생길 수도 있다. 더욱 문제가 되는 것은 필드명 대신 string 상수 값을 클라이언트 코드에.. 2016. 12. 19.
[Effective Java] static 맴버 클래스를 많이 사용하자. [Effective Java] static 맴버 클래스를 많이 사용하자. - 중첩 클래스(nested class) 혹은 내부 클래스(inner class)는 외곽 클래스(enclosing class)를 지원하는 목적으로만 존재해야 한다. 만일 어떤 중첩 클래스가 일부 다른 분야나 클래스에서도 유용하게 사용된다면 그 클래스는 독립적인 최상위 클래스가 되어야 한다. - 중첩 클래스는 다음 4가지 종류가 있다. static 맴버 클래스 static 이 아닌 맴버 클래스 익명 ( anonymous ) 클래스 지역 ( local ) 클래스 - static 맴버 클래스는 가장 간단한 종류의 중첩 클래스로, 어떤 클래스의 내부에 선언되어 있으며, 그 외곽 클래스의 모든 static 맴버들( private 으로 선언된.. 2016. 11. 17.
[Effective Java] 태그(tagged) 클래스보다는 클래스 계층을 사용하자. [Effective Java] 태그(tagged) 클래스보다는 클래스 계층을 사용하자. - 인스턴스들이 두 개 이상의 특성으로 분류되고 그런 특성을 나타내는 태그(tag) 필드를 갖는 클래스들을 태그 클래스라고 한다. 예를 들어 Figure 라는 class 가 있는데, 생성자의 종류에 따라 Rectangle 도 되었다가 Circle 도 될 수 있는 녀석. 한 Class 가 조건에 따라 많이 다른 특성의 class 의 형태로 변하는 녀석을 말한다. - 태그 클래스(Tagged class) 는 단점 투성이다. enum 선언, 태그 필드, switch, if 문 등을 포함해서 각종 복잡한 코드로 가독성을 떨어뜨린다. 다른 종류의 인스턴스에 속하는 부적절한 필드를 인스턴스가 가지고 있어 필요 없는 메모리 할당과.. 2016. 11. 14.
[Effective Java] Comparable 인터페이스의 구현을 고려하자. [Effective Java] Comparable 인터페이스의 구현을 고려하자. - compareTo 메소드는 Comparable 인터페이스에 존재하는 메소드이다. compareTo 메소드는 equals 메소드와 유사한 특성을 갖는다. 차이점은 두 객체가 동일한지 비교에 덧붙여 순서까지 비교할 수 있으며, 제네릭 타입을 지원한다. - Comparable interface 를 구현하면, Arrays.sort 와 같은 메소드를 손쉽게 쓸 수 있고, TreeSet 과 같은 크기 비교를 사용하는 Collection 들에서도 손쉽게 사용할 수 있다. - 자바 라이브러리의 모든 값 클래스들은 Comparable 인터페이스를 구현한다. - 알파벳 순, 숫자 순, 날짜 순과 같은 자연율을 갖는 값 클래스를 작성한다면 .. 2016. 10. 14.
[iOS Study] 카메라 [iOS Study] 카메라 출처 : 아론 힐리가스의 iOS 프로그램 -UIImageView 는 contentMode 프로퍼티에 따라 이미지를 표시한다.이 프로퍼티는 이미지뷰의 프레임 안에서 이미지를 어디에 위치시키고 어떻게 크기를 조절할지를 결정한다.UIImageView 에서 contentMode 의 기본값은 UIViewContentModeScaleToFill 이다.이 값은 이미지 크기를 이미지뷰의 bounds 와 정확히 일치하게 조절한다. 이미지가 원본과 같은 종횡비로 표시되도록 하려면 Aspect Fit 으로 설정해야 한다. -소스 파일을 옵션 - 클릭 하면 보조 편집기로 소스가 열린다. -xib 에서 소스파일로 컨트롤 - 드래그 하면 바로 IBOutlet 이나 IBAction 을 연결할 수 있다... 2016. 2. 23.
[iOS Study] Objective-C [iOS Study] Objective-C 출처 : 아론 힐리가스의 iOS 프로그래밍 -iOS 앱은 코코아 터치(Cocoa Touch) 프레임워크를 사용하여 Objective-C 언어로 작성된다.Objective-C 는 C 언어의 확장이며 코코아 터치 프레임워크는 Objective-C 클래스의 모음이다. - 일반적으로 Objective-C 에서는 인스턴스 변수명을 밑줄(_) 로 시작한다. - 객체를 만들기 위해서는 클래스에 alloc 메세지를 보낸다. 이에 클래스는 메모리(힙)에 객체를 만들고 변수에 저장된 그 객체의 주소를 준다. -Party* partyInstance = [Party alloc];[partyInstance init]; 새로 할당한 인스턴스에 보내는 첫 메시지는 항상 초기화 메시지다. .. 2016. 2. 13.
Objective-C 고급 ( Advanced Objective-C ) Objective-C 고급 ( Advanced Objective-C ) 출처 : http://www.tutorialspoint.com/objective_c/objective_c_classes_objects.htm > - class 는 @interface 와 @implementation 의 두 파트로 나뉘어 정의된다. - 대부분이 objects 를 상속한다. - objects 는 메세지를 받기 때문에 receiver 로 불리기도 한다. - Properties 는 다른 class 에서의 access 를 접근하도록 도와준다. - ex) @interface Box:NSObject { double length; double breadth; } @property(nonatomic, readwrite) double .. 2015. 6. 18.
반응형