난 레벨 1 동안 어떤 경험들을 했을까?1. 객체지향에 입문하다.우테코 내에서, 그리고 여러 글을 통해 “부끄지만 2년 넘게 자바를 사용하면서도 객체지향에 대해 깊게 고민해본적이 없다”는 말을 했었다.레벨1 동안 가장 많이 성장한 점은 객체지향을 바라보는 태도의 변화이다.그동안은 객체를 그냥 ”클래스의 인스턴스 그뿐”이라고만 생각했었고, 객체지향은 “자바의 패러다임”이라는 이론적인 단어로만 생각했었다.4번의 페어프로그래밍을 진행하고, 객사오를 읽으면서 객체가 무엇이며, 객체지향을 위해 어떻게 바라봐야 하는지에 대한 나만의 기준을 세워나가고 있다. 사실 레벨 1의 마지막 체스 미션을 하면서 한번 크게 위기가 왔었다. 미션을 진행하면서 부정적인 생각들만 떠올랐기 때문이다.“웹 개발을 할 때 객체지향이 직접적..
🏨 수업 피드백1. cache vs pool두 개념의 차이점은 미묘하게 다르다. 구분하자.cache미리 만들어두기pool만든 게 있으면 꺼내쓰기/없으면 만들어 넣어두기고로 블랙잭에서 내가 활용한 개념은 cache이다(게임에 사용될 카드들을 미리 생성해 놓았기 때문) 2. 클래스 파일의 수클래스 파일이 많아지면 경계하는 의견이 있다. 보통 클래스 파일이 많아지면 내부 코드를 다 확인하는 등 유지보수가 힘들어질 것이라고 생각하기 때문이다. 하지만 객체를 잘 분리하면 이런 일이 없다. 내부 코드를 확인한다는 것 자체가 그 코드가 내가 예상하는 것처럼 행동할 거라는 확신이 없어서라고도 볼 수 있기 때문이다. 따라서 메서드 명으로 역할을 정확히 드러내서 시그니처만 보고도 이해할 수 있도록 하는 것이 중요하다. ..
약 한달가량 늦은 업로드...그때 그때 업로드해야겠다 싶어도 미루게 되버리는 것 같다... Keep추가된 요구사항을 지키기 위해 노력한 것객사오 책에서 배운 책임이라는 개념을 적용하기 위해 노력한 것Problem도메인에 대한 이해가 부족하여 전체적인 미션 진행이 어려웠다.페어 프로그래밍을 할 때 짝의 속도를 따라가기 버거웠다.최대한 이해를 해보려고 질문도 하려고 했지만 나때문에 속도가 느려지는 것 같아 그냥 넘어갔다.중간부터는 이해가 안돼서 프로그래머가 아닌 따라치기만 하는 코더였다.입출력 요구사항을 다르게 이해하고 구현했다.시간이 많이 소요됐다.처음에 책임을 추출(?)하려고 했는데 잘 감이 오지는 않아서 어려웠다.처음 강의를 조금 놓치다가 보니 점점 강의 시간에 잘 집중하지 못했던 것 같다.try이번에..
🫡 구현 시 집중한 부분1. 함수형 프로그래밍함수형 프로그래밍이란, 작업을 어떻게 수행할 것인지(즉 로직에 집중하는 것이) 아니라 무엇을 할 것인지에 집중하는 방법구체적인 작업 방식은 라이브러리가 알아서 처리하고, 사용자는 라이브러리가 제공하는 인터페이스를 구현하는 것만으로도 원하는 작업을 수행할 수 있다. 자바에서는 익명 클래스, 함수형 인터페이스, 람다, 스트림API 등의 문법을 사용할 수 있다. 선언형 프로그래밍과 명령어 프로그래밍의 차이점을 이론으로만 들었을 때는 잘 와닺지 않았었는데,For문을 사용하여 명령형으로 사용한 코드와 Stream을 사용하여 선언형으로 작성한 코드를 비교해보니 차이점을 확 느낄 수 있었다. 함수형 인터페이스와 스트림 API를 최대한 활용하고자 하였다.👍 이번 미션에..
사다리 타기 미션 🫡 구현 시 집중한 부분 1. TDD 테스트를 먼저 작성하고 기능 구현 후 리팩토링하는 과정 TDD는 사이클을 반복하여 구현하는 것을 말한다. [개인적으로 느낀 장점] 그동안 나는 설계 단계에서 도출한 객체와 구조를 최대한 바꾸지 않도록 하려고 고민했었지만 스스로 스킬이 부족하다는 생각에 빠져있었는데, TDD는 초기 설계에 집착할 필요가 없어 심리적으로 편했던 것 같다. 정말 요구사항에만 있는 행위들만 테스트하고, 구현하기 때문에 불필요한 행위들이 추가적으로 구현되지 않았다. 2. 제어할 수 없는 부분 테스트 |-----|-----|-----| 처음 사다리를 구현할 때, 하나의 세로 줄을 Line이라는 객체를 통해 구현하고 객체 안에서 경로가 있는지 없는지를 나타내는 List를 Rand..
자동차 경주 미션 🫡 구현 시 집중한 부분 1. 단위 테스트 테스트 가능한 가장 작은 소프트웨어를 실행하여 예상대로 동작하는지 확인하는 테스트 각 객체가 가지는 책임에 대해 테스트 하도록 함 2. MVC 패턴 domain 패키지 핵심 비지니스 로직을 가지는 객체 view 패키지 UI 관련한 객체 controller 패키지 view와 domain의 연결 객체 주의 view 패키지의 객체가 domain 패키지 객체에 의존할 수 있지만, domain 패키지의 객체는 view 패키지 객체에 의존하지 않도록 구현해야 함 👥 짝(페어)과의 공유한 내용 1. 재귀를 통한 재입력 처음 구현 시, 사용자의 입력값에 따라 에러가 발생했을 경우 재입력을 받도록 하였다. 나는 보통 재귀를 통해 재입력을 받는 것도록 구현을 했..
1단계 팀원들과 함께 각자가 받은 리뷰에 대해 얘기를 하다가, 일급 컬렉션에 대한 얘기가 나왔다. 나와 페어는 경주에 참여하는 자동차들의 모음인 List를 멤버변수로 담는 CarGroup 클래스를 만들고 그룹에 차를 추가하거나, 우승자를 구하는 메서드를 작성했는데, 사실 일급 컬렉션인지도 모르고 일급 컬렉션을 사용한 샘이다. 따라서, 일급 컬렉션이 무엇이고 어떻게 나는 활용했는지를 알아보고자 작성한다. 정의 일급 컬렉션이란, 컬렉션을 Wrapping한 클래스로, 반드시 컬렉션외의 다른 멤버 변수가 없어야 한다. public class CarGroup { private final List cars = new ArrayList(); public void add(Car car) { cars.add(car); ..
개인 페어 회고Keep페드로와 페어를 진행하면서 최대한 이야기를 많이하려고 시도한 것이 좋았다.강의에서 배운 내용인 일단 처음 잡은 목표(돌아가는 쓰레기)를 완성하기 위해 최선을 다했다.내가 기존에 구현했던 방식만 고집하는 것이 아닌, 새로운 방식인 페어의 방식을 이해해보려고 노력했다.Problem페어를 진행할 때 생각보다 속도가 많이 더뎠다.객체지향에 대한 이해가 부족함을 많이 느꼈다.기본 문법도 헷갈려 버렸다.Try내 생각을 조금 더 매끄럽게 정리하는 연습을 하자.정리가 잘되지 않으면 글을 작성해보려고 하자너무 긴장하지 말고 차분하게 생각하자.객체지향과 자바 기본 문법을 추가로 학습하자.
블랙잭 미션을 하다가 List.copyof()를 사용했었는데, List.of()와의 차이점이 무엇인지에 대해 알고자 작성하게 되었다. copyOf() Returns an unmodifiable List containing the elements of the given Collection, in its iteration order. The given Collection must not be null, and it must not contain any null elements. If the given Collection is subsequently modified, the returned List will not reflect such modifications. 인자로 주어진 컬렉션의 요소를 순서대로 포함하..
발단 시작은 바로 페드로가 보낸 슬랙의 메시지였다... 상수화된 인스턴스를 선언할 때 uppercase로 작성하는 것이 맞는 것인가?에 대한 문제였는데, 그동안 나도 인스턴스에 대해서는 uppercase로 적을 생각을 못해봤었는데 생각해보니, 인스턴스라도 상수라면 uppercase가 맞네? 라는 생각이 들었다. 추가로 하나의 질문을 더 던져주었는데, static final 변수는 항상 상수일까?에 대한 문제였다. 그렇다! 사실 내가 생각하기에 처음 문제는, 상수화된 인스턴스를 선언할 때 uppercase로 작성하는 것이 맞는 것인가가 아닌, 상수화된 인스턴스가 정말 상수로 볼 수 있는 것인가의 관점으로 봐야한다. 자 여기서 한번 생각해보자. 우리가 생각해볼 수 있는 것은 2가지이다. static fina..