본문 바로가기

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

[클린코드] 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.
[클린코드] 9일차/10일차 - 나쁜 주석이 될 수 밖에 없는 주석 조건 [클린코드] 9일차/10일차 - 나쁜 주석이 될 수 밖에 없는 주석 조건 클린코드 9일차 (p. 74~83(4장) ) 클린코드 10일차 (p. 84~94(4장) ) 4 주석 4. 나쁜 주석 1) 주절거리는 주석 - 특별한 이유 없이 의무감으로 한다면 시간 낭비이다. - 주석을 달기로 결정했다면 충분한 시간을 들여 최고의 주석으로 달도록 노력하라. 2) 같은 이야기를 중복하는 주석 - 같은 코드 내용을 그대로 중복하는 주석은 피하라. - 자칫 코드보다 주석 읽는 시간이 길어진다. 3) 오해할 여지가 있는 주석 ..Nope! 4) 의무적으로 다는 주석 ..Nope!! 5) 이력을 기록하는 주석 .. Nope!! 6) 있으나 마나 한 주석 - 너무 당연한 사실을 언급하는 주석으로 새로운 정보를 제공하지 못하는.. 2023. 11. 1.
[클린코드] 8일차 - 나쁜 코드에 주석을 달지 마라. 새로 짜라. 하지만 좋은 주석은 분명히 있다. [클린코드] 8일차 - 나쁜 코드에 주석을 달지 마라. 새로 짜라. 하지만 좋은 주석은 분명히 있다. 클린코드 8일차 (p. 67~74(4장) ) 4 주석 나쁜 코드에 주석을 달지마라. 새로 짜라. - 주석은 쉰들러 리스트가 아니다. ‘순수하게 선하지‘ 못하다. - 주석은 항상도 아니고 고의도 아니지만 너무 자주 거짓말을 한다. - 왜냐? 현실적으로 주석을 유지보수하기 쉽지 않기 때문이다. 1. 주석은 나쁜 코드를 보완하지 못한다. - 깔끔하고 주석이 거의 없는 코드가, 복잡하며 주석이 많이 달린 코드보다 훨씬 좋다. 2. 코드로 의도를 표현하라! - 확실히 코드만으로 의도를 설명하기 어려운 경우가 존재하지만, 많은 개발자들이 코드는 훌륭한 수단이 아니라는 의미로 해석한다. 3. 좋은 주석 1) 법적인 .. 2023. 11. 1.