분류 전체보기

우테코 5기

[레벨 1 강의] TDD, 리팩터링, 자바에 대한 이해

TDD(Test Driven Development) 코드는 두 가지로 나뉠 수 있다. 1. 프로덕션 코드, 2. 테스트 코드. 프로덕션 코드란, 사용자가 실제로 사용하게 될 코드를 의미한다. (우리가 코드를 생각하면 떠올리는 것들!) 테스트 코드란, 프로덕션 코드를 테스트하기 위한 코드이다. TDD는 뭘까? TDD = TFD(Test First Development) + Refactoring 이라고 한다. 유추할 수 있듯이, 테스트를 먼저 작성하면서, 리팩토링으로 보강하는 개발 방법이다! TDD란 프로그래밍 의사결정과 피드백 사이의 간극을 의식하고 이를 제어하는 기술이다. - 켄트벡, Test Driven Development by Example 중 TDD의 아이러니 중 하나는 테스트 기술이 아니라는 점..

우테코 5기

[레벨1 강의] 단위 테스트, 코드 품질

테스트 테스트를 작성할 때는 1. 경계값을 잘 찾아야 하고, 2. 생길 수 있는 케이스에 대해 충분히 고민해봐야 한다. 경계값을 잘 찾는다는 건? 나눗셈의 경우를 고민해보자. float divide(int x, int y) { return x / y; } 위와 같은 경우 테스트 케이스는 어떻게 작성되어야 할까? 우선 나눗셈의 특성을 이해한다. 나눗셈은 0으로 나누는 경우, 1로 나누는 경우 등이 특별한 케이스에 해당한다. 반면 2 / 3, 4 / 5 등은 모두 같은 '일반적인' 케이스에 해당한다고도 볼 수 있다. 즉, 이와 같은 테스트 케이스를 중복 작성해서는 안된다. 그렇다면 개인적인 사고에 의존하지 않고 경계값을 더 잘 찾는 방법이 있을까? -> 극단의 값들을 넣어본다. 로또 번호라면 1, 45가 극..

객체지향

[객체지향의 사실과 오해] 5장: 책임과 메세지

자율적인 책임 훌륭한 객체지향의 세계는 명확하게 정의된 역할과 책임을 지닌 객체들이 상호 협력하는 세계다. 즉, 자율적인 객체가 상호 협력하는 세계이다. 자율성이란? '자기 스스로의 원칙에 따라 어떤 일을 하거나 자신을 통제해서 절제하는 성질'이나 특성을 의미한다. 적절한 책임은 자율적인 객체를 낳고, 자율적인 객체들이 모여 유연하고 단순한 협력을 낳는다. 따라서 협력에 참여하는 객체가 얼마나 자율적인지가 전체 애플리케이션의 품질을 결정한다. 이상한 나라의 엘리스 이야기에서 왕이 증인들을 불러 증언하라고 하는 내용이 나온다. 이 이야기에서 중요한 점은, 왕은 증인석에 앉은 인물이 누가 되었든 간에 '중언하라'라고 말할 뿐이라는 점이다. '증언하라' 라는 메세지는 증인의 자율성을 충분히 보장한다. 어떻게 ..

객체지향

[객체지향의 사실과 오해] 4장: 역할, 책임, 협력

협력이 객체를 결정한다 전통적인 경제학은 인간을 '이기적인 동시에 합리적인 존재'라고 칭한다. 그러나 다수의 실험 결과는 그렇지 않다. 인간의 본성은 이기적이고 합리적이지만, 행동을 결정하는 건 이런 본성이 아닌 문맥(context)이다. 인간이 어떤 상황에 처해있는지가 인간의 행동을 결정한다. 객체지향 세계에서도 마찬가지로 협력이라는 문맥이 객체의 행동 방식을 결정한다. 중요한 것은 개별 객체가 아닌, 객체들 사이에 이뤄지는 협력이다. 협력이 자리를 잡으면 저절로 객체의 행동이 드러나고, 뒤이어 객체의 상태가 결정된다. 협력에서 발생하는 책임 협력은 혼자만의 힘으로 문제를 해결하기 어렵기 때문에 발생하고, 요청과 응답으로 구성된다. 요청은 또 다른 요청을 연쇄적으로 발생시키기도 한다. 요청과 응답의 개..

객체지향

[객체지향의 사실과 오해] 3장: 타입과 추상화

훌륭한 프로그램을 작성하기 위한 중요한 전제 조건은 추상화를 정확하게 다루는 능력이다. 지하철 노선도는 추상화의 대표적인 예시이다. 실제 지형적인 측면을 따져보면 역 간의 거리, 위치는 모두 정확하지 않다. 그럼에도 위와 같은 지하철 노선도가 널리 사용되는 이유는 승객의 목적에 부합하기 때문이다. 승객의 목적은 하나의 역에서 다른 역으로 이동하는 것이다. 즉, 승객이 원하는 것은 어떤 역에서 출발하는지, 어떤 역에서 환승하는지, 어떤 역을 거쳐야 하는지를 알아내는 것이다. 따라서 위 노선도는 승객이 원하는 정보만 제공하는 데 특화되었으며, 목적과 무관한 정보를 제거했다. 추상화를 통한 복잡성 극복 현실은 복잡하다. 법칙은 단순하다. 버릴 게 무엇인지 알아내라. - 리처드 파인만 현실은 복잡하며 예측 불가..

객체지향

