DAY 2 (p.62-127)
📚 오늘 TIL 3줄 요약
결합도 줄이기 - 분리하여 각각 수정 용이함
단일 책임 원칙 - 모듈하나만 바꾸면 요구사항 반영가능함
이름 짓기 - 코드 가독성
코드중복
모든 지식은 시스템 내에서 한 번만, 애매하지 않고 권위있게 표현해라.
코드의 하나를 바꿀때 코드, 문서, DB 스키마, 스키마담는 구조 등도 바꾸는가? 그건 DRY하지 않다.
but) 모든 코드 중복이 지식의 중복은 아니다. 코드는 동일하지만 표현하는 지식은 다르다. 우연이지 중복이 아니다.
문서화 중복
주석으로 코드를 두번 설명하지 마라
함수명에서 하는 일을 알려줘라
내부 API 중복
정의할 수 있는 도구 찾기 : MOCK API, 기능테스트 생성, 클라이언트도 다양한 언어도 생성해준다. 이 도구로 API 정의를 중앙저장소에 넣고 여러 팀이 공유하면 된다
외부 API 중복
API명세를 여러분의 API도구로 불러와서 사용
데이터 저장소와의 중복
데이터 저장소의 스키마 분석 기능을 사용하기 : 저장소와 코드 중복 제거가능
ex) 영속성 프레임워크
코드에서 외부데이터를 고정된 구조(구조체나 클래스의 인스턴스)대신,
키-값 데이터구조(맵, 해시, dictionary)에 삽입
개발자 간 중복
적극적으로 빈번한 소통 장려. = 일일 스크럼 스탠드업 미팅 운영, Slack 사용
팀원 1명은 사서(지식교환).
코드리뷰로 타인의 코드와 문서읽고 기억하라
1. 생산성향상 장점
2. 리스크감소 장점
3. 설계할때
Q. 특정기능의 요구사항을 대폭 변경했을 시, 몇개 모듈이 영향을 받는가?
A. 하나여야 한다.
유연하고 적응가능한 소프트웨어. 얼마든지 결정이 바뀔수있다.
중요 요구사항에서 위험이 커 보이는 곳을 먼저 작성하도록 우선순위 정하기
폐기될 코드
UI 프로토타입
: 화이트보드에 그림 그려서, 그림판, 인터페이스 빌더 등 기능구현안하고도 만들어 볼 수 있음. 외양과 상호작용에만 집중하여 코드나 마크업에는 신경꺼도 된다
파이썬, 루비처럼 고수준언어로 프로토타입때만 구현해도 된다. 어차피 버릴거니 언어 바껴도 상관없다
아키텍쳐 프로토타이핑
가역성 부분(p.91)부터 코드예시로 설명하는 부분이 이해가 안가기 시작했다;;;
예광탄은 얼핏 이해했고,,,도메인언어는 진짜 모르겠다...
근데 추정치를 기록하는 습관은 취업했을시 큰 도움이 될 것 같다.
데이터의 DRY위반, 외부와 연결될때 표현상의 중복
영속성 프레임워크 p.52 (전자책p.77)
persistence framework 프로그램 종료해도 데이터가 그대로 보존되는 특성
데이터를 관계형DB 같은 저장소에 쉽게 저장하고 불러오게 구현해준다
ex) Hibernate, MyBatis
유틸리티 루틴 (=유틸리티 소프트웨어)
데메테르 법칙 p.182
GoF의 디자인패턴에서 싱글턴 패턴 : 특정 클래스 객체가 하나의 인스턴스만을 갖도록 보장함
15 추정 p.119