본문 바로가기

알아두면쓸데있는신기한잡학사전/독서일지24

[클린코드] 44~48일차 - 동시성2 톺아보기 [클린코드] 44~45일차 - 동시성2 톺아보기 클린코드 44일차 (p. 404 ~ 407 (17장) / 408 ~ 412 (18장) ) 클린코드 45일차 (p. 413 ~ 419 (18장) ) 클린코드 46일차 (p. 420 ~ 428 (18장) ) 클린코드 47일차 (p. 429 ~ 436 (18장) ) 클린코드 48일차 (p. 437 ~ 446 (18장) ) 18장 동시성2 225쪽에서 소개한 동시성을 좀 더 자세히 보완하기 위한 장이다. 클라이언트/서버 예제 예제를 살펴보면 서버와 클라이언트의 단순한 소켓 프로그래밍 코드를 보여주고 있다. 서버는 소켓을 열어놓고 클라이언트가 연결하기를 기다린다. 클라이언트는 소켓에 연결해 요청을 보낸다. 아래는 클라이언트/서버 테스트 코드이다. 해당 테스트는 10.. 2023. 12. 22.
[클린코드] 40~43일차 - 냄새와 휴리스틱 (주석/환경/함수/일반) [클린코드] 40일차 - 냄새와 휴리스틱 클린코드 40일차 (p. 370 ~ 378 (17장) ) 클린코드 41일차 (p. 379 ~ 387 (17장) ) 클린코드 42일차 (p. 388 ~ 395 (17장) ) 클린코드 43일차 (p. 396 ~ 403 (17장) ) 17장 냄새와 휴리스틱 좋지 못한 코드는 냄새가 난다... (ㅋ)(ㅠ) 그리하여 이 장에서는 다양한 코드 냄새와 코드를 짜면서 사용하는 기교, 휴리스틱을 소개한다. 주석 1. 부적절한 정보 다른 시스템에 저장할 정보는 주석으로 적절하지 못하다. 2. 쓸모 없는 주석 오래된 주석, 엉뚱한 주석, 잘못된 주석은 더 이상 쓸모가 없음 주석은 '낡는다.' 쓸모 없어진 주석은 제발 삭제하자. 3. 중복된 주석 코드만으로 충분한데 구구절절 설명하는 .. 2023. 12. 18.
[클린코드] 37일차/38일차/39일차 - SerialDate 리팩터링 [클린코드] 37일차/38일차 - SerialDate 리팩터링 클린코드 37일차 (p. 344 ~ 351 (16장) ) 클린코드 38일차 (p. 352 ~ 362 (16장) ) 클린코드 39일차 (p. 363 ~ 369 (16장) ) 16장 SerialDate 리팩터링 이 장에서는 JCommon 라이브러리에 있는 org.jfree.date 패키지의 SerialDate라는 클래스를 리팩터링을 진행한다. (* 책에서는 https://www.jfree.org/jcommon/index.php 라고 언급되어있지만 https://www.jfree.org/jcommon/ 로 들어가야한다. + https://www.jfree.org/jcommon/api/index.html) SerialDate는 날짜를 표현하는 자바 .. 2023. 12. 13.
[클린코드] 35일차/36일차 - JUnit 들여다보기 [클린코드] 35일차/36일차 - JUnit 들여다보기 클린코드 35일차 (p. 324 ~ 332 (13장) ) 15장 JUnit 들여다보기 JUnit은 켄트 벡과 에릭 감마가 비행기를 타고 가다 만들었다고 한다..! ComparisonCompacterTest.java 라는 모듈을 살펴보자 문자열 비교 오류를 파악할 때 유용한 코드이다. 예를 들어, ABCDE와 ABXDE를 받으면 를 반환한다. package junit.framework; public class ComparisonCompactor { private static final String ELLIPSIS = "..."; private static final String DELTA_END = "]"; private static final Str.. 2023. 12. 12.
[클린코드] 28일차~34일차 - 돌아가는 프로그램에 그치기 보단 점진적 개선 필요 / TDD 유지 [클린코드] 28일차~31일차 - 돌아가는 프로그램에 그치기 보단 점진적 개선 필요 클린코드 28일차 (p. 246 ~ 254 (14장) ) : 돌아가는 프로그램에 그치기 보단 점진적 개선 필요 클린코드 29일차 (p. 255 ~ 272 (14장) ) : TDD 기법 사용 클린코드 30일차 (p. 273 ~ 288 (14장) ) : 계속 통과하는 Test... 가 옳음을 ..! 클린코드 31일차 (p. 288 ~ 295 (14장) ) : 점진적으로 개선하기 == TDD 유지하기 클린코드 32일차 (p. 296 ~ 304 (14장) ) : 리팩토링은 루빅 큐브 맞추기와 비슷하다. 클린코드 33일차 (p. 305 ~ 310 (14장) ) : same old same old 클린코드 34일차 (p. 311 ~.. 2023. 12. 2.
[클린코드] 25일차/26일차/27일차 - 동시성 [클린코드] 25일차 - 동시성 클린코드 25일차 (p. 226 ~ 229 (13장) ) 클린코드 26일차 (p. 230 ~ 237 (13장) ) 클린코드 27일차 (p. 237 ~ 244 (13장) ) 13장 동시성 이 장에서는 여러 스레드를 동시에 돌리는 이유와 어려움 그리고 대처방법에 대해 이야기한다. 그리고 마지막으로 동시성을 테스트하는 방법과 문제점을 논한다. 0. 동시성이란? 싱글 코어에서 멀티 스레드를 동작시켜 동시에 실행되는 것 같이 보이는 것이다. 1. 동시성이 필요한 이유는 무엇인가? 동시성은 결합을 없애는 전략이다. 즉, 무엇what 과 언제when 를 분리하는 전략이다. 단일 스레드는 무엇을 언제 실행했는지 정지점을 정한 후 디버깅할 경우 파악할 수 있다. 디버깅하는 경우 좋지만 작.. 2023. 11. 30.
[클린코드] 24일차 - 창발성은 단순한 설계 규칙으로부터 [클린코드] 24일차 - 창발성은 단순한 설계 규칙으로부터 클린코드 24일차 (p. 216 ~ 223 (12장) ) 12장 창발성 창발성이란 ? 이전에 보이지 않았던 것이 어느 순간 갑자기 나타나는 것 1. 창발적 설계로 깔끔한 코드를 구현하자 착실하게 따르기만 하면 우수한 설계가 나오는 간단한 규칙 네 가지가 있다면 ? -> 네 가지 규칙이 창발성을 촉진한다면 ? 켄트 백은 다음 규칙을 따르면 설계는 '단순하다'고 말한다. 1) 모든 테스트를 실행한다. 2) 중복을 없앤다. 3) 프로그래머 의도를 표현한다. 4) 클래스와 메서드 수를 최소로 줄인다. 위 목록은 중요도 순이다. 2. 규칙 1: 모든 테스트를 실행한다. 9장 단위 테스트에서도 했던 말이지만 테스트는 중요하다. 테스트가 있어야 검증이 가능하.. 2023. 11. 19.
[클린코드] 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.