[객체지향의 사실과 오해] 2장: 이상한 나라의 객체

인간의 인지능력과 객체지향 3개월 정도 된 아기들도 선천적인 인지능력을 가진다. 세상을 뚜렷한 경계를 가진 객체들의 집합으로 본다는 것이다. 인간은 이런 인지능력을 통해 세상을 이해한다. 도로 위에는 수많은 자동차가 존재한다. 제조회사도 다르며, 색깔도 다르고, 문의 개수도 다르다. 그럼에도 우리는 이들을 통틀어 '자동차'라고 한다. 인간은 본능적으로 세상을 독립적이고 식별 가능한 객체의 집합으로 바라본다. 이것이 많은 사람들이 객체지향이 이해하기 쉬운 패러다임이라고 말하는 이유다. 객체지향은 인간의 기본적인 인지능력에 기반을 두고 있기 때문이다. 이렇게 세상을 더 작은 객체로 분해하는 것은 세상의 복잡성을 극복하기 위함이다. 객체지향 패러다임도 마찬가지다. 소프트웨어의 세계 역시 인간이 인지할 수 있는..

객체지향

[객체지향의 사실과 오해] 1장: 협력하는 객체들의 공동체

시너지를 생각해라. 전체는 부분의 합보다 크다. 객체지향과 실세계의 관계 객체지향은 실세계의 투영이자 직접적으로 모델링하는 패러다임일까? '실세계의 모방' 이라는 개념은 객체지향의 기반을 이루는 철학적인 개념을 설명하는 데는 적합하지만, 유연하고 실용적인 관점에서 객체지향 분석, 설계를 설명하기에는 적합하지 않다. 애플리케이션을 개발하면서 객체에 직접적으로 대응되는 실세계의 사물을 발견할 확률은 그다지 높지 않다. 그런 객체가 존재한다고 하더라도 객체와 사물 간의 개념적 거리는 유사성을 찾기 어려울 정도로 매우 먼 것이 일반적이다. 방화벽이 화재의 확산이 아니라 네트워크 침입을 막는다고 해서 문제가 되는가? 객체지향은 실세계를 모델링하는 것이 아닌, 실세계를 '기반'으로 새로운 세상을 창조하는 것이다. ..

우테코 5기

[우테코] 우아한테크코스 백엔드 5기 최종 합격 후기

안녕하세요! 2023년에 우아한테크코스 5기 백엔드로 합류하게 되었습니다. 약 3개월 정도의 선발과정 동안 제가 느꼈던 점들, 진행해왔던 방식을 모두 적어보려 합니다. 혹시 지원하고자 하는 분이 계시다면 도움이 되었으면 합니다 :) 단, 여기서 이야기하는 내용이 우테코를 합격하기 위한 전략은 아니며, 단순히 한 사람의 합격 스토리로 봐주시면 감사하겠습니다. 저는 몇 달 전까지만 해도 개발자가 뭘 하는지도 잘 몰랐습니다. 그냥 기술력만 뛰어나면 좋은 개발자라고 생각했습니다. 그래서 학교 수업만 열심히 들었습니다. 실질적인 프로젝트 경험도 얼마 안됩니다. 그렇다고 완성한 프로젝트들도 '잘했냐'라고 물어본다면 '그렇다'라고 대답하기 어렵습니다. 깃허브도 잘 사용하지 않았었습니다. 이런 제가 우아한테크코스에 합..

클린 코드

[클린 코드] 10장: 클래스

클래스 체계 클래스를 정의하는 표준 자바 관례에 따르면, 다음과 같은 순서로 클래스는 구성된다. 추상화 수준이 내려간다. 즉, 신문 기사처럼 읽힌다. class A { public static a; // 정적 공개 변수 private static b; // 정적 비공개 변수 private c; // 비공개 인스턴스 변수 public d() { // 공개 메서드 e(); f(); } private e() { // 공개 메서드가 호출하는 비공개 메서드 ... } private f() { // 공개 메서드가 호출하는 비공개 메서드 ... } } 클래스는 작아야 한다! 클래스를 만들 때 가장 중요한 원칙은 '작아야 한다'는 것이다. 그러면 얼마나 작아야 하는가? 클래스가 '크냐 작냐'의 기준은 '책임이 많냐 적..

우테코 5기

[우테코] 우아한 테크코스 5기 1차 합격 + 최종 합격

우아한 테크코스 5기 1차 심사에 합격했다..! 🥳 정말 이 날만을 기다리면서도, 합격하지 못할 수도 있다는 마음에 불안한 하루들을 보냈었다. 프리코스가 끝난 이후에도 혹여나 합격할 경우를 대비해서 꾸준히 복습하면서 대비를 해왔고, 휴학하지 않은 재학생이기에 시간이 부족해서 학교 시험은 중간, 기말 모두 포기했다. (F만 안받으면 된다는 마음가짐) 사실 열심히 한다고 해서 누가 붙는다는 보장을 해주는 것도 아니지만, 결과는 생각하지 않기로 마음먹고 매일 매일 최선을 다해왔다. 그저 '성장하는 것'에 목표를 뒀다. 1차 합격 연락을 받은 지금은, 그런 노력을 우아한테크코스에게 인정받은 것 같아 되게 기쁘다. 아직 최종 코테가 남았지만 말이다..! 우아한테크코스에 가까워질수록, 더욱 매력적인 과정으로 다가오..

teo_99
'분류 전체보기' 카테고리의 글 목록 (11 Page)