클린코드 클린코드 7장 - 오류 처리 깨끗한 코드와 오류 처리는 확실히 연관성이 있다. 이 말은 지저분한 오류 처리 코드 때문에 실제 코드가 무엇을 하는지 파악하기 어려워지기 때문이다. 위와 같이 오류 코드를 사용하면 호출자의 코드가 복잡해진다. try 블록에서 무슨일이 생기든지 catch 블록은 프로그램 상태를 일관성 있게 유지해야 한다. 그러므로 예외가 발생할 코드를 짤 때는 try-catch-finally 문으로 시작하는 ... 클린코드cleancodecleancode [클린코드] 6장 객체와 자료구조 화요일 금요일까지 각각 두장씩 읽고 각자 한 장씩 발표하기 화요일 : 진형 홀수 장, 시준 짝수 장 금요일 : 시준 홀수 장, 진형 짝수 장 변수를 private으로 선언하더라도 게터세터를 이용하면 구현을 노출한다. 위 인터페이스는 직교 좌표계인지 극좌표계인지 알 수 없다. 메서드가 접근 정책을 강제하고 좌표를 읽을 때는 개별적으로 읽어야 하며 설정할 때는 두 값을 한번에 설정해야 한다. 추... 클린코드클린코드 NEXTSTEP CleanCode JS Mission3 - 자동차 경주 회고 자동차에 이름을 부여할 수 있다. 사용자는 몇 번의 이동을 할 것인지를 입력할 수 있어야 한다. 처음에는 자동차의 이름 길이 유효여부를 검증할때 이름이 들어간 배열을 순회한후 각 요소의 length가 5자 이하인지 true/false를 return하려 했는데, 뭔가 좀 더 좋은 방법이 있지 않나 고민하다가 예~전에 코드리뷰 스터디에서 받았던 피드백 내용인 용도에 맞는 배열 메서드를 사용하기가... cypress테스트코드JavaScript도메인클린코드JavaScript [클린코드] 5장 형식 맞추기 화요일 : 진형 홀수 장, 시준 짝수 장 금요일 : 시준 홀수 장, 진형 짝수 장 코드의 형식은 중요하다! 코드의 형식은 의사소통의 일환이다. 파일마다 200줄 정도로도 커다란 시스템을 구축할 수 있다. 개념은 빈 행으로 분리하라. 생각 사이에 빈 행을 넣어 분리해야 마땅하다. 세로 밀집도 밀접한 코드 행은 세로로 가까이 놓여야 한다. 서로 밀접한 개념은 세로로 가까이 둬야 한다. 변수는 사... 클린코드클린코드 클린코드 14장 책 초반에, 좋은 코드를 짜기 위해서는 일단 막 짜고 나서 다듬어야 한다고 했다.. 초안 코드를 단계적으로 개선에 좋은 코드를 만들어야 한다. 이 장에서 분석할 예제는 위 코드를 기반으로 한다. 유틸리티 Args 프로그램을 짜다 보면 종종 명령행 인수의 구문을 분석할 필요가 생긴다. Args 구현 책에 있는 코드는 이렇게 생겼다. 상당히 깔끔하다. 하지만 처음부터 이런 코드를 짤 수 는 없다... 클린코드독서독서 클린코드 3장 - 함수 이 책의 저자는 함수가 적을 수록 좋다는 근거를 대기는 좀 어렵지만 40여년 동안 온갖 크기로 함수를 구현해봤을 때 작은 함수가 좋았다라고 확신한다고 한다. 이 책의 저자는 함수를 분리하여 수십줄의 코드를 9줄의 코드로, 9줄의 코드를 3줄의 코드로 수정할 수 있다고 한다. 대개 거기서 함수를 호출하고 그러면 바깥을 감싸는 함수가 작아질 뿐만 아니라, 블록 안에서 호출하는 함수 이름을 적절히... 클린코드cleancodecleancode 클린코드 핵심 정리 (1장 깨끗한 코드, 2장 의미 있는 이름) 성능이 나쁜 코드 불필요한 연산이 들어가서 개선의 여지가 있는 코드 의미가 모호한 코드 이해하기 어려운 코드, 네이밍과 그 내용이 다른 코드 중복된 코드 나쁜 코드는 깨진 유리창 처럼 계속 나쁜 코드가 만들어지도록 한다. 나쁜 코드는 팀 생산성을 저하시킨다. 기술 부채를 만들어 수정을 더 어렵게 한다. 새로운 시스템을 만들어야 한다. 일정 안에 새로운 기능을 완성해야 한다.(하지만.. 나쁜 ... 한달한권book클린코드book 클린코드 핵심 정리 (6장 객체와 자료구조) 비지니스 로직 없이 순수 데이터를 저장하는 자료구조의 역할이다. 객체 위의 코드는 생성자에 비즈니스 로직과 관련된 코드가 들어가 있고, 필드를 private 으로 하여 자료를 숨겼다. 만약 Triangle 이라는 새로운 클래스(자료구조가) 추가된다면? area() 함수 안에 if-else 문을 수정해야 한다. 절차적인 코드는 새로운 자료구조를 추가하기 어렵다. 함수를 고쳐야 한다. 객체 만약... 한달한권book클린코드book 클린코드 핵심 정리 (5장 형식 맞추기) 내 for 문은 뭐지..? 이제 이해하기 좋다! 가독성에 필수적이다 코드를 수월하게 읽어나갈 수 있다. 아마추어처럼 보이지 않는다. 포맷팅으로 인해 코드를 잘못해석해 버그를 발생할 위험을 줄인다! ~200 lines < 500 lines 200라인 "코드 길이를 200줄 정도로 제한하는 것은 반드시 지킬 엄격한 규칙은 아니지만, 일반적으로 큰 파일보다는 작은 파일이 이해하기 쉽다" -> 현업... 한달한권book클린코드book 클린코드 핵심 정리 (4장 주석) 코드에 주석을 추가하는 일반적인 이유는 코드 품질이 나쁘기 때문이다. 자신이 저지른 난장판을 주석으로 설명하지 말고 개선하는데 시간을 보내야 한다. 코드로도 의도를 표현할 수 있다! 코드의 변화에 따라가지 못하고, 주석은 방치된다. 코드는 컴파일되어 호출되지만, 주석은 그저 주석이기 때문에 그 자리에 방치되고 결국 의미없는 텍스트가 되어버린다. 구현에 대한 정보를 제공한다. 의도와 중요성을 ... 한달한권book클린코드book 클린코드 핵심 정리 (SOLID, 3장 함수) 한 클래스는 하나의 책임만 가져야 한다 OCP 의 목표는 해당 클래스의 기존 동작을 변경하지 않고 클래스의 확장하는 것을 목표로 한다. 서브타입은 언제나 기반 타입으로 교체할 수 있어야 한다. 즉, 자식 클래스가 부모 클래스와 동일한 작업을 수행할 수 없는 경우 버그가 발생할 수 있다라는 의미 자식 클래스는 부모 클래스가 할 수 있는 모든 것을 할 수 있어야 하며 이 프로세스를 상속이라고 한... SOLID한달한권book클린코드SOLID 클린코드 핵심 정리 (7장 예외처리) 하지만 예외를 던지는 것이 명확하고, 처리 흐름이 깔끔해진다. 오류가 발생한 부분에서 예외를 던진다. (별도의 처리가 필요한 예외라면 checked exception으로 던진다.) 예외를 처리할 수 있는 곳에서 catch하여 처리한다. Exception을 상속하면 Checked Exception 명시적인 예외처리가 필요하다. C#은 확인된 예외를 지원하지 않는다. 영웅적인 시도에도 불고하고 ... 한달한권book클린코드book 클린코드 3장 의도를 분명히 표현하는 함수를 어떻게 구현할 수 있을까? 함수에 어떤 속성을 부여해야 처음 읽는 사람이 프로그램 내부를 직관적으로 파악할 수 있을까? 한 가지만 해라 함수는 한 가지만 해야 한다. 의미 있는 이름으로 다른 함수를 추출할 수 있다면 그 함수는 여러 작업을 한다고 봐도 된다. 함수 당 추상화 수준은 하나로 추상화 수준이 높은 함수랑 추상화 수준이 낮은 함수랑 막 섞어쓰지 말자. ... 클린코드독서독서 클린코드 핵심 정리 (8장 경계) 오픈소스, 라이브러리를 안쓰는 프로젝트는 없다. 우리가 만든 코드에 외부에서 들어온 코드를 병합해야 한다. 외부 코드는 외부에서 만든 코드인데, 외부 시스템과 호출하거나 단순히 외부에서 만들어진 코드일 수 있다. 우리 코드와 외부 코드를 깔끔하게 통합시키기 위해 경계를 잘 지어야 한다. 객체의 실제 구현을 외부로부터 감추는 방식 Sensor를 관리해야 한다. Sensor는 외부에서 사용된다.... 한달한권book클린코드book 클린코드 핵심 정리 (10장 시스템) 소프트웨어 시스템은 (어플리케이션 객체를 제작하고 의존성을 서로 연결 하는) 준비 과정과 (준비 과정 이후에는 이어지는) 런타임 로직을 분리해야 한다. 객체의 생성과 객체를 사용하는 부분을 분리한다. 객체의 생성은 시작 단계에서, 비즈니스 로직은 객체를 사용하는데 집중한다. main 함수에서 시스템에 필요한 객체를 생성한 후 어플리케이션에 넘긴다. 어플리케이션은 그저 만들어진 객체를 사용한다... 한달한권book클린코드book 클린코드 핵심 정리 (10장 클래스) 클래스가 맡은 책임이 한 개인가 함수와 마찬가지로 클래스도 작아야 한다. 클래스 설명은 만일(if), 그리고(and), 하며(or), 하지만(but)을 사용하지 않고 25단어 내외로 가능해야 한다. ⇒ 책임이 한 가지여야 한다. SRP 해야 한다. 자잘한 단일 클래스가 많아지면 큰 그림을 이해하기 어렵다고 우려한다. 하지만 작은 클래스가 많은 시스템이든 큰 클래스가 몇 개뿐인 시스템이든 돌아... 한달한권book클린코드book Clean Code With Kotlin 1 하지만 어떻게 클린 코드를 적을까? 여기 적용 시킬 몇 개의 규칙이 있다. 우리가 패키지, 클래스, 함수, 변수들을 만들 때 코드를 작성한다. 그리고 그들은 이름들을 갖고 있고 우리는 이 컴포넌트의 의도를 표현하는 이름을 골라야 한다. 우리가 가독성 있는 코드를 짜려고 찾아보면 3개의 질문을 하라고 한다. 2) "if-null" checks를 피하고 evils(?:)와 throw를 같이 사용... 클린코드코틀린kotlinkotlin Clean Code With Kotlin 2 예상하지 못한 시나리오에 대처하는 법에 대해 이야기 할 때는 다음 사항을 고려해야 한다. 에러 결과가 부족할수 있는 경우 null 또는 failure 결과를 선호하자. 또한, 코틀린에서는 함수가 아무것도 반환하지 않을 때 Nothing을 사용할 수 있다. 에러 핸들링 또는 상태 관리할 때 쓰기 좋은 코틀린 속 개념이 하나 더 있는데, 그건 바로 "Sealed 클래스는 제한된 클래스 계층을 나... 클린코드코틀린kotlinkotlin 클린코드 4~6장 코드에 주석을 추가하는 일반적인 이유는 코드 품질이 나쁘기 때문이다. 좋은 주석 하지만 정말 좋은 주석은 주석을 달지 않을 방법을 찾아낸 주석이라는 사실을 명심하자. 하지만 가능하다면 함수 이름에 정보를 담는 편이 더 좋다. 모든 함수에 Javadocs를 달거나 모든 변수에 주석을 달아야 하는 규칙은 코드를 복잡하게 만들며, 잘못된 정보를 제공할 여지를 만든다. 이런 정보는 소스 코드 관리 ... 클린코드클린코드 클린코드 6장 아무 생각 없이 get(), set() 함수를 난사한다고 변수와 구현을 숨길 수 있는 게 아니다. 자료/객체 비대칭 면접 대비를 하면서 절차 지향 프로그래밍 vs 객체 지향 프로그래밍 이라는 질문을 본 적이 있다. (자료구조를 사용하는) 절차적인 코드는 기존 자료 구조를 변경하지 않으면서 새 함수를 추가하기 쉽다. 반면, 객체 지향 코드는 기존 함수를 변경하지 않으면서 새 클래스를 추가하기 ... 독서클린코드독서 [TIL] 클린코드 작성연습 TIP✨ //파이참에서.. 오른쪽 마우스+ Refactor+Rename => shift f6 : 한번에 변수명 바꾸기 Shift+Tap : 인덴트, 들여쓰기 없애기 Alt+J : 커서 같이 잡기 Refactor+Extract Method 함수 추출 지원 is_000 : boolean값을 가진다는 이름 true,false로 답 나옴 return은 함수를 아예 끝내버리는 거고 pass는 아무것도... 파이참추상화클린코드추상화 클린코드 4장 주석이 필요한 상황에 처하면 곰곰이 생각하기 바란다. 상황을 역전해 코드로 의도를 표현할 방법은 없을까? 주석은 나쁜 코드를 보완하지 못한다. 코드가 엉망진창이라 설명하기 위해서 주석을 단다? 그냥 코드를 깔끔하게 바꿔라. 뼈때리네.. 코드로 의도를 표현하라 이렇게 하지말고 이렇게 하자 좋은 주석 아래는 글자값 하는 주석의 목록이다. 법적인 주석: 코드 파일 첫머리의 저작권 정보 등.. 정보... 독서클린코드독서 클린코드 6장. 객체와 자료구조 어떤 패러다임이나 방식으로도 유연한 설계를 구현할 수 있다면 최선의 해결책을 선택해라 라는걸 전반적인 주제 6-1 에서는 확실히 직교 좌표계를 사용함을 알 수 있다 캡슐화를 할때에도 단순히 특정 클래스에 종속되는 변수이름을 넣어서 함수로 만들지 말고, 약간의 모호함, 추상적인 개념을 넣어서 어떤 클래스에도 적용할 수 있게끔 설계하라 라는 인상을 받음. 자료 객체 / 비대칭 그리고 위 코드가 ... 클린코드클린코드 클린코드 1~3장 체크아웃할 때보다 좀 더 깨끗한 코드를 체크인한다면 코드는 절대 나빠지지 않는다. 변수나 함수, 클래스 이름은 다음과 같은 질문에 모두 답해야 한다. 변수, 함수, 클래스 이름이나 타입을 바꾸기 어렵고 읽기도 어려워지기 때문 인터페이스 클래스 이름과 구현 클래스 이름 중 하나를 인코딩해야 한다면 구현 클래스 이름을 택하자. 독자가 코드를 읽으면서 변수 이름을 자신이 아는 이름으로 변환해야 한... 클린코드클린코드 클린코드 3장 함수 → 바깥을 감싸는 함수(enclosing function)이 작아지고 블록 안에서 호출하는 함수 이름을 적절히 짓는 다면 코드를 이해하기 쉬워짐. 함수는 한 가지를 해야 한다. 그 한 가지를 잘 해야 한다. 지정된 함수 이름 아래에서 추상화 수준이 하나인 단계만 수행한다면 그 함수는 한 가지 작업만 한다. 단순히 다른 표현이 아니라 의미 있는 이름으로 다른 함수를 추출할 수 있다면 그 함수는... 클린코드스터디스터디
클린코드 7장 - 오류 처리 깨끗한 코드와 오류 처리는 확실히 연관성이 있다. 이 말은 지저분한 오류 처리 코드 때문에 실제 코드가 무엇을 하는지 파악하기 어려워지기 때문이다. 위와 같이 오류 코드를 사용하면 호출자의 코드가 복잡해진다. try 블록에서 무슨일이 생기든지 catch 블록은 프로그램 상태를 일관성 있게 유지해야 한다. 그러므로 예외가 발생할 코드를 짤 때는 try-catch-finally 문으로 시작하는 ... 클린코드cleancodecleancode [클린코드] 6장 객체와 자료구조 화요일 금요일까지 각각 두장씩 읽고 각자 한 장씩 발표하기 화요일 : 진형 홀수 장, 시준 짝수 장 금요일 : 시준 홀수 장, 진형 짝수 장 변수를 private으로 선언하더라도 게터세터를 이용하면 구현을 노출한다. 위 인터페이스는 직교 좌표계인지 극좌표계인지 알 수 없다. 메서드가 접근 정책을 강제하고 좌표를 읽을 때는 개별적으로 읽어야 하며 설정할 때는 두 값을 한번에 설정해야 한다. 추... 클린코드클린코드 NEXTSTEP CleanCode JS Mission3 - 자동차 경주 회고 자동차에 이름을 부여할 수 있다. 사용자는 몇 번의 이동을 할 것인지를 입력할 수 있어야 한다. 처음에는 자동차의 이름 길이 유효여부를 검증할때 이름이 들어간 배열을 순회한후 각 요소의 length가 5자 이하인지 true/false를 return하려 했는데, 뭔가 좀 더 좋은 방법이 있지 않나 고민하다가 예~전에 코드리뷰 스터디에서 받았던 피드백 내용인 용도에 맞는 배열 메서드를 사용하기가... cypress테스트코드JavaScript도메인클린코드JavaScript [클린코드] 5장 형식 맞추기 화요일 : 진형 홀수 장, 시준 짝수 장 금요일 : 시준 홀수 장, 진형 짝수 장 코드의 형식은 중요하다! 코드의 형식은 의사소통의 일환이다. 파일마다 200줄 정도로도 커다란 시스템을 구축할 수 있다. 개념은 빈 행으로 분리하라. 생각 사이에 빈 행을 넣어 분리해야 마땅하다. 세로 밀집도 밀접한 코드 행은 세로로 가까이 놓여야 한다. 서로 밀접한 개념은 세로로 가까이 둬야 한다. 변수는 사... 클린코드클린코드 클린코드 14장 책 초반에, 좋은 코드를 짜기 위해서는 일단 막 짜고 나서 다듬어야 한다고 했다.. 초안 코드를 단계적으로 개선에 좋은 코드를 만들어야 한다. 이 장에서 분석할 예제는 위 코드를 기반으로 한다. 유틸리티 Args 프로그램을 짜다 보면 종종 명령행 인수의 구문을 분석할 필요가 생긴다. Args 구현 책에 있는 코드는 이렇게 생겼다. 상당히 깔끔하다. 하지만 처음부터 이런 코드를 짤 수 는 없다... 클린코드독서독서 클린코드 3장 - 함수 이 책의 저자는 함수가 적을 수록 좋다는 근거를 대기는 좀 어렵지만 40여년 동안 온갖 크기로 함수를 구현해봤을 때 작은 함수가 좋았다라고 확신한다고 한다. 이 책의 저자는 함수를 분리하여 수십줄의 코드를 9줄의 코드로, 9줄의 코드를 3줄의 코드로 수정할 수 있다고 한다. 대개 거기서 함수를 호출하고 그러면 바깥을 감싸는 함수가 작아질 뿐만 아니라, 블록 안에서 호출하는 함수 이름을 적절히... 클린코드cleancodecleancode 클린코드 핵심 정리 (1장 깨끗한 코드, 2장 의미 있는 이름) 성능이 나쁜 코드 불필요한 연산이 들어가서 개선의 여지가 있는 코드 의미가 모호한 코드 이해하기 어려운 코드, 네이밍과 그 내용이 다른 코드 중복된 코드 나쁜 코드는 깨진 유리창 처럼 계속 나쁜 코드가 만들어지도록 한다. 나쁜 코드는 팀 생산성을 저하시킨다. 기술 부채를 만들어 수정을 더 어렵게 한다. 새로운 시스템을 만들어야 한다. 일정 안에 새로운 기능을 완성해야 한다.(하지만.. 나쁜 ... 한달한권book클린코드book 클린코드 핵심 정리 (6장 객체와 자료구조) 비지니스 로직 없이 순수 데이터를 저장하는 자료구조의 역할이다. 객체 위의 코드는 생성자에 비즈니스 로직과 관련된 코드가 들어가 있고, 필드를 private 으로 하여 자료를 숨겼다. 만약 Triangle 이라는 새로운 클래스(자료구조가) 추가된다면? area() 함수 안에 if-else 문을 수정해야 한다. 절차적인 코드는 새로운 자료구조를 추가하기 어렵다. 함수를 고쳐야 한다. 객체 만약... 한달한권book클린코드book 클린코드 핵심 정리 (5장 형식 맞추기) 내 for 문은 뭐지..? 이제 이해하기 좋다! 가독성에 필수적이다 코드를 수월하게 읽어나갈 수 있다. 아마추어처럼 보이지 않는다. 포맷팅으로 인해 코드를 잘못해석해 버그를 발생할 위험을 줄인다! ~200 lines < 500 lines 200라인 "코드 길이를 200줄 정도로 제한하는 것은 반드시 지킬 엄격한 규칙은 아니지만, 일반적으로 큰 파일보다는 작은 파일이 이해하기 쉽다" -> 현업... 한달한권book클린코드book 클린코드 핵심 정리 (4장 주석) 코드에 주석을 추가하는 일반적인 이유는 코드 품질이 나쁘기 때문이다. 자신이 저지른 난장판을 주석으로 설명하지 말고 개선하는데 시간을 보내야 한다. 코드로도 의도를 표현할 수 있다! 코드의 변화에 따라가지 못하고, 주석은 방치된다. 코드는 컴파일되어 호출되지만, 주석은 그저 주석이기 때문에 그 자리에 방치되고 결국 의미없는 텍스트가 되어버린다. 구현에 대한 정보를 제공한다. 의도와 중요성을 ... 한달한권book클린코드book 클린코드 핵심 정리 (SOLID, 3장 함수) 한 클래스는 하나의 책임만 가져야 한다 OCP 의 목표는 해당 클래스의 기존 동작을 변경하지 않고 클래스의 확장하는 것을 목표로 한다. 서브타입은 언제나 기반 타입으로 교체할 수 있어야 한다. 즉, 자식 클래스가 부모 클래스와 동일한 작업을 수행할 수 없는 경우 버그가 발생할 수 있다라는 의미 자식 클래스는 부모 클래스가 할 수 있는 모든 것을 할 수 있어야 하며 이 프로세스를 상속이라고 한... SOLID한달한권book클린코드SOLID 클린코드 핵심 정리 (7장 예외처리) 하지만 예외를 던지는 것이 명확하고, 처리 흐름이 깔끔해진다. 오류가 발생한 부분에서 예외를 던진다. (별도의 처리가 필요한 예외라면 checked exception으로 던진다.) 예외를 처리할 수 있는 곳에서 catch하여 처리한다. Exception을 상속하면 Checked Exception 명시적인 예외처리가 필요하다. C#은 확인된 예외를 지원하지 않는다. 영웅적인 시도에도 불고하고 ... 한달한권book클린코드book 클린코드 3장 의도를 분명히 표현하는 함수를 어떻게 구현할 수 있을까? 함수에 어떤 속성을 부여해야 처음 읽는 사람이 프로그램 내부를 직관적으로 파악할 수 있을까? 한 가지만 해라 함수는 한 가지만 해야 한다. 의미 있는 이름으로 다른 함수를 추출할 수 있다면 그 함수는 여러 작업을 한다고 봐도 된다. 함수 당 추상화 수준은 하나로 추상화 수준이 높은 함수랑 추상화 수준이 낮은 함수랑 막 섞어쓰지 말자. ... 클린코드독서독서 클린코드 핵심 정리 (8장 경계) 오픈소스, 라이브러리를 안쓰는 프로젝트는 없다. 우리가 만든 코드에 외부에서 들어온 코드를 병합해야 한다. 외부 코드는 외부에서 만든 코드인데, 외부 시스템과 호출하거나 단순히 외부에서 만들어진 코드일 수 있다. 우리 코드와 외부 코드를 깔끔하게 통합시키기 위해 경계를 잘 지어야 한다. 객체의 실제 구현을 외부로부터 감추는 방식 Sensor를 관리해야 한다. Sensor는 외부에서 사용된다.... 한달한권book클린코드book 클린코드 핵심 정리 (10장 시스템) 소프트웨어 시스템은 (어플리케이션 객체를 제작하고 의존성을 서로 연결 하는) 준비 과정과 (준비 과정 이후에는 이어지는) 런타임 로직을 분리해야 한다. 객체의 생성과 객체를 사용하는 부분을 분리한다. 객체의 생성은 시작 단계에서, 비즈니스 로직은 객체를 사용하는데 집중한다. main 함수에서 시스템에 필요한 객체를 생성한 후 어플리케이션에 넘긴다. 어플리케이션은 그저 만들어진 객체를 사용한다... 한달한권book클린코드book 클린코드 핵심 정리 (10장 클래스) 클래스가 맡은 책임이 한 개인가 함수와 마찬가지로 클래스도 작아야 한다. 클래스 설명은 만일(if), 그리고(and), 하며(or), 하지만(but)을 사용하지 않고 25단어 내외로 가능해야 한다. ⇒ 책임이 한 가지여야 한다. SRP 해야 한다. 자잘한 단일 클래스가 많아지면 큰 그림을 이해하기 어렵다고 우려한다. 하지만 작은 클래스가 많은 시스템이든 큰 클래스가 몇 개뿐인 시스템이든 돌아... 한달한권book클린코드book Clean Code With Kotlin 1 하지만 어떻게 클린 코드를 적을까? 여기 적용 시킬 몇 개의 규칙이 있다. 우리가 패키지, 클래스, 함수, 변수들을 만들 때 코드를 작성한다. 그리고 그들은 이름들을 갖고 있고 우리는 이 컴포넌트의 의도를 표현하는 이름을 골라야 한다. 우리가 가독성 있는 코드를 짜려고 찾아보면 3개의 질문을 하라고 한다. 2) "if-null" checks를 피하고 evils(?:)와 throw를 같이 사용... 클린코드코틀린kotlinkotlin Clean Code With Kotlin 2 예상하지 못한 시나리오에 대처하는 법에 대해 이야기 할 때는 다음 사항을 고려해야 한다. 에러 결과가 부족할수 있는 경우 null 또는 failure 결과를 선호하자. 또한, 코틀린에서는 함수가 아무것도 반환하지 않을 때 Nothing을 사용할 수 있다. 에러 핸들링 또는 상태 관리할 때 쓰기 좋은 코틀린 속 개념이 하나 더 있는데, 그건 바로 "Sealed 클래스는 제한된 클래스 계층을 나... 클린코드코틀린kotlinkotlin 클린코드 4~6장 코드에 주석을 추가하는 일반적인 이유는 코드 품질이 나쁘기 때문이다. 좋은 주석 하지만 정말 좋은 주석은 주석을 달지 않을 방법을 찾아낸 주석이라는 사실을 명심하자. 하지만 가능하다면 함수 이름에 정보를 담는 편이 더 좋다. 모든 함수에 Javadocs를 달거나 모든 변수에 주석을 달아야 하는 규칙은 코드를 복잡하게 만들며, 잘못된 정보를 제공할 여지를 만든다. 이런 정보는 소스 코드 관리 ... 클린코드클린코드 클린코드 6장 아무 생각 없이 get(), set() 함수를 난사한다고 변수와 구현을 숨길 수 있는 게 아니다. 자료/객체 비대칭 면접 대비를 하면서 절차 지향 프로그래밍 vs 객체 지향 프로그래밍 이라는 질문을 본 적이 있다. (자료구조를 사용하는) 절차적인 코드는 기존 자료 구조를 변경하지 않으면서 새 함수를 추가하기 쉽다. 반면, 객체 지향 코드는 기존 함수를 변경하지 않으면서 새 클래스를 추가하기 ... 독서클린코드독서 [TIL] 클린코드 작성연습 TIP✨ //파이참에서.. 오른쪽 마우스+ Refactor+Rename => shift f6 : 한번에 변수명 바꾸기 Shift+Tap : 인덴트, 들여쓰기 없애기 Alt+J : 커서 같이 잡기 Refactor+Extract Method 함수 추출 지원 is_000 : boolean값을 가진다는 이름 true,false로 답 나옴 return은 함수를 아예 끝내버리는 거고 pass는 아무것도... 파이참추상화클린코드추상화 클린코드 4장 주석이 필요한 상황에 처하면 곰곰이 생각하기 바란다. 상황을 역전해 코드로 의도를 표현할 방법은 없을까? 주석은 나쁜 코드를 보완하지 못한다. 코드가 엉망진창이라 설명하기 위해서 주석을 단다? 그냥 코드를 깔끔하게 바꿔라. 뼈때리네.. 코드로 의도를 표현하라 이렇게 하지말고 이렇게 하자 좋은 주석 아래는 글자값 하는 주석의 목록이다. 법적인 주석: 코드 파일 첫머리의 저작권 정보 등.. 정보... 독서클린코드독서 클린코드 6장. 객체와 자료구조 어떤 패러다임이나 방식으로도 유연한 설계를 구현할 수 있다면 최선의 해결책을 선택해라 라는걸 전반적인 주제 6-1 에서는 확실히 직교 좌표계를 사용함을 알 수 있다 캡슐화를 할때에도 단순히 특정 클래스에 종속되는 변수이름을 넣어서 함수로 만들지 말고, 약간의 모호함, 추상적인 개념을 넣어서 어떤 클래스에도 적용할 수 있게끔 설계하라 라는 인상을 받음. 자료 객체 / 비대칭 그리고 위 코드가 ... 클린코드클린코드 클린코드 1~3장 체크아웃할 때보다 좀 더 깨끗한 코드를 체크인한다면 코드는 절대 나빠지지 않는다. 변수나 함수, 클래스 이름은 다음과 같은 질문에 모두 답해야 한다. 변수, 함수, 클래스 이름이나 타입을 바꾸기 어렵고 읽기도 어려워지기 때문 인터페이스 클래스 이름과 구현 클래스 이름 중 하나를 인코딩해야 한다면 구현 클래스 이름을 택하자. 독자가 코드를 읽으면서 변수 이름을 자신이 아는 이름으로 변환해야 한... 클린코드클린코드 클린코드 3장 함수 → 바깥을 감싸는 함수(enclosing function)이 작아지고 블록 안에서 호출하는 함수 이름을 적절히 짓는 다면 코드를 이해하기 쉬워짐. 함수는 한 가지를 해야 한다. 그 한 가지를 잘 해야 한다. 지정된 함수 이름 아래에서 추상화 수준이 하나인 단계만 수행한다면 그 함수는 한 가지 작업만 한다. 단순히 다른 표현이 아니라 의미 있는 이름으로 다른 함수를 추출할 수 있다면 그 함수는... 클린코드스터디스터디