본문 바로가기

Study19

[Clean-Code] Chapter. 4-6 Clean-Code_week2_yerimi11 [주석] 나쁜 코드에 주석을 달지 마라. 주석은 나쁜 코드를 보완하지 못한다. 새로 짜라. 코드로 의도를 표현해라. ex) if (employee.isEligibleForFullBenefits()) 주석으로 달려는 설명을 함수로 만들어 표현해도 충분하다. 부정확한 주석은 아예 없는 주석보다 훨씬 더 나쁘다. 주석을 가능한 줄이도록 꾸준히 노력해야 한다. 주석이 적절한 예제는 다음과 같다. public static SimpleDateFormat makeStandardHttpDateFormat() { // SimpleDateFormat은 스레드에 안전하지 못하다. // 따라서 각 인스턴스를 독립적으로 생성해야 한다. SimpleDateFormat df = new.. 2023. 6. 21.
[Clean-Code] Chapter. 1-3 Clean-Code_week1_yerimi11 [코드의 존재] 앞으로 프로그래밍 언어에서 추상화 수준은 점차 높아지리라 예상된다. 어떤 언어를 사용하든 코드는 기계가 이해하고 실행할 정도로 엄밀, 정확, 상세, 정형화 되어야 한다. 제대로 명시한 요구사항은 코드만큼 정형적이며, 테스트 케이스로 사용해도 좋다. [재설계] 일단 일정에 맞춰 급하게 짜고 나중에 리팩토링..? 나중은 결코 오지 않는다. 새 시스템이 기존 시스템 기능을 100% 제공하지 않는 한 관리층은 기존 시스템을 대체하지 않을 것이다. -> 시간을 들여 클린코드를 만드는 노력이 비용 절감 뿐만 아니라 전문가로서 살아남는 길이다. [클린 코드?] 의존성을 최대한 줄여야 유지보수가 쉬워진다. 오류는 명백한 전략에 의거해 철저히 처리한다. 효율.. 2023. 6. 20.
[JAVA] template method패턴 Template Method 패턴은 객체지향 디자인 패턴 중 하나로, 알고리즘의 구조를 정의하고 일부 단계를 서브클래스에서 구체화하는 방법이다. 이 패턴은 알고리즘의 공통 구조를 부모 클래스에서 정의하고, 일부 단계를 서브클래스에서 오버라이딩하여 구체화한다. Template Method 패턴은 다음과 같은 구성 요소로 구성된다. 1) Abstract Class (추상 클래스) 알고리즘의 공통 구조를 정의하는 추상 클래스이다. 이 클래스에는 Template Method라는 이름의 메서드가 포함되며, 이 메서드는 알고리즘의 구조를 정의하는데 사용된다. Template Method는 일련의 단계를 순서대로 호출하며, 일부 단계는 추상 메서드나 기본 구현 메서드로 정의된다. 2) Concrete Classes .. 2023. 6. 19.
[JAVA] BUILD-OPERATE-CHECK 패턴 BUILD-OPERATE-CHECK (또는 Arrange-Act-Assert) 패턴은 소프트웨어 테스트의 구성 방식 중 하나이다. 이 패턴은 테스트 케이스를 구성하는 단계와 테스트를 실행하고 결과를 확인하는 단계로 나누어져 있다. 패턴의 각 단계는 다음과 같이 정의된다. 1) BUILD 또는 ARRANGE 테스트 환경을 설정하고 테스트에 필요한 객체, 데이터 또는 상태를 준비한다. 이 단계에서는 테스트에 필요한 사전 조건을 설정한다. 2) OPERATE 또는 ACT 준비된 테스트 환경에서 실제로 테스트 대상을 실행하거나 상호작용한다. 테스트 대상에 대한 동작을 수행한다. 3) CHECK 또는 ASSERT 실행된 결과를 검증하여 예상된 동작과 일치하는지 확인한다. 테스트 결과를 평가하여 기대한 결과와 일치.. 2023. 6. 17.
[JAVA] given-when-then 관례 given-when-then은 행위 주도 개발(Behavior-Driven Development, BDD)에서 사용되는 테스트 관례이다. 이 관례는 테스트 케이스를 작성할 때 구조화와 가독성을 높여주는 방식으로 테스트를 구성한다. given-when-then의 각 부분은 다음과 같이 정의된다. 1) given 테스트를 위한 사전 조건을 설정하는 단계이다. 테스트 환경을 준비하고, 초기 상태를 설정한다. 이 단계에서는 테스트에 필요한 객체, 데이터, 상태 등을 사전에 정의한다. 2) when 테스트 대상의 동작을 실행하는 단계이다. 주로 어떤 이벤트나 동작을 수행하는 부분이며, 테스트 대상이 실제로 실행되는 시점이다. 3) then 실행된 결과를 검증하는 단계이다. 테스트 대상의 동작에 대한 예상 결과를 .. 2023. 6. 16.
[JAVA] 의존성이라는 비용이 이익보다 크다? Mock? '의존성이라는 비용이 이익보다 크다'라는 말은, 일반적으로 소프트웨어 개발이나 시스템 설계에서 의존성이 가지는 부담이 그로 인해 얻는 이점을 상쇄할 정도로 크다는 의미이다. 의존성은 한 요소가 다른 요소에 의존하거나 종속됨을 나타낸다. 예를 들어, 클래스 A가 클래스 B를 사용하고 있다면, 클래스 A는 클래스 B에 의존성을 가지고 있다. 의존성은 코드 간의 상호작용을 통해 구현되며, 이는 모듈 또는 객체들 사이의 관계를 형성합니다. - 의존성이 비용으로 작용하는 이유 1. 변경의 전파: 의존성이 있는 요소 중 하나를 변경하면, 그 변경은 의존하는 다른 요소에도 영향을 미칠 수 있다. 따라서 변경이 전파되는 것을 관리하고 조절하는 데 추가적인 비용이 발생할 수 있다. 2. 결합도 증가: 의존성이 많아질수록.. 2023. 6. 15.