본문 바로가기

전체 글102

[리펙터링 2판] 7장 - 캡슐화 7장은 캡슐화 주제로 class를 사용하는것이 대부분이다. 클래스는 객체 지향의 프로그래밍의 컨셉으로 정보를 숨기는 용도로 설계되었다고 한다. 클래스는 내부의 정보뿐 아니라 클래스 사이의 연결 관계를 숨기는 데도 유용하다. 모듈을 분리하는 가장 중요한 기준은 모듈이 자신을 제외한 다른부분에 드러내지 않아야 할 비밀을 얼마나 잘 숨기냐에 있다. 이런 내용을 알고는 있지만 직접 와닿는 부분이 없었고, 굳이? 왜? 라는 의문문이 많이 따라 왔으나 설명과 함께 예시, 예제 코드를 보면서 그러한 부분을 많이 해소 할 수 있었다. 7.1 레코드 캡슐화 하기 내용 레코드를 데이터 클래스로 전환 적용 데이터 레코드는 정의하고 사용하기 간단하지만, 계산해서 얻을 수 있는 값과 그렇지 않은 값을 명확히 구분해야 하는 단점.. 2021. 12. 28.
[리팩터링 2판] 6장 - 기본적인 리팩터링 6장을 읽고나서의 느낌은 기능의 공통점을 잘 찾아내어 같은 공통점끼리 묶고 나누는 것이 중요하다는 것이다. 예를 들어 아래의 그림 밴다이어그램이 하나의 함수에 담겨져 있으면, 정확히 함수 셋 (교집합, 노랑, 보라) 라고 이름을 지어 이름에 맞게 각각 나누어 담는 것이라 느꼈다. 6.1 함수 추출하기 반대 리팩터링 : 6.2 함수 인라인하기 내용 코드가 하는 일을 '목적과 구현'을 기준으로 분리하여 함수로 추출하고 목적에 맞는 함수 이름을 붙이는 것. 적용 함수 안에 코드가 5~6줄 이상 넘어갈 때 부터. 코드가 하는 일이 무엇인지 파악하기 어려운 경우. 함수안 코드가 1줄이라도 적용. - 색상을 반전시켜 강조하는 highlight() 메서드의 경우 본문에 reverse() 메서드 호출 1라인만 작성, .. 2021. 12. 21.
리펙터링 2판 - 2~3장 리펙토링은 무엇인가에 대해 정의를 내리는듯한 설명을 다방면에서 계속한다. 다른 문장이지만 같은 뜻을 나타내고 있는 문장이 많다. 리펙토링에 대해 중요시하지 않거나, 리펙토링을 처음 접하는 사람에게는 이해가 안 되는 방법이기 때문에 책에서 여러 방면으로 리펙토링에 대해 설명해주고 있다고 생각한다. 이 책에서 리펙토링에 대해 다방면으로 설명을 하면 이해가 되는 부분이 있고, 그렇지 않은 부분이 있다. 하지만 리펙토링을 하지 않았을 때를 생각하고 그 후를 조금이나마 예측을 한다면 하는 것이 분명히 낫다는 것을 알 수 있었다. 2장. 리팩터링 원칙 1장에서 리팩터링을 코드와 함께 예시를 들어 설명하면, 여기서는 글로써 설명을 하게 된다. 리팩터링 : 소프트웨어의 겉보기 동작은 그대로 유지한채, 코드를 이해하고 .. 2021. 12. 15.
리팩터링 2판 - 1장 로또에 당첨된다면 누구나 다 좋다는 것은 알고 있다. 하지만 돈이 많던 적던 그 당첨되었을 때 기분은 당첨되지 않는 이상 모르는 것이다. 이 책 1장을 읽으면서의 느낌이었다. 글쓴이는 오히려 예시를 들면 모든게 명확해진다고 하여 예시를 앞에서 부터 바로 보여주었지만, 오히려 나는 반감의 효과가 있었다. 예시가 뜬금 없었다고 해야할까.. 그래도 세부적인 기술들은 뒷장에서 소개되는 것 같아 기대되는 부분이 있다. 1장에서 말하고자 하는 내용을 다 동의하고 이해하나, 일부만 공감이 갔다. 왜냐하면 리팩터링이 필요한 경험이 없고, 단지 프로젝트를 하면서 느꼈던 것이 전부였기 때문에, 프로젝트의 리팩터링의 의지가 있기에 일부만 공감이 갔다. 이 책을 보통 주니어에서 시니어 경력사이에 추천한다. 나는 아직 신입 조.. 2021. 12. 4.
평균 구하기 (연습문제 Lv1 / JS) https://programmers.co.kr/learn/courses/30/lessons/12944?language=javascript. 문제해석 문제내용 그대로, 배열에 값들의 평균을 구하는 문제 입니다. 코드 function solution(arr) { var answer = 0; arr.map((v)=>{ answer += v }) return answer / arr.length; } 굉장히 쉬운 문제여서 게시글 작성을 생략하려 했지만 위에 코드처럼 작성을 하였는데, 아래코드처럼 reduce를 생각을 못하였기에 오답 노트 느낌으로 작성을 하였습니다. function average(array){ return array.reduce((a, b) => a + b) / array.length; } 2021. 12. 2.
프레임워크(Framework)와 라이브러리(Library) 정의 프레임워크와 라이브러리 단어를 사용하면서, 내가 정말 알고 사용하는가에 의문이 많이 들었습니다. 엄연히 다른 단어이고 다른 뜻일텐데 혼용해서 사용하는게 아닌지 싶어 정리를 시작했습니다. 프레임워크 (Framework) - 사전적 의미 컴퓨터 프로그래밍에서, 소프트웨어 프레임워크(software framework)는 복잡한 문제를 해결하거나 서술하는 데 사용되는 기본 개념 구조이다. 간단히 뼈대, 골조(骨組), 프레임워크(framework)라고도 한다. 소프트웨어 환경에서 사용할 수 있게 만들어 준다. 프레임워크는 프로그램을 개발하기 위한 큰 틀을 제공해준다고 생각합니다. ex) Java - Spring, Python - Django 라이브러리 (Library) - 사전적 의미 소프트웨어 개발 시 사용되는.. 2021. 11. 30.