전체 글

전체 글

    [백준 - 23247] Ten [C++]

    1. 문제 https://www.acmicpc.net/problem/23247 23247번: Ten A real estate company IC is managing a rectangular section of land. The section is divided into $mn$ segments in $m \times n$ matrix shape, where the number of rows and that of columns are $m$ and $n$, respectively. Each segment has its own price as a posi www.acmicpc.net 2. 풀이 사각형의 양 끝 점을 잡아서 사각형의 숫자들을 다 더하는 것을 반복하는 방법을 떠올리는 것이 가장 쉽다. 그러나 ..

    Refactoring with SonarLint - Repository

    SonarLint라는 툴이 권장하는 방향으로 코드 리팩토링을 하면서 리팩토링 규칙들을 기록하는 글입니다! 중복되는 규칙들은 한 번만 작성하였습니다. 💡 BuildingCustomRepositoryImpl 반복되는 문자열 리터럴을 상수로 정의하라 private static final 키워드로 상수를 정의하여 코드에 반영했습니다. final vs static final final만 사용하면 해당 필드는 변경이 불가능하지만 클래스의 각 인스턴스마다 그 필드의 복사본이 생성됩니다. 이는 필요 이상으로 메모리를 사용하게 되므로, 특히 그 필드의 값이 모든 인스턴스에서 동일할 경우, 비효율적일 수 있습니다. static final을 사용하면 해당 필드는 클래스 레벨에서 한번만 초기화되며 모든 인스턴스에서 공유하게 ..

    Refactoring with SonarLint - Service

    SonarLint라는 툴이 권장하는 방향으로 코드 리팩토링을 하면서 리팩토링 규칙들을 기록하는 글입니다! 중복되는 규칙들은 한 번만 작성하였습니다. 💡 BuildingServiceImpl 사용하지 않는 메소드 파라미터는 삭제하라 해당 메소드 자체를 사용하지 않아서 삭제했습니다. // Noncompliant Code public Building updateBuilding(BuildingOptionalDto buildingOptionalDto) { return null; } 💡 FileProcessServiceImpl replaceAll 함수를 호출하는 대신 replace 함수를 호출하라 replace 함수로 대체했습니다. 설명 String::replaceAll 메소드는 호출될 때마다 java.util.re..

    Refactoring with SonarLint - Controller

    SonarLint라는 툴이 권장하는 방향으로 코드 리팩토링을 하면서 리팩토링 규칙들을 기록하는 글입니다! 중복되는 규칙들은 한 번만 작성하였습니다. 💡 BuildingRestController 하나의 파라미터만 가지는 람다이면 파라미터의 괄호를 없애라 // Noncompliant Code (building) -> BuildingSerializer.toBuildingListResponse(building) // Compliant Solution building -> BuildingSerializer.toBuildingListResponse(building) 람다를 메소드 참조로 바꿔라 // Noncompliant Code building -> BuildingSerializer.toBuildingListRe..

    이펙티브 자바 - 10장. 예외

    10장 - 예외 💡 예외는 진짜 예외 상황에만 사용하라 “예외를 정상적인 제어 흐름에서 사용해서는 안 된다.” 1. 예외를 잘못 사용한 예 // 예외를 완전히 잘못 사용한 예 try { int i = 0; while(true) range[i++].climb(); } catch(ArrayIndexOutOfBoundsException e) { } 위의 예시는 아주 끔찍한 코드임. 무한 루프를 돌다가 배열의 끝에 도달해 ArrayIndexOutOfBoundsException이 발생하면 끝을 내는 것. 이 코드는 잘못된 추론을 근거로 성능을 높여보려 한 사례임. JVM은 배열에 접근할 때마다 경계를 넘지 않는지 검사하는데, 일반적인 반복문도 배열 경계에 도달하면 종료한다. → 따라서 이 검사를 반복문에도 명시하..

    이펙티브 자바 - 9장. 일반적인 프로그래밍 원칙

    9장 - 일반적인 프로그래밍 원칙 💡 지역변수의 범위를 최소화하라 “지역변수의 유효 범위를 최소로 줄이면 코드 가독성과 유지보수성이 높아지고 오류 가능성은 낮아진다” 1. 지역변수의 범위를 줄이는 방법 지역변수의 범위를 줄이는 가장 강력한 기법은 역시 ‘가장 처음 쓰일 때 선언하기’다. 사용하려면 멀었는데, 미리 선언부터 해두면 코드가 어수선해져 가독성이 떨어짐. 미리 선언해두면 변수를 실제로 사용하는 시점엔 타입과 초깃값이 기억나지 않을 수도 있음 → 거의 모든 지역변수는 선언과 동시에 초기화해야 한다. 메서드를 작게 유지하고 한 가지 기능에 집중하기 한 메서드에서 여러 가지 기능을 처리한다면 그중 한 기능과만 관련된 지역변수라도 다른 기능을 수행하는 코드에서 접근할 수 있을 것임. → 메서드를 기능별..