profile
inho ha / ian(swatchon) / iha(42seoul)

[클린 코드 읽고 정리해두고 다시 보기] 냄새와 휴리스틱

다른 시스템에 저장할 정보를 주석으로 작성하지 마라.주석은 코드와 설계에 기술적인 설명을 부연하는 수단이다오래되거나 잘못된 주석은 바로 삭제하라코드 내용을 중복으로 설명하는 주석은 삭제하라.주석을 작성하는 경우에는 단어를 신중하게 선택하고, 문법도 준수하고, 간결 명료

2024년 10월 10일
·
0개의 댓글
·

[클린 코드 읽고 정리해두고 다시 보기] SerialDate 리팩터링

SerialDateTests 라는 클래스는 테스트 커버리지가 50% 정도이다.테스트 케이스 추가오류 문자열 반환하는 대신 에러를 던지도록 수정serial number 를 사용해 클래스를 구현하여 SerialDate이지만, 1899년 12월 30일 이후 serial 보다

2024년 9월 26일
·
0개의 댓글
·

[클린 코드 읽고 정리해두고 다시 보기] JUnit 들여다보기

JUnit의 ComparisonCompactor 클래스 코드 개선하는 작업 324p변수명 앞에 붙은 타입 표시 제거조건문 캡슐화변수명 명확하게 변경함수명 명확하게 변경함수 역할 분리함수에 숨겨진 시간적인 결합 제거 (두 함수를 순서대로 호출하지 않으면 실패하는 케이스를

2024년 9월 25일
·
0개의 댓글
·

[클린 코드 읽고 정리해두고 다시 보기] 점진적인 개선

246pString args를 파싱하는 클래스를 구현하는 내용입니다.처음에 boolean 타입만 파싱하도록 구현을 하였을 때는 깔끔한 코드 였지만, 이후 다른 타입에 대한 처리를 추가하여 코드가 지저분해졌습니다.여기에 추가로 또 다른 타입에 대한 처리가 추가되면 매우

2024년 9월 23일
·
0개의 댓글
·

[클린 코드 읽고 정리해두고 다시 보기] 동시성

동시성은 what과 when을 분리하여 애플리케이션 구조와 효율을 개선하는 전략이다.IO 작업 대기 중에 다른 작업을 수행하여 응답 시간과 작업 처리량 개선이 가능하다.동시성은 대기 시간이 긴 경우에 성능 향상의 이점이 있다.그러나 동시성은 성능과 코드 작성 측면에 부

2024년 9월 22일
·
0개의 댓글
·

[클린 코드 읽고 정리해두고 다시 보기] 창발성

켄트 벡이 제시한 단순한 설계 규칙 4가지는 소프트웨어 설계 품질을 크게 높여준다.모든 테스트를 실행한다.중복을 없앤다.프로그래머 의도를 표현한다.클래스와 메서드 수를 최소로 줄인다.모든 테스트를 실행하기 위해서는 테스트 케이스를 작성해야한다.테스트가 가능한 시스템을

2024년 9월 22일
·
0개의 댓글
·

[클린 코드 읽고 정리해두고 다시 보기] 시스템

도시를 세운다면? 도시는 수도 관리 팀, 전력 관리 팀 등 적절한 추상화와 모듈화로 잘 동작한다. 높은 추상화 수준인 시스템 수준에서도 깨끗함을 유지하는 것이 중요하다. 시스템 제작과 시스템 사용을 분리하라 소프트웨어 시스템은 애플리케이션 객체를 제작하고 의존성을 서

2024년 9월 21일
·
0개의 댓글
·

[클린 코드 읽고 정리해두고 다시 보기] 클래스

클래스를 정의하는 표준 자바 관례에 따르면, 가장 먼저 변수 목록이 나온다.static public 상수, static private 변수, private 인스턴스 변수 순서로 나온다.이후 public 함수가 나오고, private 함수는 호출하는 public 함수 직

2024년 9월 20일
·
0개의 댓글
·

[클린 코드 읽고 정리해두고 다시 보기] 단위 테스트

일하다 보면 매우 많은 테스트 케이스가 나오고, 심각한 관리 문제를 유발할 수 있다.실제 코드가 진화하면 테스트 코드도 변해야한다.테스트 코드가 지저분할수록 변경하기 어려워진다.테스트 코드를 작성할 때 유연성, 유지보수성, 재사용성을 고려하라.깨끗한 테스트 코드를 위해

2024년 9월 20일
·
0개의 댓글
·

[클린 코드 읽고 정리해두고 다시 보기] 경계

외부 코드는 프로그램에 필요한 인터페이스 뿐만 아니라 필요하지 않은 인터페이스도 함께 제공한다.이를 클래스로 감싸 필요한 인터페이스만 제공하면 오용을 막을 수 있고, 외부 코드가 변하더라도 사용하는 모든 코드를 수정하지 않고 감싸는 클래스만 수정하여 처리할 수 있다.항

2024년 9월 20일
·
0개의 댓글
·

[클린 코드 읽고 정리해두고 다시 보기] 오류 처리

오류 코드를 반환하면 함수를 호출한 즉시 오류를 확인해야 하기 때문에 조건문이 중첩된다.try 블록은 트랜잭션과 비슷하다.try 블록의 트랜잭션 범위부터 구현한다면 트랜잭션 본질을 유지하기 쉬워진다.checked 예외는 Open Closed Principle를 위반한다

2024년 9월 20일
·
0개의 댓글
·

[클린 코드 읽고 정리해두고 다시 보기] 객체와 자료 구조

클래스의 변수는 get, set 으로 그대로 노출시키지 마라세세하게 공개하기보다는 추상적인 개념으로 표현하라변수 하나하나 get 으로 가져와서 연산하여 사용하지 말고, 클래스에서 연산해서 필요한 값을 리턴해줘라절차적인 코드는 기존 자료 구조를 변경하지 않으면서 새 함

2024년 9월 20일
·
0개의 댓글
·

[클린 코드 읽고 정리해두고 다시 보기] 형식 맞추기

오늘 구현한 코드의 가독성은 앞으로 바뀔 코드의 품질에 지대한 영향을 미친다.일반적으로 큰 파일보다 작은 파일이 이해하기 쉽다.신문 기사처럼, 파일 이름을 명확하게 작성, 첫 부분은 고차원 개념과 알고리즘을 설명, 아래로 내려갈수록 의도를 세세하게 묘사, 마지막에는 가

2024년 9월 16일
·
0개의 댓글
·

[클린 코드 읽고 정리해두고 다시 보기] 주석

주석은 나쁜 코드를 보완하지 못한다 좋은 코드는 주석이 있는 나쁜 코드보다 좋다. 주석으로 설명하는 대신, 좋은 코드로 개선하라. 코드로 의도를 표현하라 if((employee.flags &

2024년 9월 14일
·
0개의 댓글
·

[클린 코드 읽고 정리해두고 다시 보기] 함수

작게 만들어라 함수는 작게, 더 작게 만들어라, 작을수록 더 좋다. if / else / while 에는 한 줄만 들어가고, 거기서 함수를 호출하라 한 가지만 해라! 여러 작업을 하는 함수는 분리 단순히 다른 표현이 아니라 의미 있는 이름으로 다른 함수를 추출할 수

2024년 9월 12일
·
0개의 댓글
·

[클린 코드 읽고 정리해두고 다시 보기] 의미 있는 이름

변수 또는 함수의 존재 이유, 수행 기능, 사용 방법이 드러나야함List<int\[]> theList -> gameBoardcellSTATUS_VALUE == FLAGGED -> cell.isFlagged()널리 쓰이는 의미가 있는 단어를 다른 의미로 사용 금지L

2024년 9월 12일
·
0개의 댓글
·

코드 스타일 적용 자동화

인천의 한 일요일, 지인과 함께 인증 서비스 개발을 하기로 하였다.프로젝트 세팅 중에 코드 스타일 적용 방식에 대하여 이야기 하였다.지인분의 회사에서는 pre-commit을 활용하여 commit 이전에 코드 스타일이 자동으로 적용되도록 하고 있다고 한다.이를 활용하면

2024년 7월 15일
·
0개의 댓글
·

프로덕션 서비스에서 무중단 테이블 분리

서울의 한 월요일.장바구니 테이블을 분리하는 작업을 담당하게 되었습니다.장바구니 테이블은 고객이 주문할 상품을 담아두는 테이블입니다.장바구니 테이블에는 샘플 상품과 일반 상품이 함께 담겨있습니다.샘플 상품에 대한 정책 변경으로 장바구니 테이블에서 샘플 상품과 일반 상품

2024년 6월 25일
·
0개의 댓글
·

모호한 컬럼명 리팩토링에서 느낀 테스트 코드의 중요성

서울의 한 월요일. 내가 작성한 코드가 예상과 다르게 동작했다. 모델 인스턴스가 리턴될 것으로 예상했는데 string 이 리턴되었다. 문제 발견 customer와 country는 연관관계가 있는 모델이다. customer에 countryId 컬럼이 있고, 그래서 위

2024년 6월 25일
·
0개의 댓글
·

Redis가 RDBMS보다 빠른 이유

서울의 한 수요일.Redis가 RDBMS보다 빠른 이유에 대하여 질문을 받았습니다.이에 대하여 면접 과정 혹은 그 이후에 학습한 내용을 정리해 보겠습니다.Redis는 메모리에 데이터를 저장하기 때문에 디스크에 저장하는 RDBMS보다 빠르다.이는 구글에 Redis가 빠른

2024년 6월 18일
·
0개의 댓글
·