본문 바로가기

자기계발/책20

[🧑🏻‍💻혼자 공부하는 컴퓨터 구조+운영체제] 1~3장(컴퓨터 구조, 데이터, 명령어) 요약 정리 컴퓨터 구조 시작하기컴퓨터 구조를 알아야 하는 이유컴퓨터 구조는 실력 있는 개발자가 되려면 반드시 알아야 할 기본 지식입니다. 내가 이 책을 관심있게 바라보고 읽기 시작한 것은 이 생각에서 비롯되었다.작년부터 개발자 업무를 시작하며 컴퓨터에 대해 잘 알아야하는 이유를 몸으로 조금씩 느끼고 있었다.다만 면접을 통과하기 위해 벼락치기로 외운 지식만으로도 충분하지 않을까란 핑계를 대며, 다시 복습할 엄두를 못내고 있었다. 해당 내용 공부는 정말 학교 공부하는 느낌이 들기 떄문이다.하지만 이 책은 정말 읽기 쉽게 쓰여져 있고, 첫 장부터 왜 개발자라면 컴퓨터 구조를 알아야 하는지 그 근거가 분명하게 쓰여져 있어 너무 좋다. 문제 해결컴퓨터 구조 구성 요소와 작동 원리를 몰라도, 프로그래밍 언어의 문법만 알면 프.. 2023. 1. 23.
[리팩터링] 8장 기능 이동 1. 함수 옮기기 좋은 소프트에워 설계의 핵심은 모듈화가 얼마나 잘 되어 있느냐를 뜻하는 모듈성 이다. 모듈성이란 프로그램의 어딘가를 수정하려고 할 때 해당 기능과 깊이 관련된 작은 일부만 이해해도 가능하게 해주는 능력이다. 보통 프로그램 이해도가 높아질수록 소프트웨어 요소들을 더 잘 묶는 새로운 방법을 깨우치게 된다. 그래서 높아진 이해를 반영하려면 요소들을 이리저리 옮겨야 할 수 있다. 객체 지향 프로그래밍의 핵심 모듈화 컨텍스트는 클래스다. 프로그래밍 언어들은 저마다의 모듈화 수단을 제공하며, 각각의 수단이 함수가 살아 숨 쉬는 컨텍스트를 만들어준다. 2. 필드 옮기기 class Customer { get plan() {return this._plan;} get discountRate() {retu.. 2022. 9. 13.
[리팩터링] 7장 캡슐화 캡술화란? 데이터에 대한 접근을 함수로만 한정하는 것 캡슐화의 이점 데이터에 대한 접근을 한정함으로써 의도치 않은 변경을 예방한다.(전역변수/가변데이터) 데이터 입출력시 추가로직을 쉽게 한다. ex) 객체의 사본 제공, 특정 입력 무시 1. 레코드 캡슐화하기 레코드를 데이터 클래스로 전환하기 레코드 간단히 말하자면 구조체 JS 에서 모든 object는 그 자체로 레코드로 사용 가능. HashMap 등으로도 레코드 사용 가능. 레코드 캡슐화의 결과는 결국 레코드를 클래스로 만드는 것. 레코드는 데이터의 집합. 레코드 캡술화는 이 데이터들에 대한 입출력 함수를 만드는 것. 데이터 + 입출력 함수 = 클래스 2. 컬렉션 캡슐화하기 컬렉션 자체를 반환하지 않는다. 복제본을 반환. 읽기 전용으로 제공 등을 이용한.. 2022. 9. 4.
[리팩터링] 6장 기본적인 리팩터링 1. 함수 추출하기 코드를 언제 독립된 함수로 묶어야 할까? 많은 의견들이 있지만, 저자는 '목적과 구현을 분리'를 기준으로 추천한다. 코드를 보고 무슨 일을 하는지 파악하는데 한 참을 걸린다면 그 부분을 함수로 추출한 뒤 '무슨 일' 에 걸맞는 이름을 짓는다. 이렇게 해두면 나중에 코드를 다시 읽을 때 함수의 목적이 눈에 확 들어오고, 본문 코드(그 함수가 목적을 이루기 위해 구체적으로 수행하는 일)에 대해서는 더 이상 신경 쓸 일이 없다. 함수를 새로 만들고 이름을 붙일 때 "어떻게" 가 아닌 "무엇을" 하는지가 드러나는 이름을 짓도록 주의하자. 목적을 잘 드러내는 이름을 붙여야 한다. 2. 함수 인라인하기 때로는 함수 본문이 이름만큼 명확한 경우도 있다. 리팩터링 과정에.. 2022. 9. 4.
[리팩터링] 3. 코드에서 나는 악취 코드에서 나는 악취에 대해 어떤 경우에 악취가 나는지 간단히 알아보자. 나중에 기법들을 배우며 다시 돌아볼 것. 1. 기이한 이름 2. 중복 코드 3. 긴 함수 4. 긴 매개변수 목록 5. 전역 데이터 전역 데이터 사용 주의하자6. 가변 데이터 (const가 아닌 것. 주의하자.)7. 뒤엉킨 변경 단일 책임 원칙이 제대로 지켜지지 않을 때, 즉 하나의 모듈이 서로 다른 이유들로 인해 여러가지 방식으로 변경되는 일이 많을 때. 예를 들어 지원해야 할 DB가 추가될 때마다 함수 세 개를 바꿔야 하고, 금융 상품이 추가될 때마다 또 다른 함수 네개를 바꿔야 하는 모듈이 있다면 뒤엉킨 변경이 발생한 것.8. 산탄총 수술 코드를 변경할 떄마다 자잘하게 수정해야 하는 클래스가 많을 때 풍김.9. 기능 편애 어떤 함.. 2022. 9. 4.
[리팩터링] 2. 리팩터링 원칙 리팩터링 정의 리팩터링 : 소프트웨어의 겉보기 동작은 그대로 유지한 채, 코드를 이해하고 수정하기 쉽도록 내부 구조를 변경하는 기법 두 개의 모자 리팩터링 기능 추가 이 두 가지를 한꺼번에 고려하며 작업하지 말고, 각각 리팩터링 모자를 썼을 때와 그렇지 않을 떄를 구분해서 작업하자. 리팩터링의 이유 리팩터링을 하는 이유: 경제적인 이유(프로그래밍 속도) 도덕적인 이유(그냥 해야하는 것 같아서)가 아님. 리팩터링 언제?? 3의 법칙 일단 개발한다. 같은 일을 두번하게 되면.. 일단 한다. 또 같은 일을 하면, 리팩터링 하자! 준비를 위한 리팩터링 기능 추가하기 전에, 리팩터링 하면 더 쉽게 추가할 수 있음. 이해를 위한 리팩터링 코드 파악에 리팩터링이 효과적일 수 있음. 쓰레기 줍기 비효율적인 코드 발견 .. 2022. 8. 23.
반응형