Development/JAVA18 IntelliJ IDEA - Spring Legacy Project 만들기 최근에 꽤 큰 지름을 했다. JetBrains사의 상용 IDE인 IntelliJ IDEA를 구매한 것이다. 그것도 단일 제품이 아닌 All 패키지로 해서 다양한 툴들이 포함된 라이센스로 구매를 했다. 대략 240달러의 가격 이었는데…카드 명세서 보니까 이놈에 환율이 어떻게 돌아가고 있는지 31만원 가량이 결재되었다… ㅠ.ㅠ 사실 이클립스로도 충분히 개발할 수 있고, 아직 현역에서도 충분한 위력을 발휘하고 있는 IDE인 만큼 굳이 큰 돈을 주고 구매해야 하는가에 대해 꽤 긴 시간 고민을 하긴 했었다. 하지만 현재 내가 Mac을 쓰고 있는데, 이 Mac용 이클립스의 인터페이스가 꽤나 조잡하다. 일단 기본적으로 표시되는 폰트가 너무 작고 가끔은 폰트와 퀵메뉴 아이콘들이 깨져보일 때도 있을 정도다. 슬슬 노안이.. 2021. 5. 13. [디비파기 | PMD] AddEmptyString 외 2건 AddEmptyString우선순위 : 3The conversion of literals to strings by concatenating them with empty strings is inefficient. It is much better to use one of the type-specific toString() methods instead. 문자열로 형변환을 할 때 빈 문자열로 + 연산을 하는 것은 비효율적이다. 이럴 경우에는 각 타입별로 구현된 toString() 메소드를 이용하는 것이 더 낫다. 샘플 코드12String s = "" + 123; // inefficient String t = Integer.toString(456); // preferred approach AvoidArrayLoop.. 2016. 4. 24. [Spring] 작은 사이트 구축 과정에서 발생한 소소한 에러들... 변수명 맞추기...잘 만들어지고 있던 사이트에 마지막 기능을 추가하는 중... 갑자기 등록과 수정(POST,PUT) 과정에서 400 Bad Request 오류가 발생을 한다. 다른 메뉴에서는 잘 되는 것으로 보아 설정의 문제는 아니고... 새로 구현된 기능에 국한된 문제인 듯싶은데... 반나절 이상을 날리면서 오늘 아침 겨우 찾아낸 문제의 원인은... 서버측 domain 클래스의 변수명과 등록/수정 시 넘기는 JSON 문자열의 변수명이 일치하지 않았던 것...ㅠ.ㅠ 서버쪽에서 변수명에 오타가 하나 있어 수정을 했는데 클라이언트쪽에서 수정을 안한 것이다. 참으로 소박한 실수였다...ㅠ.ㅠ 2016. 4. 19. [디비파기 | PMD] AvoidInstantiatingObjectsInLoops 외 3건 AvoidInstantiatingObjectsInLoops우선순위 : 3New objects created within loops should be checked to see if they can created outside them and reused. Loop 안에서 객체의 인스턴스를 생성할 때는 Loop 밖에서 생성한 후 재사용 가능한지 확인하라 샘플코드12345678public class Something {public static void main( String as[] ) { for (int i = 0; i < 10; i++) {Foo f = new Foo(); // Avoid this whenever you can it's really expensive} }} 부연설명 잘 아다시피 insta.. 2016. 4. 11. [디비 파기 | PMD] PositionLiteralsFirstInComparisons 외 4건 PositionLiteralsFirstInComparisons우선순위 : 3 Position literals first in comparisons, if the second argument is null then NullPointerExceptions can be avoided, they will just return false. equals()를 통한 비교를 할 때는 항상 상수 값을 앞에 두어야 한다. 만일 두번째 인자가 null인 경우에는 NullPointerException이 발생하지 않으며 단순히 false를 리턴하게 된다. 하지만 상수가 아닌 참조타입의 변수가 앞에 오게 되면 이 변수가 null인 경우 NullPointerException이 발생하게 된다. 샘플 코드12345class Foo {.. 2016. 4. 3. [디비 파기 | PMD] FinalFieldCouldBeStatic 외 4건 FinalFieldCouldBeStatic우선순위 : 3 컴파일 타임에 상수가 할당되는 final 필드는 자동으로 static으로 변환된다. 따라서 이러한 필드들은 runtime시의 부하를 줄여주기 위해 static을 명시적으로 지정해주는 것이 좋다. 샘플 코드123public class Foo { public final int BAR = 42; // this could be static and save some space} OptimizableToArrayCall우선순위 : 3Calls to a collection’s toArray() method should specify target arrays sized to match the size of the collection. Initial arrays .. 2016. 3. 26. [디비 파기 | PMD] ConstructorCallsOverridableMethod외 4건 ConstructorCallsOverridableMethod우선순위 : 1영어 실력이 그지같아서 번역이 힘드네요…원문 적고 설명은 샘플 밑에 부연 설명으로 대신하겠습니다.마지막 줄만 설명하자면 일반적인 제어의 흐름을 따르는 메소드 호출을 하라는 것인데 예를들어생성자인 Foo()에서 public 메소드인 buz()를 호출하는 private 메소드 bar()를 호출하는 것과 같이 비비 꼬아놓으면문제의 소지가 있다는 말입니다. 원문Calling overridable methods during construction poses a risk of invoking methods on an incompletely constructed object and can be difficult to debug. It may l.. 2016. 3. 19. [디비 파기 | PMD] NullAssignment 외 3건 NullAssignment우선순위 : 3코드 중간에서 변수에 null을 할당하는 것은 좋지 않은 형태이다.이런 형태의 할당은 종종 개발자들이 프로그램의 흐름을 이해하지 못하고 코딩을 하고 있다는 표시가 될 수 있다.주의 : 이런 형태의 경우가 드물게는 garbage collectoin에 도움이 되는 경우도 있다. (물론 잘 이해하고 사용했을경우) 이렇게 의도하고 사용한 경우에는 이 룰을 무시해도 좋다. 샘플코드1234567public void bar() { Object x = null; // this is OK x = new Object(); // big, complex piece of code here x = null; // this is not required // big, complex piece .. 2016. 3. 13. [디비 파기 | PMD] AvoidBranchingStatementAsLastInLoop외 3건 AvoidBranchingStatementAsLastInLoop우선순위 : 2루프의 가장 마지막 위치에서 분기문을 사용하는 경우 버그가 발생할 가능성이 높다.사용한 방법이 버그가 아닌지 확인하거나 다른 접근 방법을 사용해야 한다. 샘플 코드1234567891011121314 // unusual use of branching statement in a loopfor (int i = 0; i 2016. 3. 5. 이전 1 2 다음 반응형