독서_dev
-
[도메인 주도 설계 철저 입문] 값 객체독서_dev/DDD 2024. 7. 19. 00:17
값 객체 → 시스템 특유의 ‘값’ 을 표현하는 객체 → 코드 자체가 문서 ㄴ 성질 → 불변 / 교환 / 등가 비교 ㄴ 기준 → 규칙 / 낱개 ㄴ 행동 정의 → 자신만의 규칙을 갖는 도메인 객체 ㄴ 장점 → 표현력 증가 / 무결성 유지 / 오대입 방지 / 로직 분산 방지 2.1 값 객체란 ?값 객체란 시스템 특유의 '값'을 표현하기 위해 정의하는 객체다. 값 객체 역시 값의 성질을 그대로 갖는다. 2.2 값의 성질과 값 객체의 구현값(객체)의 성질- 변하지 않는다.대입은 값이 변하는 것이 아니다. 내용이 변하는 것이지 값 자체가 수정되는 것은 아니다.- 주고받을 수 있다. 교환 가능하다.값 자체 수정이 아닌 내용의 수정, 대입- 등가성을 비교할 수 있다.값끼리 직접 비교. 값 객체라면 일부를 꺼내 비교하..
-
[오브젝트] 10. 상속과 코드 재사용독서_dev 2024. 5. 30. 08:19
- 중복 코드는 변경을 방해한다!- 중복된 코드를 제거하는 대표적 방법 : 상속, 합성- 상속은 결합도를 높인다. 쓸 때 매우 주의할 것. 그래도 쓴다면 추상화에 의존하도록 설계(결론: 합성 좋잖아~ 합성 쓰자.) 중복 코드는 왜 문제인가?(우리를 주저하게 만들고 동료들을 의심하게 만든다.)변경을 방해한다.어떤 코드가 중복인지 찾아야 한다.모두 일괄되게 수정해야 한다.모든 중복 코드를 개별적으로 테스트 해야 한다. Don't Repeat Yourself!! (DRY)중복코드를 쓰지 말자. 그럼 어떻게 해야 하는가.타입 코드 사용하지만, 낮은 응집도와 높은 결합도상속편하지만, 개발자의 가정을 이해하기 전에는 코드를 이해하기 어렵다.-> 결합도를 높인다. 상속을 위한 경고상속은 코드 재사용과 관련된 대부분의..
-
4장 주석독서_dev/Clean Code 2022. 1. 14. 22:35
있으나 마나 한 주석을 달려는 유혹에서 벗어나 코드를 정리하라. 더 낫고, 행복한 프로그래머가 되는 지름길이다. 함수나 변수로 표현할 수 있다면 주석을 달지 마라 주석은 나쁜 코드를 보완하지 못한다 코드로 의도를 표현하라! // 직원에게 복지 혜택을 받을 자격이 있는지 검사한다. if ((employee.flags & HOURLY_FLAG) && (employee.age > 65)) 위 코드보단 if (employee.isEligibleForFullBenefits()) 좋은 주석 법적인 주석 정보를 제공하는 주석 의도를 설명하는 주석 의미를 명료하게 밝히는 주석 결과를 경고하는 주석 TODO 주석 중요성을 강조하는 주석 하지만 코드로 설명할 수 있다면 그것이 베스트 위치를 표시하는 주석 반드시 필요할 ..
-
클린 코드 3장 함수독서_dev/Clean Code 2022. 1. 14. 22:34
// 3-1. HtmlUtil.java (FitNesse 20070619) public static String testableHtml { PageData pageData, boolean includeSuiteSetup } throws Exception { Wikipage wikiPage = pageData.getWikiPage(); StringBuffer buffer = new StringBuffer(); if (pageData.hasAttribute("Test")) { if (includeSuiteSetup) { WikiPage suiteSetup = PageCrawlerImpl.getInheritedPage( SuiteResponder.SUITE_SETUP_NAME, wikiPage ); if (s..
-
클린 코드 2장 의미 있는 이름독서_dev/Clean Code 2022. 1. 14. 22:31
의도를 분명히 밝혀라 변수나 함수 그리고 클래스 이름은 다음과 같은 굵직한 질문에 모두 답해야 한다. 변수(혹은 함수나 클래스)의 존재 이유는? 수행 기능은? 사용 방법은? 따로 주석이 필요하다면 의도를 분명히 드러내지 못했다는 말이다. int d; // 경과 시간(단위: 날짜) // ==== d보다는 아래 변수들이 훨씬 명확 int elapsedTimeInDays; int daysSinceCreation; int daysSinceModification; int fileAgeInDays; public List getThem() { List list1 = new ArrayList(); for (int[] x : theList) if (x[0] == 4) list1.add(x); return list1; }..
-
클린 코드 1장 깨끗한 코드독서_dev/Clean Code 2022. 1. 14. 22:29
깨끗한 코드를 작성하는 방법은 배우기 어렵다. 단순히 원칙과 패턴을 안다고 깨끗한 코드가 나오지 않는다. 고생을 해야 한다. 스스로 연습하고 실패도 맛봐야 한다. 남들이 시도하다 실패하는 모습도 봐야 한다. 그들이 넘어지고 일어서는 모습도 봐야 한다. 결정을 내리느라 고민하는 모습, 잘못된 결정으로 대가를 치르는 모습도 봐야 한다. "나중은 결코 오지 않는다." 기한을 맞추는 유일한 방법은, 그러니까 빨리 가는 유일한 방법은, 언제나 코드를 최대한 깨끗하게 유지하는 습관이다. 프로그래머들이 대충 넘어가는 부분 중 하나가 오류 처리다. 메모리 누수, 경쟁 상태(race condition), 일관성 없는 명명법이 또 다른 예다. 한 마디로 요악하면, 깨끗한 코드는 세세한 사항까지 처리하는 코드다. 깨끗한 코..