전체 글102 [클린코드] 1~2장 1장 깨끗한 코드 분당 욕(이게뭐야)이 얼마나 나오냐에 따라 좋은코드인지 나쁜코드인지 나뉜다. 나쁜코드 중복된 코드 불필요한 연산이 들어간 성능이 나쁜 코드 네이밍과 내용이 다르거나 이해하기 어려운 의미가 모호한 코드 "우리 모두는 자신이 짠 쓰레기 코드를 쳐다보며 나중에 손보겠다고 생각한 경험이 있다. 대충 짠 프로그램이 돌아가는 것에 안도감을 느끼고 안돌아가는 쓰레기보다 돌아가는 쓰레기가 좋다고 위로한 경험이 있다. 다시 돌아와 나중에 정리하겠다고 다짐했었다. 물론 그때 그시절 우리는 르블랑의 법칙을 몰랐다. 나중은 결코 오지 않는다." 시간이 부족하다는 이유로, 영향범위가 넓어 버그가 생길까 두려워 나쁜코드가 생긴다. 나쁜 코드가 나쁜 이유는 개발속도와 생산성을 시간이 지날수록 크게 떨어 트린다. .. 2022. 2. 10. [리펙터링 2판] 12장 - 상속 다루기 상속은 발등에 불이 떨어져야 비로소 잘못 사용했음을 알아차리는 경우가 많다. 상속은 막강한 도구지만, 잘못된 곳에서 사용되거나 나중에 환경이 변해 문제가 생기기도 한다. 12. 1 매서드 올리기 내용 중복된 메서드를 찾아 제거하여 메서드 올리기를 사용한다. 적용 메서드들의 본문 코드가 똑같을 때 매서드 올리기를 적용하면 된다. 가장 이상하고 복잡한 경우에는 메서드의 본문에서 참조하는 필드들이 서브클래스에만 있는 경우 슈퍼클래스로 올린 후에 메서드를 올려야 한다. 결과 중복 코드를 제거하는 것은 중요하기에 효과를 볼 수 있다. 예시 Before class Employee {...} class Salesman extends Employee { get name() {...} } class Engineer ex.. 2022. 2. 10. [리펙터링 2판] 11장 - API 리팩터링 모듈과 함수는 소프트웨어를 구성하는 빌등 블록, API는 이 블록들을 끼워 맞추는 연결부이다. 좋은 API 데이터를 갱신하는 함수와 그저 조회만 하는 함수를 명확히 구분해야 한다. 11. 1 질의 함수와 변경 함수 분리하기 내용 외부에서 관찰할 수 있는 겉보기 부수효과가 전혀 없이 값을 반환해주는 함수를 추구해야한다. 겉보기 부수효과는 입출력 변경이나, 데이터 값이 변형되는 경우 적용 데이터 갱신과 조회 기능이 있다면 명확히 구분해야 한다. 질의 함수(읽기 함수 : 값을 계산하여 리턴시키는 함수)는 부수효과가 포함된 경우에 제거한다. (명령-질의 분리) 결과 부수 효과를 신경쓸 필요가 없어 사용하기 편하고 테스트하기 쉽다. 예시 Before function getTotalOutstandingAndSend.. 2022. 2. 9. [리펙터링 2판] 10장 - 조건부 로직 간소화 조건부 로직은 프로그램의 힘을 강화하는 데 크게 기여하지만, 프로그램을 복잡하게 만드는 주요 원인이기도 하다. 복잡한 조건문에는 조건문 분해하기(10.1절) 논리적 조합을 명확하게 다듬는 데는 중복 조건식 통합하기(10.2절) 함수의 핵심 로직에 본격적으로 들어가기 앞서 무언가를 검사할때는 (10.3절) 똑같은 분기 로직 (switch문)이 여러곳에 등장하면 (10.4절) 널과 같은 특이 케이스를 처리하는데도 조건부 로직이 흔히 쓰이고 거의 똑같으면 (10.5절) 프로그램의 상태를 확인하고 그결과에 따라 다르게 동작해야하는 상황이면 (10.6 절) 10.1 조건문 분해하기 내용 다양한 조건, 그에따라 동작도 다양한 코드를 작성하면 순식간에 긴 함수가 된다. 긴 함수는 그자체로 읽기 어렵지만, 조건문은 그.. 2022. 2. 9. [리펙터링 2판] 9장 - 데이터 조직화 하나의 값이 여러 목적으로 사용된다면 혼란과 버그를 낳는다. 9.1절 변수 쪼개기를 적용해 용도별로 분리하고, 변수 이름 바꾸기(6.7절)을 친해지도록 하며, 파생 변수를 질의 함수로 바꾸기(9.3절)를 활용하여 변수 자체를 완전히 없애는게 해법일 때도 있다. 결국 이 장에서 말하고자 하는 바는 나눠서 잘 담아야 하는 이야기이다. 예를 들어, 요리를 할 때 재료들을 한 바구니에 담지 않고 여러가지 재료들을 여러가지 그릇에 담는게 일반적이다. 요리를 할 줄 아는 사람에게 재료를 주어야 할 경우가 있다고 가정하였다. 그러면 한 바구니 안에 모든걸 담았을 때, 한 바구니 안에있는 재료들로 어떤 요리를 할지 감이 잡히지 않을 것이다. 재료가 많고 복잡한 요리일 수록 더욱 그러할께 뻔하다. 하지만 반대 경우가 되.. 2022. 2. 8. [JS] 반복문에 promise 1. promise promise는 비동기적 실행을 동기적으로 실행하기 위해 사용한다고 생각합니다. 정확히는 비동기적 실행에 대한 결과 값에 대한 완료 또는 실패에 의한 결과 값입니다. (기본적인 내용은 유튜브 엘리님 설명이 좋습니다.) 양치를 하는 행위는 비동기와 비슷하다고 생각합니다. 그래서 양치를 하면서 책을 읽을 수 있고, 폰을 볼 수도 있습니다. 하지만 양치를 하면서 치아의 상태를 제대로 확인 할 수는 없습니다. 거품 때문에 양치를 마치고 난 뒤에야 치아 확인을 제대로 할 수 있죠. 양치라는 행위를 완료하고 치아를 확인하게 만들어 주는 것이 promise라고 생각합니다. 2. 반복문에서 비동기 처리를 동기적으로 처리 promise를 반복문에 사용하려 했는데, 블로그에 많은 글들이 있었지만 오히려.. 2022. 2. 7. 이전 1 2 3 4 5 6 7 8 ··· 17 다음