[리팩터링] 8장 기능 이동
2022. 9. 13. 16:37
자기계발/책
1. 함수 옮기기 좋은 소프트에워 설계의 핵심은 모듈화가 얼마나 잘 되어 있느냐를 뜻하는 모듈성 이다. 모듈성이란 프로그램의 어딘가를 수정하려고 할 때 해당 기능과 깊이 관련된 작은 일부만 이해해도 가능하게 해주는 능력이다. 보통 프로그램 이해도가 높아질수록 소프트웨어 요소들을 더 잘 묶는 새로운 방법을 깨우치게 된다. 그래서 높아진 이해를 반영하려면 요소들을 이리저리 옮겨야 할 수 있다. 객체 지향 프로그래밍의 핵심 모듈화 컨텍스트는 클래스다. 프로그래밍 언어들은 저마다의 모듈화 수단을 제공하며, 각각의 수단이 함수가 살아 숨 쉬는 컨텍스트를 만들어준다. 2. 필드 옮기기 class Customer { get plan() {return this._plan;} get discountRate() {retu..
[리팩터링] 7장 캡슐화
2022. 9. 4. 22:13
자기계발/책
캡술화란? 데이터에 대한 접근을 함수로만 한정하는 것 캡슐화의 이점 데이터에 대한 접근을 한정함으로써 의도치 않은 변경을 예방한다.(전역변수/가변데이터) 데이터 입출력시 추가로직을 쉽게 한다. ex) 객체의 사본 제공, 특정 입력 무시 1. 레코드 캡슐화하기 레코드를 데이터 클래스로 전환하기 레코드 간단히 말하자면 구조체 JS 에서 모든 object는 그 자체로 레코드로 사용 가능. HashMap 등으로도 레코드 사용 가능. 레코드 캡슐화의 결과는 결국 레코드를 클래스로 만드는 것. 레코드는 데이터의 집합. 레코드 캡술화는 이 데이터들에 대한 입출력 함수를 만드는 것. 데이터 + 입출력 함수 = 클래스 2. 컬렉션 캡슐화하기 컬렉션 자체를 반환하지 않는다. 복제본을 반환. 읽기 전용으로 제공 등을 이용한..
[리팩터링] 6장 기본적인 리팩터링
2022. 9. 4. 21:38
자기계발/책
1. 함수 추출하기 코드를 언제 독립된 함수로 묶어야 할까? 많은 의견들이 있지만, 저자는 '목적과 구현을 분리'를 기준으로 추천한다. 코드를 보고 무슨 일을 하는지 파악하는데 한 참을 걸린다면 그 부분을 함수로 추출한 뒤 '무슨 일' 에 걸맞는 이름을 짓는다. 이렇게 해두면 나중에 코드를 다시 읽을 때 함수의 목적이 눈에 확 들어오고, 본문 코드(그 함수가 목적을 이루기 위해 구체적으로 수행하는 일)에 대해서는 더 이상 신경 쓸 일이 없다. 함수를 새로 만들고 이름을 붙일 때 "어떻게" 가 아닌 "무엇을" 하는지가 드러나는 이름을 짓도록 주의하자. 목적을 잘 드러내는 이름을 붙여야 한다. 2. 함수 인라인하기 때로는 함수 본문이 이름만큼 명확한 경우도 있다. 리팩터링 과정에..
[리팩터링] 3. 코드에서 나는 악취
2022. 9. 4. 18:07
자기계발/책
코드에서 나는 악취에 대해 어떤 경우에 악취가 나는지 간단히 알아보자. 나중에 기법들을 배우며 다시 돌아볼 것. 1. 기이한 이름 2. 중복 코드 3. 긴 함수 4. 긴 매개변수 목록 5. 전역 데이터 전역 데이터 사용 주의하자6. 가변 데이터 (const가 아닌 것. 주의하자.)7. 뒤엉킨 변경 단일 책임 원칙이 제대로 지켜지지 않을 때, 즉 하나의 모듈이 서로 다른 이유들로 인해 여러가지 방식으로 변경되는 일이 많을 때. 예를 들어 지원해야 할 DB가 추가될 때마다 함수 세 개를 바꿔야 하고, 금융 상품이 추가될 때마다 또 다른 함수 네개를 바꿔야 하는 모듈이 있다면 뒤엉킨 변경이 발생한 것.8. 산탄총 수술 코드를 변경할 떄마다 자잘하게 수정해야 하는 클래스가 많을 때 풍김.9. 기능 편애 어떤 함..
[리팩터링] 2. 리팩터링 원칙
2022. 8. 23. 21:44
자기계발/책
리팩터링 정의 리팩터링 : 소프트웨어의 겉보기 동작은 그대로 유지한 채, 코드를 이해하고 수정하기 쉽도록 내부 구조를 변경하는 기법 두 개의 모자 리팩터링 기능 추가 이 두 가지를 한꺼번에 고려하며 작업하지 말고, 각각 리팩터링 모자를 썼을 때와 그렇지 않을 떄를 구분해서 작업하자. 리팩터링의 이유 리팩터링을 하는 이유: 경제적인 이유(프로그래밍 속도) 도덕적인 이유(그냥 해야하는 것 같아서)가 아님. 리팩터링 언제?? 3의 법칙 일단 개발한다. 같은 일을 두번하게 되면.. 일단 한다. 또 같은 일을 하면, 리팩터링 하자! 준비를 위한 리팩터링 기능 추가하기 전에, 리팩터링 하면 더 쉽게 추가할 수 있음. 이해를 위한 리팩터링 코드 파악에 리팩터링이 효과적일 수 있음. 쓰레기 줍기 비효율적인 코드 발견 ..
[혼자 공부하는 얄팍한 코딩 지식] 환경변수란?
2022. 8. 15. 19:26
자기계발/책
※ '혼자 공부하는 얄팍한 코딩 지식'(고현민) 책을 읽고 작성한 글입니다. 환경 변수 프로그램이 컴퓨터에서 동작할 때의 환경과 관련된 변수 운영체제에서 응용 프로그램 작동을 위해 참조하기 위한 설정을 기록하는 곳 (시스템 실행 파일이 있는 디렉터리를 지정하는 등) 우리가 컴퓨터로 사용하는 모든 프로세스(웹사이트, 게임, 그림판 등)는 전부 운영체제라는 상위 프로그램에 의해 실행되는 자식 프로세스이다. 이 때 운영체제 입장에서 해당 프로세스를 실행시키기 위해 참조하는 값을 담은 변수가 바로 환경 변수. 환경 변수는 어디에서, 왜 사용될까? 환경 변수 사용 용도 1. 필요한 프로그램의 실행 경로 ex) 자바 프로그래밍을 위해 JDK(자바 개발 키트)를 다운로드하면 자바와 프로그래밍에 필요한 기타 요소들이..
[혼자 공부하는 얄팍한 코딩 지식] 프로그래밍 패러다임
2022. 8. 9. 22:55
자기계발/책
절차지향 프로그래밍 : 코드 실행 흐름이 소스 코드를 위에서부터 차례대로 순차적으로 이어짐. 객체지향 프로그래밍 : 코드를 작성할 때 구성요소를 객체라는 단위로 묶어서 이들의 조합으로 프로그램을 만듬. 함수형 프로그래밍 : 변수 사용을 최소화하는 프로그래밍 방식. (변수는 프로그램에서 개발자가 메인 메모리 공간에 올려놓은 값. 값이 대입되면 바뀔 수 없는 상수와 달리 변수는 언제든 값을 변경할 수 있음.) 프로그래밍 언어가 제공하는 기능들을 사용해서 어떤 '상태 값'(변수)를 두지 않고 기능을 설계함. ※ '혼자 공부하는 얄팍한 코딩 지식'(고현민) 책을 읽고 작성한 글입니다. ※ '혼자 공부하는 얄팍한 코딩 지식'(고현민) 3장 p.261 연습문제 4번
[혼자 공부하는 얄팍한 코딩 지식] 관계형 데이터베이스 종류
2022. 7. 24. 16:35
자기계발/책
※ '혼자 공부하는 얄팍한 코딩 지식'(고현민) 책을 읽고 작성한 글입니다. 오라클 데이터베이스 대형 기업 사이에서 가장 널리 사용되는 관계형 데이터베이스. 미국 거대 IT기업인 오라클에서 만든 제품으로, 은행이나 대기업에서 사용할만큼 강력한 기능과 안정성을 자랑함. 데이터베이스는 유료이며, 바교적 높은 가격 MySQL 오라클과 점유율 1, 2위를 다투는 RDBMS. 오픈 소스가 제품이며, 용도에 따라 무료 이용 가능. 2010년 오라클에 인수되었지만, 아직 오픈 소스로 제공됨. 마이크로소프트 SQL 서버 (MSSQL) 마이크로소프트에서 만든 제품. 윈도우 서버에서만 구동 가능. 윈도우 프로그래밍이 가능한 C#과 높은 호환성 라이선스 별로 금액, 가용 범위가 다름. PostgreSQL 오픈소스 데이터베이..
[혼자 공부하는 얄팍한 코딩 지식] 용어 이해: 돔(DOM), 웹사이트, 브라우저
2022. 7. 16. 19:36
자기계발/책
※ '혼자 공부하는 얄팍한 코딩 지식'(고현민) 책을 읽고 작성한 글입니다. (기초) 웹 사이트에 접속할 때 일어나는 일 네이버 웹사이트 접속 1. 사용자가 웹 브라우저(크롬, 웨일 등등)에 네이버 홈페이지 주소 입력. 2. 웹 브라우저는 네이버 서버에 '네이버 홈페이지에 접속하겠다'는 요청을 보냄. 3. 네이버 서버는 HTML 문서를 비롯해 각종 파일과 데이터를 보내면서 응답. 4. 웹 브라우저는 네이버 서버로부터 받은 문서를 실행해 네이버 홈페이지를 화면에 보여줌. 웹 페이지란? 위 내용에서 알 수 있듯, 우리가 이용하는 웹 페이지는 브라우저(크롬, 웨일 등)가 HTML 문서를 읽어서 브라우저 화면에 나타난 결과이다. HTML 문서에는 CSS, 자바스크립트 가 첨부되어 ..
[혼자 공부하는 얄팍한 코딩 지식] 용어 정리: 디버깅, 빌드
2022. 7. 11. 01:33
자기계발/책
※ '혼자 공부하는 얄팍한 코딩 지식'(고현민) 책을 읽고 작성한 글입니다. 디버깅 디버그(debug)는 벌레를 뜻하는 bug와 제거한다는 뜻의 접두사 de- 가 합쳐진 단어입니다. 유래: 1940년대에는 커다른 컴퓨터에 수많은 케이블을 연결하는 것으로 프로그래밍했습니다. 어느날 컴퓨터가 오작동을 일으켰지만 이유를 알 수 없었죠. 알고 보니 케이블 사이에 나방이 끼어 죽어서 오작동을 일으켰던 겁니다. 이 때부터 디버그는 나방, 즉 벌레(bug)를 제거(de)해서 오류를 수정한다는 의미로 사용하기 시작했습니다. 디버그는 주로 오류 수정 프로그램과 그 작업을 통칭하는 단어로 사용되며, 오류를 찾아 제거하는 행동을 디버깅이라고 합니다. 빌드 빌드는 소스코드를 비롯한 모든 프로그램 구성 요소를 모아 실행할 수 ..