본문 바로가기

All199

[클린코드] 21일차/22일차/23일차 - 11장 시스템 [클린코드] 21일차 - 생성과 사용 로직 분리 (부제: 조금은 불친절한 시스템장 톺아보기) 클린코드 21일차 (p. 189~191(10장) / 192~197(11장) ) 클린코드 22일차 (p. 198~205(11장) ) 클린코드 23일차 (p. 206~215(11장) ) 11장 시스템 1. 도시를 세운다면 ? - 도시를 세운다면 혼자서 직접 관리는 불가능하다. 이미 세워진 도시라도 한 사람의 힘으로는 무리다. - 도시는 각 분야를 관리하는 팀이 있기에 잘 돌아간다. (수도 관리 팀, 전력 관리 팀, 교통 관리 팀 ..) - 도시가 돌아가는 또 다른 이유는 적절한 추상화와 모듈화 때문이다. - 큰 그림을 이해하지 못할지라도 개인과 개인이 관리하는 '구성요소'는 효율적으로 돌아간다. - 소프트웨어 팀도 .. 2023. 11. 16.
[클린코드] 20일차 - 변경하기 쉬운 클래스 == SRP, OCP 준수 [클린코드] 20일차 - 변경하기 쉬운 클래스 == SRP, OCP 준수 클린코드 20일차 (p. 179~188(10장) ) 클린코드 21일차 (p. 189~191(10장) / 192~197(11장) ) 10장 클래스 (복습) 1. 클래스 체계 2. 클래스는 작아야 한다! 3. 변경하기 쉬운 클래스를 만들자. // 변경이 필요해 '손대야'하는 클래스 public class Sql { public Sql(String table, Column[] columns) public String create() public String insert(Object[] fields) public String selectAll() public String findByKey(String keyColumn, String key.. 2023. 11. 16.
[클린코드] 19일차 - 클래스는 작게 그리고 하나의 책임만 줘라 [클린코드] 19일차 - 클래스는 작게 그리고 하나의 책임만 줘라 클린코드 19일차 (p. 171~179(10장) ) 10장 클래스 1장 ~ 9장 : 코드 행과 코드 블록을 올바로 작성하는 방법 + 함수를 올바로 구현하는 방법 + 함수가 서로 관련을 맺는 방식 하지만, 더 높은 차원의 단계까지 신경 쓰지 않으면 앞선 방법은 말짱도루묵 깨끗한 코드를 얻기 힘들다. 이 장에서는 깨끗한 클래스를 다룬다. 1. 클래스 체계 클래스를 정의하는 표준 자바 관례에 따르면, - 가장 먼저 변수 목록이 나온다. 정적 static 공개 public 상수 (가 있다면 맨처음에 !) 정적 static 비공개 private 변수 비공개 인스턴스 변수 (공개 변수가 필요한 경우 거의 X) - 그 다음으로 함수 목록이 나온다. 공.. 2023. 11. 13.
[클린코드] 17일차/18일차 - 적시에 빠르고, 독립적이며, 반복가능하여, 자가검증 하는 단위테스트 [클린코드] 17일차/18일차 - 적시에 빠르고, 독립적이며, 반복가능하여, 자가검증 하는 단위테스트 클린코드 17일차 (p. 151~152(8장) / 153~160(9장) ) 클린코드 18일차 (p. 161 ~ 169(9장) ) 9장 단위 테스트 꼬치꼬치 따지며 코드가 제대로 도는지 확인하는 테스트 코드를 작성하라. 1. TDD 법칙 세 가지 - TDD는 실제 코드를 짜기 전에 단위 테스트부터 짜라고 요구한다. - TDD 법칙 세가지 실패하는 단위 테스트를 작성할 때까지 실제 코드를 작성하지 않는다. 컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 단위 테스트를 작성한다. 현재 실패하는 테스트를 통과할 정도로만 실제 코드를 작성한다. - 이 방식이면 매일 수십 개의 테스트 케이스가 만들어진다. - .. 2023. 11. 13.
[클린코드] 16일차 - 소프트웨어 경계를 깔끔하게 처리하는 기법 [클린코드] 16일차 - 소프트웨어 경계를 깔끔하게 처리하는 기법 클린코드 16일차 (p. 142~150(8장) ) 클린코드 17일차 (p. 151~152(8장) / 153~160(9장) ) 8 경계 - 시스템에 들어가는 모든 소프트웨어를 직접 개발하는 경우는 드물다. - 이 장에서는 소프트웨어 경계를 깔끔하게 처리하는 기법과 기교를 살펴본다! 1. 외부 코드 사용하기 - 인터페이스 제공자: 적용성을 최대한 넓히려 애씀. - 인터페이스 사용자: 자신의 요구에 집중하는 인터페이스를 바람. - java.util.Map을 살펴보면, Map은 굉장히 다양한 인터페이스를 제공한다. - clear()는 Map을 사용하는 누구든 Map 내용을 지울 권한이 있다는 것을 의미한다. Map sensors = new Has.. 2023. 11. 12.
[클린코드] 15일차 - 오류 처리 (부제: 프로그램 논리와 분리해 독자적인 사안으로 고려) [클린코드] 15일차 - 오류 처리 (부제: 프로그램 논리와 분리해 독자적인 사안으로 고려) 클린코드 14일차 (p. 123~128(6장) /129~131(7장) ) 클린코드 15일차 (p. 132~141(7장) ) 7 오류 처리 오류 처리는 프로그램에 반드시 필요한 요소 중 하나. 뭔가 잘못되면 바로 잡을 책임은 프로그래머에게 있다. 깨끗한 코드와 오류 처리는 확실히 연관성이 있다. 하지만 오류 처리 코드로 인해 프로그램 논리를 이해하기 어렵다면 깨끗한 코드가 아니다. 1. 오류 코드보다 예외를 사용하라 - 오류가 발생하면 예외를 던지는 편이 낫다. - 그러면 호출자 코드가 더 깔끔해진다. 2. Try-Catch-Finally 문부터 작성하라 - try-catch-finally 문에서 try블록에 들어.. 2023. 11. 10.
[클린코드] 14일차 - 객체(자료숨김), 자료구조(자료공개) [클린코드] 14일차 - 객체(자료숨김), 자료구조(자료공개) 클린코드 14일차 (p. 123~128(6장) / 129~131(7장) ) 6 객체와 자료 구조 (복습) 1. 자료의 추상화 - 구현을 감추려면 추상화가 필요하다. 2. 자료/객체 비대칭 - 객체는 추상화 뒤로 자료를 숨기고, 자료를 다루는 함수만 공개한다. - 자료 구조는 자료를 그대로 공개하고, 별다른 함수는 제공하지 않는다. - 새로운 자료 타입 필요: 클래스와 객체 지향 기법이 가장 적합 - 새로운 함수 필요: 절차적인 코드와 자료 구조가 좀 더 적합 3. 디미터 법칙 - 디미터 법칙은 잘 알려진 *휴리스틱(heuristics)으로, "모듈은 자신이 조작하는 객체의 속사정을 몰라야 한다는 법"이다. - 휴리스틱의 의미를 다시 되짚어보면.. 2023. 11. 8.
[클린코드] 13일차 - 구현을 감추려면 추상화. 그리고 객체와 자료 구조 사이의 분명한 차이 [클린코드] 13일차 - 구현을 감추려면 추상화. 그리고 객체와 자료 구조 사이의 분명한 차이 클린코드 13일차 (p.111~116(5장) / 117~122(6장) ) 6 객체와 자료 구조 변수를 비공개 private 로 정의하는 이유가 있다. 다른 사람들이 변수에 의존하지 않게 만들고 싶어서이다. (충동 .. 변뎍.. 그냥 구현을 맘대로 바꾸고 싶어서 ..?) 그렇다면 어째서 많은 프로그래머가 조회get 함수와 설정set 함수를 당연하게 공개public 해 비공개 변수를 외부에 노출할까? .. 정확히 무슨 뜻인진 모르겠지만 차차 알아가보자. 자료 추상화 - 두 클래스 모두 2차원 점을 표현. - 1 클래스는 구현을 외부로 노출. / 2 클래스는 구현을 완전히 숨김. // 1. 구체적인 Point 클래스.. 2023. 11. 7.
[클린코드] 11~13일차의 1/2 - 원활한 소통을 장려하는 코드 형식 [클린코드] 11일차/12일차/13일차의 1/2 - 원활한 소통을 장려하는 코드 형식 클린코드 11일차 (p. 95~102(5장) ) 클린코드 12일차 (p. 103~110(5장) ) 클린코드 14일차 (p.111~116(5장) / 117~122(6장) ) 5 형식 맞추기 형식을 맞추는 목적 - 코드 형식은 너무나도 중요하므로 융통성 없이 맹목적으로 따르면 안 된다. - 즉, 코드 형식 == 의사소통의 일환 - '돌아가는 코드'가 중요한게 아니다. 시간이 지날 수록 맨 처음 잡아놓은 구현 스타일과 가독성 수준은 유지보수 용이성과 확장성에 계속 영향을 미친다. - 원래 코드는 사라질지라도 개발자의 스타일과 규율은 사라지지 않는다. 그렇다면 원활한 소통을 장려하는 코드 형식은 무엇일까 ? 적절한 행 길이를 .. 2023. 11. 4.