본문 바로가기
반응형

개발자북클럽11

북클럽 클린코드 10장. 클래스 클래스 체계클래스를 정의하는 표준 자바 관례에 따르면가장 먼서 변수 목록이 나온다.정적 공개 상수가 있다면 맨 처음에 나온다.다음으로 정적 비공개 변수가 나오며이어서 비공개 인스턴스 변수가 나온다.공개 변수가 필요한 경우는 거의 없다.변수 목록 다음에는공개 함수가 나온다.비공개 함수는 자신을 호출하는 공개 함수 직후에 넣는다.클래스는 작아야 한다클래스는 작아야 한다.더 작아야 한다.작게가 기본 규칙이다.그러면 얼마나 작아야 하는가?함수는 물리적인 행 수로 크기를 측정했다.클래스는 다른 척도를 사용한다.클래스가 맡은 책임을 센다.메서드 개수도 작아야 하지만메서드 개수만 작다고 책임도 작은건 아니다.클래스 이름클래스의 책임을 기술한다.간결한 이름이 떠오르지 않는다면 필경 클래스 크기가 너무 커서 그렇다.클래.. 2024. 7. 9.
북클럽 클린코드 9장. 단위 테스트 TDD 법칙 세 가지첫째: 실패하는 단위 테스트를 작성할 때까지 실제 코드를 작성하지 않는다.둘째: 컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 단위 테스트를 작성한다.셋째: 현재 실패하는 테스트를 통과할 정도로만 실제 코드를 작성한다.실제 코드와 맞먹을 정도로 방대한 테스트 코드는 심각한 관리 문제를 유발하기도 한다.깨끗한 테스트 코드 유지하기일회용 테스트 코드와 단위 테스트는 간극이 아주 크다.실제 코드가 변화하면 테스트 코드도 같이 변해야 한다.테스트 코드가 더러우면 변경하기가 어려워진다.테스트 코드가 복잡할수록 변경하는 시간이 더 걸린다.테스트 코드를 막 짜도 좋다고 허용한 결정이 잘못된 거다.테스트 코드는 실제 코드 못지 않게 중요하다.테스트 코드는 사고와 설계와 주의가 필요하다.실제 코.. 2024. 7. 6.
북클럽 클린코드 8장. 경계 외부 소프트웨어와의 경계를 깔끔하게 처리하는 기법과 기교를 살펴보자.다른 사내 팀이든, 구매한 프로그램이든, 오픈소스든외부 코드 사용하기인터페이스 제공자와 사용자 사이의 차이제공자는 적용성을 넓히려 애쓴다.사용자는 자신의 요구에 집중하는 인터페이스를 바란다.인터페이스에 기능이 이것저것 많다면?사용자에게 필요하지 않은 기능까지 제공하는 문제가 발생한다.자료구조는 객체 안에 숨기고 인터페이스(함수)로 원하는 기능을 제공하자.맵 쓸때 무조건 캡슐화 하라는 소리가 아니다.맵을 여기저기 넘기지 말라는 말이다.자료구조를 어디 밖으로 넘기고 주고받고 하지 말라Map 인스턴스를 공개 API의 인수로 넘기거나 반환값으로 사용하지 않는다.#TODO Map에 한정된 이야기인가?Map과 같은 경계 인터페이스 라고 언급했는데 .. 2024. 7. 6.
북클럽 클린코드 7장. 오류 처리 오류 처리는 중요하지만 오류 처리 코드로 인해 프로그램 논리를 이해하기 어려워진다면 깨끗한 코드라 부르기 어렵다.우아하고 고상하게 오류를 처리하는 기법과 고려사항 몇 가지를 알아보자.오류 코드보다 예외를 사용하라오류 코드를 던지면 호출자가 즉시 오류를 처리해야 된다.예외를 던지면 호출자에서 처리할 수도 있고, 상단으로 넘길 수도 있다.예외를 던지면 정상 처리 흐름과 예외 처리 흐름이 분리돼서 코드가 깔끔해진다.Try-Catch-Finally 문부터 작성하라예외가 발생할만한 코드를 짤떄는 일단 감싸자강제로 예외를 일으키는 테스트 케이스를 작성한 후 테스트를 통과하게 코드를 작성하는 방법을 권장한다.자연스럽게 try 블록의 트랜잭션 범위부터 구현하게 되므로 범위 내에서 트랜잭션 본질을 유지하기 쉬워진다.미확.. 2024. 7. 3.
북클럽 클린코드 6장. 객체와 자료 구조 변수를 private으로 정의하는 이유가 있다.남들이 변수에 의존하지 않게 만들고 싶어서다.충동이는 변덕이든, 변수 타입이나 구현을 맘대로 바꾸고 싶어서다.[!NOTE]그렇다면 어째서 수많은 프로그래머가 조회(getter) 함수와 설정(setter) 함수를 당연하게 public으로 만들어 비공개 변수를 외부에 노출할까?자료 추상화인터페이스는 자료 구조를 명백하게 표현한다.클래스 메서드가 접근 정책을 강제한다.좌표를 읽을 때는 각 값을 개별적으로 읽어야 한다.하지만 좌표를 설정할 때는 두 값을 한꺼번에 설정해야 한다.==변수 사이에 함수라는 계층을 넣는다고 구현이 저절로 감춰지지는 않는다.==구현을 감추려면 추상화가 필요하다.그저 형식 논리에 치우쳐 getter/setter를 단다고 되는게 아니다.==추상.. 2024. 7. 1.
북클럽 클린코드 5장. 형식 맞추기 형식을 깔끔하게 맞춰 코드를 짜야 한다.코드 형식을 맞추기 위한 간단한 규칙을 정하고 그 규칙을 착실히 따라야 한다.팀으로 일한다면 팀이 합의해 규칙을 정하고 모두가 그 규칙을 따라야 한다.필요하다면 규칙을 자동으로 적용하는 도구를 활용한다.형식을 맞추는 목적융통성없이 맹목적으로 따르면 안된다.코드 형식은 의사소통의 일환이다.의사소통은 전문 개발자의 일차적인 의무다.돌아가는 코드가 전문 개발자의 일차적인 의무라 여길지도 모르겠다.하지만 이 책을 읽으면서 생각이 바뀌었기 바란다.오늘 구현한 기능이 다음 버전에서 바뀔 확률은 아주 높다.그런데 오늘 구현한 코드의 가독성은 앞으로 바뀔 코드의 품질에 지대한 영향을 끼친다.오랜 시간이 지나 원래 코드의 흔적을 더 이상 찾아보기 어려울 정도로 코드가 바뀌어도 맨 .. 2024. 6. 29.
반응형