시작하며 노마드 코더(@nomad_coders)에서 노개북(북클럽)을 진행한다는 소식을 접하게 되었다. 평소에 너무 읽어보고 싶었지만 차마 엄두가 나지 않았던, "클린코드" 책을 읽는다길래 냉큼 신청하였다. 사실 이 포스팅을 쓰는 시점은 이미 노개북 1기를 마친 상태이
TIL (2022.01.21) DAY 1 🔖 추천사 & 들어가면서 | Foreword & Introduction 😃 책에서 기억하고 싶은 내용을 써보세요. 반면 로에는 자신이 설계한 집의 손잡이도 모두 직접 선택했다. 왜 그랬을까? 사소한 것이 중요하기 때
🔖 오늘 읽은 범위 : 1장, 깨끗한 코드(~p.8 깨끗한 코드라는 예술?)기계가 실행할 정도 상세하게 요구사항을 명시하는 작업, 바로 이것이 프로그래밍이다. 이렇게 명시한 결과가 바로 코드다.나중은 결코 오지 않는다.나쁜 코드의 위험을 이해하지 못하는 관리자 말을
🔖 오늘 읽은 범위 : 1장, 깨끗한 코드(~p.20 결론)깨끗한 코드는 한가지에 ‘집중’한다.나는 깨끗한 코드가 잘 쓴 문장처럼 읽혀야 한다는 시각을 특히 좋아한다.물론 나는 주로 중복에 집중한다. 같은 작업을 여러 차례 반복한다면 코드가 아이디어를 제대로 표현하지
🔖 오늘 읽은 범위 : 2장, 의미있는 이름(~p.32 자신의 기억력을 자랑하지 마라)소프트웨어에서 이름은 어디나 쓰인다.의도를 분명히 밝혀라좋은 이름을 지으려면 시간이 걸리지만 좋은 이름으로 절약하는 시간이 훨씬 더 많다.의도가 드러나는 이름을 사용하면 코드 이해와
🔖 오늘 읽은 범위 : 2장, 의미 있는 이름(~ p.38 마치면서)기발한 이름은 피하라재미난 이름보다 명료한 이름을 선택하라.한 개념에 한 단어를 사용하라추상적인 개념 하나에 단어 하나를 선택해 이를 고수한다. 예를 들어,똑같은 메서드를 클래스 마다 fetch, r
🔖 오늘 읽은 범위 : 3장, 함수 (~p.54 함수 인수)작게 만들어라함수를 만드는 첫째 규칙은 ‘작게!’다. 함수를 만드는 둘째 규칙은 ‘더 작게!’다. 이 규칙은 근거를 대기 어렵다. (...) 지금까지 경험을 바탕으로 그리고 오랜 시행 착오를 바탕으로 나는 작
🔖 오늘 읽은 범위 : 3장, 함수 (~p.65 결론)부수 효과를 일으키지 마라!부수 효과는 거짓말이다. 함수에서 한 가지를 하겠다고 약속하고선 남몰래 다른 것도 하니까.많은 경우 시간적인 결합(temporal coupling)이나 순서 종속성(order depend
🔖 오늘 읽은 범위 : 4장, 주석( ~ p.75 좋은 주석)Intro“나쁜코드에 주석을 달지 마라. 새로짜라.” - 브라이언 w. 커니핸, P.J. 플라우거우리는 코드로 의도를 표현하지 못해 , 그러니까 실패를 만회하기 위해 주석을 사용한다.그러므로 주석이 필요한
🔖 오늘 읽은 범위 : 4장, 주석 (~ p.94 나쁜 주석)나쁜 주석주절거리는 주석주석을 달기로 결정했다면 충분한 시간을 들여 최고의 주석을 달도록 노력한다.이해가 안 되어 다른 모듈까지 뒤져야 하는 주석은 독자와 제대로 소통하지 못하는 주석이다.같은 이야기를 중복
🔖 오늘 읽은 범위 : 5장, 형식 맞추기 (~p.116)프로그래머라면 형식을 깔끔하게 맞춰 코드를 짜야 한다.형식을 맞추는 목적코드 형식은 중요하다! (...) 너무나도 중요하므로 융통성 없이 맹목적으로 따르면 안 된다.코드 형식은 의사소통의 일환이다. 의사소통은
🔖 MISSION1: 더러운 코드를 고치자 🌟제보자 J\*\*\*님의 코멘트 :자스챌 할때 크리스마스까지 남은 시간 계산기인데요, 모범답안에서 시,분을 초로 계산하는걸 다르게 했던 것 같은데~! 잘 모르겠어용ㅋㅋ 자스챌 복습하러 가야겠...1개의 함수에서 3개의 함
🔖 오늘 읽은 범위 : 6장, 객체와 자료 구조 (~p.128 결론)변수를 비공개(private)로 정의하는 이유가 있다. 남들이 변수에 의존하지 않게 만들고 싶어서다.그렇다면 어째서 수많은 프로그래머가 조회(get) 함수와 설정(set) 함수를 당연하게 공개(pub
🔖 오늘 읽은 범위 : 7장, 오류 처리(~ p.142 결론)깨끗한 코드와 오류 처리는 확실히 연관성이 있다. 상당수 코드 기반은 전적으로 오류 처리 코드에 좌우된다. (...) 여기저기 흩어진 오류 처리 코드 때문에 실제 코드가 하는 일을 파악하기가 거의 불가능하다
🔖 MISSION2: QUUUUUUUUIZQuiz is based on Clean Code Chapter 4. 5. and 6.Good Luck!💡 Is better to write code that does not need comments. \*10점 True F
🔖 오늘 읽은 범위 : 7장, 오류 처리 (복습)스케쥴을 착각해 저번에 7장을 읽을 때, 전부 다 읽어 버렸다! 오늘은 7장을 다시 읽어보면서 중요하다 생각하는 내용들만 다시 적어보려고 한다.클린 코드에서 오류 처리를 언급하는 이유!오류 처리는 중요하다. 하지만 오류
🔖 MISSION3 : 나의 최애 북틸을 찾아라-!sujin 님 : Home블로그에 책의 내용을 깔끔하게 정리한 부분이 참 인상 깊었던 분!아직 나의 정리가 다른 사람에게 도움이 될 수 있을 정도인지 의심이 되는 나로써는 블로그로 TIL을 쓸 엄두가 안났었다. 하지만
🔖 오늘 읽은 범위 : 9장, 단위 테스트우리들 대다수에게 단위 테스트란 자기 프로그램이 ‘돌아간다’라는 사실만 확인하는 일회성 코드에 불과했다.에자일과 TDD 덕택에 단위 테스트를 자동화하는 프로그래머들이 이미 많아졌으며 점점 더 늘어나는 추세다. 하지만 우리 분야
🔖 오늘 읽은 범위 : 9장, 단위 테스트깨끗한 테스트 코드이전 내용 복습깨끗한 테스트 코드를 만들려면? 세 가지가 필요하다. 가독성,가독성,가독성테스트 코드는 최소의 표현으로 많은 것을 나타내야 한다.\*SerializedPageResponderTest.java위
🔖 MISSION4: QUUUUUUUUIZQuiz is based on Clean Code Chapter 7 and 9 Good Luck!💡 What is better, to throw Exceptions or return error codes? \*10점 Erro
🔖 오늘 읽은 범위 : 10장, 클래스하지만 코드의 표현력과 그 코드로 이루어진 함수에 아무리 신경 쓸지라도 좀 더 차원 높은 단계(=클래스)까지 신경 쓰지 않으면 깨끗한 코드를 얻기는 어렵다.클래스 체계표준 자바 관례가장 먼저 변수 목록이 나온다.정적(static)
🔖 오늘 읽은 범위 : 10장, 클래스클래스는 작아야 한다!이전 내용 복습 \*- 클래스를 만들 때 첫 번째 규칙은 크기다. 클래스는 작아야 한다일반적으로 메서드가 변수를 더 많이 사용할수록 메서드와 클래스는 응집도가 더 높다\*응집도를 유지하면 작은 클래스 여럿이
🔖 Mission5 : 더러운 코드를 깨끗한 코드로 리펙터링 해보세요!노개북 클린코드 🔥 Final Mission본인이 잘 이해했는지 확인하는 가장 정확한 방법은 가르쳐 보는 것!가장 잘하는 언어로(JS, Python 등) 더러운 코드를 깨끗한 코드로 리팩토링 해
🔖 오늘 읽은 범위 : 8장, 경계 (p. 144 ~p.152)어떤 식으로든 이 외부 코드를 우리 코드에 깔끔하게 통합해야만 한다. 이 장에서는 소프트웨어 경계를 깔끔하게 처리하는 기법과 기교를 살펴본다.여기서 말하는 경계는 외부 코드와 우리(나)의 코드 간의 경계를
🔖 오늘 읽은 범위 : 11장, 시스템 “복잡성은 죽음이다. 개발자에게서 생기를 앗아가며, 제품을 계획하고 제작하고 테스트하기 어렵게 만든다.” \- 레이 오지(Ray Ozzie), 마이크로소프트 최고 기술 책임자(CTO)\*도시를 세운다면?여러분이 도시를 세운다면?
🔖 오늘 읽은 범위 : 11장, 시스템자바에서 사용하는 관점 혹은 관점과 유사한 메커니즘 세 개를 살펴보자!자바 프록시자바 프록시는 단순한 상황에 적합하다. 개별 객체나 클래스에서 메서드 호출을 감싸는 경우가 좋은 예다.하지만 JDK에서 제공하는 동적 프록시는 인터페
🔖 오늘 읽은 범위 : 12장, 창발성창발적 설계로 깔끔한 코드를 구현하자우리들 대다수는 켄트 백이 제시한 단순한 설계 규칙 네 가지가 설계 품질을 크게 높여준다고 믿는다.켄트 벡은 다음 규칙을 따르면 설계는 ‘단순하다’고 말한다. \- 모든 테스트를 실행한다
🔖 오늘 읽은 범위 : 13장, 동시성😃 책에서 기억하고 싶은 내용을 써보세요.객체는 처리의 추상화다. 스레드는 일정의 추상화다. \- 제임스 O. 코플리엔(James O.Coplien)동시성과 깔끔한 코드는 양립하기 어렵다.동시성이 필요한 이유?동시성은 결합
TIL (2022.02.19) DAY 6 🔖 오늘 읽은 범위 : 13장, 동시성 😃 책에서 기억하고 싶은 내용을 써보세요. 동기화하는 메서드 사이에 존재하는 의존성을 이해하라 권장사항: 공유 객체 하나에는 메서드 하나만 사용하라 공유 객체 하나
🔖 오늘 읽은 범위 : 14장, 점진적인 개선전체 소스 코드는 여기서 확인해주세요!Args.javaArgumentMarshaler.javaBooleanArgumentMarshaler.javaStringArgumentMarshaler.javaIntegerArgument
🔖 오늘 읽은 범위 : 14장, 점진적인 개선Args: 1차 초안내가 맨 처음 짰던 Args 클래스다. 코드는 ‘돌아가지만’ 엉망이다.인스턴스 변수 개수만도 압도적이다. 'TILT' 와 같은 희한한 문자열, HashSets, TressSets, try-catch-ca
🔖 오늘 읽은 범위 : 14장, 점진적인 개선첫번째 리펙토링을 마친 후열심히 고쳤건만 결과는 다소 실망스럽다. 구조만 조금 나아졌을 뿐이다.나는 setArgument 함수에서 유형을 일일이 확인하는 코드를 정말로 없애고 싶었다. setArgument에서 Argumen
🔖 오늘 읽은 범위 : 14장, 점진적인 개선ArgsException을 독자적인 모듈로 만들면 Args 모듈에서 잡다한 오류 지원 코드를 옮겨올 수 있다. ArgsException 모듈은 잡다한 오류 지원 코드가 들어갈 합당하고 당연한 장소다. 덕택에 Args 모듈이
🔖 오늘 읽은 범위 : 15장, JUnit 들여다보기JUnit 프레임워크위 테스트 케이스로 ComparisonCompactor 모듈에 대한 코드 커버리지 분석을 수행했더니 100%가 나왔다. 테스트 케이스가 모든 행, 모든 if 문, 모든 for 문을 실행한다는 의미
🔖 오늘 읽은 범위 : 15장, JUnit 들여다보기이전 내용 복습findCommonSuffix를 주의 깊게 살펴보면 숨겨진 시간적인 결합(hidden temporal coupling) 이 존재한다. 다시 말해, findCommandSuffix는 findCommon
TIL (2022.02.26) DAY 13 🔖 오늘 읽은 범위 : 16장. SerialDate 리펙터링 😃 책에서 기억하고 싶은 내용을 써보세요. SerialDate는 날짜를 표현하는 자바 클래스다. 하지만 자바는 이미 java.util.Date, java.
➕ About Book 나는 아마존에서 미래를 다녔다 박정준 저 | 한빛비즈 | 2019년 03월 07일 나는 아마존에서 미래를 다녔다 “개발자라는 직업을 가지고 산다는 건 어떤 걸까?” 회사를 다닌지 어느덧 2년이 다 되어가면서, 이제는 개발이 단순한 취미가