Coding/Java

Java 코드 작성 습관

heyoon2j 2020. 10. 8. 23:44

1. 반복문을 줄여야 한다.

=> 리소스를 계속 사용하기 때문에

 

 

2. Dynamic Lookup을 줄인다.

=> instanceOf()와 같은 메서드

 

 

3. 필요시 순수 함수 형식으로 코드 짜기(객체뿐만 아니라 함수도 모듈화가 된다)

=> 당연히 필요시에는 OOP 준수(Real-Time과 같은 쓰레딩 부분 등 Critical 한 부분)

 

 

4. Stream과 Collection, 기본적인 속도는 for 문이 Stream 보다 빠르다.

=> 기존 Collection을 재사용해야 되는데, Collection의 변경이 필요한 경우

=> Prototype으로

 

 

5. Object 클래스의 메서드 Overriding

=> 자주 사용하는 메소드 : equals(), hashCode(), clone(), toString() 

 

 

6. 배열 복사할 때, System.arraycopy() 사용

=> native로 되어있기 때문에 좀 더 최적화가 되어있다.

 

 

7. Comparator & Comparable Interface 사용

=> compare(T o1, T o2) & copareTo(T o) 메서드 이용

=> 배열 Sort : Arrays.sort()

=> Collection Sort : Collection.sort()

 

 

8. 문자열의 추가, 수정, 삭제가 빈번한 경우, StringBuffer & StringBuilder

=> String은 immutable 속성을 가지기 때문에 변경이 불가

=> StringBuffer는 동기화 키워드를 지원하므로, 멀티스레드 환경에서 안전하다.

=> StringBuilder는 동기화를 지원하지 않기 때문에, 단일 스레드 환경에서 성능이 더 좋다.

=> Example

public class Main {
    static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
    public static void main(String[] args) {
        try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {
            int k = Integer.parseInt(br.readLine());
            System.out.println(((int)Math.pow(2, k) - 1));
            move(k, 1, 2, 3);
            bw.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public static void move(int k, int src, int mid, int dst) throws IOException {
        if (k > 0){
            move(k-1, src, dst, mid);
            bw.write(src + " " + dst + "\n");
            move(k-1, mid, src, dst);
        }
    }
}

 

 

9. String <-> 기본 자료형 변경할 때

=> 기본 자료형으로 변경 : Integer.parseInt()

=> 클래스형으로 변경 : Integer.valueOf()

 

 

10. Math 클래스 메소드 활용을 줄이자

  1) *2 or /2의 경우, Shift 연산자 활용

    => * 2 : << 

    => / 2 : >> 또는 * 0.5를 이용하자

 

  2) Math.floor()과 Math.ceil 대신 int 활용

     => Math.floor() : int(3.5)

     => Math.ceil() : int(3.5) + 1

 

  3) Math.abs() 대신 * -1 활용

    => Math.abs() : (a > 0) ? a : a * -1 

 

=> 출처 : rockonflash.wordpress.com/2007/08/11/optimizations-for-as3-calculations/

 

 

 

 

 


* 계속 추가될 예정

'Coding > Java' 카테고리의 다른 글

Java Collection Framework  (0) 2020.10.08
Java I/O Stream  (0) 2020.10.08
Java Code Convention(Google Java Style 정리)  (0) 2020.10.07
java.lang 패키지  (0) 2020.09.29
Java Stream API  (0) 2020.09.28