전체 글(407)
-
(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 -
(Java) JVM 구조와 이해
오늘은 JVM의 구조에 대해서 적어보려 한다. 이전에 간략하게나마 JVM 구조에 대해 적은 것이 있으니 참고하는 것도 좋을거 같다. JAVA - JVM에 대해 알아보자 -1 Java에 대해 알고 있는가? 자바는 썬 마이크로시스템즈의 제임스 고슬링과 다른 연구원들이 개발한 객체 지향적 프로그래밍 언어이다.(순수 객체 지향 언어X) 91년 그린 프로젝트라는 이름으 mirrorofcode.tistory.com 오늘은 이런 원론적인 얘기를 하려는 것은 아니고 실제로 JVM이 어떻게 구성되어 있는지를 알아보려고한다. 윗 글을 읽기 귀찮은 분들 위해 간략하게 JVM이 무엇인지에 대해 설명하면 운영체제 위에서 동작하는 자바를 위한 운영체제라고 생각하면 편할거 같다. 일반적으로 계층이 Program - OS - HW ..
2022.07.16