전체 글(408)
-
(함수형 코딩) 1장/ 함수형 사고란 무엇인가?
책을 펴고 1장을 펴면 다음과 같은 챕터에 대한 설명을 볼 수 있다. 이 장에서는 함수형 사고가 무엇인지, 왜 함수형 사고가 더 좋은 소프트웨어를 만들려는 개발자에게 도움이 되는지 설명합니다. 1장을 읽으면 함수형 사고가 무엇인지 알 수 있어야하고, 함수형 사고가 왜 도움이 되는지 설명할 수 있어야한다. 함수형 사고를 알기 전에 먼저 함수형 프로그래밍이란 무엇일까? 🧐 함수형 프로그래밍이란? 함수형 프로그래밍에 대해서 위키피디아를 찾으면 다음과 같이 2가지를 언급하고 있다. 1. 수학 함수를 사용하고 부수 효과를 피하는 것이 특징인 프로그래밍 패러다임. 2. 부수 효과 없이 순수 함수만 사용하는 프로그래밍 스타일 위 2문장을 읽고 수학 함수는 무엇이고 부수 효과는 무엇이며, 순수 함수는 무엇인지가 궁금해..
2022.07.28 -
(TIL) 20220725/ 테스트 주도 개발
🏴Facts(한 것) & Findings(배운 것) 테스트 주도 개발의 목적은 무엇일까? 에서는 그 목적을 다음과 같이 소개한다. 작동하는 깔끔한 코드. 론 제프리즈의 핵심을 찌르는 이 한마디가 바로 테스트 주도 개발의 궁극적인 목표다. 책에서 TDD의 목표를 위와 같이 설명해주는 데는 여러가지 이유가 있는데, 나는 그중에서 이 예시에 가장 마음이 와닿았다. 코드가 가르쳐주는 모든 교훈을 학습할 기회를 갖게 된다. 처음 생각나는 대로 후딱 완료해 버리면 두 번째 것, 더 나은 것에 대해 생각할 기회를 잃게 된다. 맞다. 나는 TDD를 해오면서 '또 어떤 경우가 있지?'라는 생각을 가지고 테스트를 작성했다. 물론 시간이 없어서 테스트 케이스를 기본적인 것만 작성할 때도 많았지만. 간단한 예로, i..
2022.07.25 -
(JS) var를 지양해야하는 이유
JS가 탄생할 당시에는 변수를 선언할 때 사용할 수 있는 예약어가 var밖에 없었다. 하지만 JS는 점차 발전했고, ES6(ECMA Script 2015)의 발표에서 let과 const가 추가되었다. 제목에서 말했듯, var를 지양하고 let, const를 사용해야하는 이유가 뭘까? 어떤 문제가 있는걸까? 🧐선언 문제 아래 코드를 보자. var computer = "mac"; var computer = "mac2"; var computer = "mac3"; console.log(computer); 이 코드를 실행하면 어떻게 될까? Java와 C++이라면 상상도 하지 못할 일이 발생한다. 에러가 없이 실행이 되는 것도 모자라서, mac3라는 문구가 출력된다. 완전히 동일한 변수 이름으로 다른 값을 넣어 선..
2022.07.23 -
(방법론) BDD와 TDD, 그리고 DDD(행동 주도 개발, 테스트 주도 개발, 도메인 주도 개발)
클린 아키텍처를 다시 읽으면서 BDD에 관한 언급이 아주 짤막하게 있었다. 테스트는 시스템의 일부인가? 아니면 별개인가? 어떤 종류의 테스트카 있는가? 단위 테스트와 통합 테스트는 서로 다른가? 인수 테스트, 기능 테스트, Cucumber 테스트, TDD 테스트, BDD 테스트, 컴포넌트 테스트 등은 어떻지? - 28장 테스트의 경계, 262p 그래서 나는 BDD가 무엇인지 찾아보게 되었고, 아주 놀라운 사실들을 발견할 수 있었다. 🧐BDD(Behavior driven development) 직역하자면 '행동 주도 개발'이다. 어떤 행동을 말하는 것일까? 이 행동은 비지니스 로직에 관한 행동 일 것이다. (역으로 생각하면 BDD의 특징이 비즈니스 요구사항에 집중할 수 있는 것이니) '할인된 상품의 목록을..
2022.07.21 -
(운영체제) 부동 소수점과 이에 따른 문제점(vs 고정 소수점)
오늘은 면접에서 질문 받은 것 중에서 기억에 남는 부동 소수점에 관련된 문제에 대해서 얘기해보려 한다. (사실 카테고리가 운영체제가 맞는지도 의문이다.) 뭐든지 그 세부사항을 알려면 그 단어의 의미를 먼저 파악해야 한다. '부동 소수점'은 무엇을 말하는 것일까? 먼저 '부동'이 뭔지 살펴보자. 🧐 안 움직이는 건가요?한자로는 浮動(Not 不動) 이다. 그러니까 떠다니며 움직인다는 뜻이다. (반대어로는 고정 소수점이 있다.) 안 움직이는 것이 아니다. 왜 '뜰 부'를 써서 표현 했을까?(영어로는 float) 당연하게도 소수점의 위치를 고정하지 않고 그 위치를 나타내는 수이기 때문이다. 소수점의 위치를 고정하지 않는다! 이것은 또 무슨 말인가? 단어가 이해가 가지 않을때는 반대어를 생각하면 좋다. ..
2022.07.21 -
(Java) Interface와 Abstract class의 차이(인터페이스와 추상클래스)
백엔드 개발자이고 면접을 준비하고 있거나, 면접을 봐본 사람이라면 이 질문에 대해서 고민 해봤을 것이다. 언뜻 보면 둘이 비슷하게 생겼다. 외부적으로는 선언된 방식이 interface냐 abstract class냐의 차이가 있지만 말이다. 그럼 각각에 대해서 알아보도록 하자. 🧐Interface 먼저 인터페이스 코드를 보자. public interface Dog { void bark(); void walk(); } Dog라는 interface에는 두가지 메서드가 있다. 하나는 bark(), 하나는 walk() 각각의 메서드는 추상 메서드인가? 앞에 abstract가 없는데도 추상 메서드인가? 그렇다. interface가 가지고 있는 메서드는 모두 추상 메서드이다. 그럼 정말 모두 추상 메서드일까? 다음의..
2022.07.16