15 common mistakes in Java Programming

해당 포스팅에서는 자바 언어를 사용하면서 발생할 수 있는 실수에 대해 설명하고 있습니다. 각 실수에 대해 실제 코드를 사례로 설명해 주고 있기 때문에 이해하기가 보다 수월한 것 같습니다. 물론 모든 내용들을 반드시 지켜야 하는 것은 아니고, 상황에 따라 다르겠지만 평소에 고려하면 좋을만한 내용들이 많이 존재하는 것 같습니다. 1. Not using the right data structures - 적절한 자료구조를 사용하지 않으면 성능 저하, 코드의 복잡도 증가, 메모리 사용량의 증가 등의 문제를 야기할 수 있습니다. 2. Neglecting to close resources - 메모리 누수, 데이터 불일치 등의 문제가 발생할 수 있습니다. - 레거시 코드에서 file stream, database connectios의 closed 처리가 제대로 되어있지 않아 문제가 발생했던 적이 종종 있었네요. 3. Ignoring exceptions or using empty catch blocks - 예외를 무시하거나 catch blocks에 아무런 로깅을 남기지 않는다면 예상치 못한 행위, 에러 정보의 손실, 디버깅의 어려움 등이 존재할 수 있습니다. - 2번과 마찬가지로 catch 블록에 무의미한 코드 존재하는 걸 많이 봤었는데요, 보일때 마다 의식적으로 개선하는 것이 좋을 것 같습니다. 4. Using raw types instead of generics 5. Not using the 'final' keyword - final 키워드를 사용하지 않으면 예상치 못한 변경, 불변의 결여 등의 문제가 발생할 수 있습니다. - 개인적으로 final 키워드를 애용하지만 주로 변수에만 선언하여 사용하는 것 같습니다. 6. Comparing objects using '==' - 두 객체를 비교할 때 references를 비교하는 '==' 연산자와 내용을 비교하는 equals()에 관련된 설명입니다. 7. Forgetting to override hashCode() and equals() - equals() 메서드는 두 객체의 동일성에 대한 비교이며 hashCode() 메서드는 객체가 나타내는 정수 해시 코드 값을 반환하는 메서드입니다. - 해당 내용은 Effective Java 도서의 아이템 10, 11에 자세히 설명이 되어 있어서 참고하셔도 좋을 것 같습니다. 8. Misusing static variables and methods - static 변수와 메서드를 잘못 사용하지 않으려면 참고해야 할 사항 - 클래스의 모든 인스턴스에서 사용이 가능한 상수 및 공유 상태에 정적 변수를 사용합니다. - 인스턴스 별 데이터에는 정적 변수를 사용하지 않습니다. - 객체의 상태에 의존하지 않는 유틸성 메서드에는 정적 메서드를 사용합니다. 9. Concurrency issues - concurrency 문제를 예방하기 위해 Java에서 제공하는 동기화 메커니즘을 사용해야 합니다. (synchronized, volatile, java.util.concurrent 패키지 등) 10. Overusing inheritance - 과도한 상속은 다음의 문제를 야기할 수 있습니다. - Tight coupling - Inflexibility - Code complexity 11. Not using StringBuilder for string concatenation in loops - Java에서 String은 불변 객체이므로 변경이 발생한다면 새로운 객체를 생성합니다. (정확한 버전은 기억이 나지는 않지만, Java의 특정 버전 이후로는 String의 변경도 내부적으로 StringBuilder를 사용하도록 변경되었으나 반복문 등의 내부 처리에서는 StringBuilder를 사용하는 것을 권장합니다.) 12. Relying on default encoding 13. Inefficient autoboxing and unboxing - 성능 저하, NPE 등의 예상치 못한 상황이 발생할 수 있으므로 가능한 primitive types를 사용하고, autoboxing이 사용되는 경우만 성능 오버헤드를 염두에 둬야 합니다. 14. Using magic numbers or string - 코드 내에 설명이나 맥락과 관계없이 숫자, 문자열이 하드 코딩되어 있는 경우를 의미하는데요 이는 가독성이 감소하며, 유지 보수의 복잡성을 증가시키고, 유연성이 떨어질 수 있습니다. - 코드 리뷰에서도 굉장히 자주 나올만한 부분으로 항상 고려해야 할 것 같습니다. 15. Not using method overloading effectively

15 common mistakes while Programming in Java

Medium

15 common mistakes while Programming in Java

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2023년 7월 8일 오전 6:53

 • 

저장 10조회 1,884

댓글 0