분류 전체보기

이번 리뷰어였던 디디는 예외 메세지에 대한 피드백을 몇 개 달아주었다. 달아주면서도 예외 처리에 대한 부분은 아직 감이 잘 오지 않을 것이라고 말해주긴 했지만 이번에 알게된 몇 가지를 정리해 보았다. 💋 예외 처리는 조심스럽게... 내가 받은 리뷰이다. RuntimeException 전체를 한번에 잡아서 message를 출력해주는건 어플리케이션의 취약점을 노출할 수 있는 포인트가 될 수 있어요. 예를들면 SQL 관련된 Exception의 메세지를 그대로 view에 보여줘서 사용자가 데이터베이스의 constraint 예외 메세지를 받을수도 있거든요. catch문을 좀 더 세분화 해서 잡아서 원하는 동작을 하도록 하는것도 일종의 방법일 수 있습니다. 혹은 예외메세지를 view로 보여주지 않고 공통된 메세지가..
💋 원시값 포장 원시값 포장은 String, int 등등 원시타입의 값을 이용해 속성을 표현하지 않고, 의미가 있는 객체로 포장한다는 개념이다. String name = "깃짱"; // 원시타입으로 속성을 표현 Name name = new Name("깃짱"); // 원시값을 포장해서 속성을 표현 원시값 포장을 하면 클래스 내부에 검증 로직을 만들어서 스스로 상태를 관리하게 되어 책임을 분리할 수 있다. 결과적으로 객체의 책임이 더 명확해진다. 또 원시값 포장을 하지 않으면 외부에서 검증해야 하는데, 이렇게 되면 검증 과정을 거치지 않고 값을 사용할 수 있게 된다. 원시값 포장을 하면, 객체를 사용해야 하는 경우에 늘 내부에서 검증하기 때문에, 비즈니스 로직 전반에서 포장값을 사용함으로서 항상 신뢰를 확보..
⭐ 레벨1 인터뷰를 준비하며 드디어 약 두 달 간의 우테코 레벨1 생활을 마치고, 오늘 이리내, 오잉, 제나와 만나서 인터뷰를 준비하고 있다. 그동안 학습한 내용들을 바탕으로, 짧게 키워드를 정리해 보았다. 키워드에 대해 질문하고 싶은 것이 있다면 댓글로 남겨주세요! 💋 자동차 경주 미션 ✔ 페어 프로그래밍 페어 프로그래밍은 페어와 함께 설계와 구현의 모든 과정을 진행하는 방식이다. 페어 프로그래밍을 통해 생산성이 향상되는 경우가 많다고 한다. ✔ 단위 테스트 단위테스트는 테스트 가능한 가장 작은 소프트웨어를 실행하여 예상대로 동작하는지 확인하는 것이다. ✔ 네이밍의 중요성 네이밍은 너무 짧아도 좋지 않다. 정확하게 역할을 설명하는 이름을 지어주는 것이 좋다. 이름을 통해서 의도를 드러내는 것이 좋다. ..
💋 TDD에 대한 생각 TDD를 처음 적용해서 설계를 할 때는 굉장히 어려웠다. TDD의 아이러니 중 하나는 테스트 기술이 아니라는 점이다. TDD는 분석 기술이며, 설계 기술이기도 하다. - 켄트벡, Test Driven Development by Example 중 특히 처음에는 이 말이 너무너무 어려웠다. 나에게 TDD는 테스트 코드를 먼저 짜는 것 뿐이었다. TDD가 설계 기술이라는 것을 인지하지 못한 채, 테스트 코드부터 짜기 위해서는 내가 테스트하고 싶은 메서드의 시그니처(파라미터, 반환값의 타입)는 반드시 알아야 했다. 굉장히 작게 어떤 메서드를 테스트한다는 생각만 가지고 있어서 오히려 더 설계를 방해했던 것 같기도 하다. 하지만 지금 느끼는 TDD는 다르다. 우선, 설계부터가 중요하다. 한 ..
💋 단위 테스트에 대한 생각 내가 단위 테스트를 작성하는 이유는 무엇인가? 단위 테스트를 작성하면 마음이 편안하기 때문이다. 리팩터링을 할 때에도 어떤 부분에서 문제가 될 지에 대해 걱정하지 않고 코드를 수정할 수 있다. 세부 구현에 대해 코드 품질을 높일 때 특히 효과적이라고 생각했다. 하지만 이번 체스 미션 중에 단위 테스트를 빗겨가는 케이스를 두 번이나 생각해내지 못했고, 테스트 코드의 맹점은 완벽하지 않은 테스트가 신뢰될 때라는 것을 깨달았다. 앞으로는 조금 덜 맹신하면서 테스트 코드를 작성할 필요가 있을 것 같다. 항상 놓치는 케이스가 없는지 신경쓰면서 작성해야겠다. 내가 작성한 좋은 단위 테스트는 어떠한 부분에서 좋은 단위 테스트라 느꼈는가? 단위 테스트 첫 강의 때도 언급했었지만, 나는 프로..
컬렉션 프레임워크의 List를 정렬할 때 사용되는 Collections.sort()에 대한 포스팅이다! 👍🏻 요약 Collections.sort(List이름): 기본 정렬 기준으로 정렬한다. Collections.sort(List이름, Comparator): Comparator 인터페이스를 구현한 인스턴스에서 지정한대로 정렬한다. 아래는 예시 코드이다. List animals = new ArrayList(List.of("깃짱", "오잉", "이리내", "허브", "주노", "제나")); Collections.sort(animals); System.out.println(animals); // [깃짱, 오잉, 이리내, 제나, 주노, 허브] Collections.sort(animals, (o1, o2) -> ..
💋 다중 기본키가 왜 필요함? 오늘 이리내랑 JAVA로 만든 체스 게임을 DB에 연결하고 있었다. 체스판에서 각 위치를 A1, A2, A3,...,B1,B2,...H8라고 부르는데, 우리는 각 위치에 체스말(Piece)의 종류(King, Queen, Knight...)와 그 색깔(Black, White)을 저장하고 싶었다. 아마도 두 가지 방법이 있을 것이다. 1. A,B,C...H(File)과 1,2,...8(Rank)를 다중 기본키로 설정하는 방법! 만약 내 코드가 이 두 가지를 Position이라는 클래스 내에서 별도로 관리중이라면 굉장히 유용할 것이다. 이 경우 다중 기본키를 지정한 테이블을 만들어야 한다. 💋 다중 기본키 테이블 만들기 (SQL) CREATE TABLE chess_game( po..
· ETC
💋 화살표 ↗ ↙ ↖ ↘→ ← ← ↑ ↓ ↔ ➡⬅⬆⬇↗↘↙↖↕↔ ⇐⇑⇒⇓⇔➡⬅⬇⬆ ➩➪➫➬➭➮➯➱ ⇚⇛ ⇽⇾⇿ ⇦⇧⇨⇩⇪⌅⌆⌤⏎ ⇕⇖⇗⇘⇙ 💋 하트 ❤🧡💛💚💙💜🖤🤍🤎💔❤‍🔥❤‍🩹❣💕💞💓💗💖💘💝 💋 아이폰 이모티콘 ‼❌👍🏻💋🍑✔☑🍎🍏🌈⭐ 💋 연산 기호 ➕➖➗✖
우테코의 미션은 계속 누적된다. 첫주차부터 했던 페어 프로그래밍, 단위 테스트, TDD 모두 누적해서 미션을 구현했다. 💋 상태 패턴 사용 피드백2 강의를 듣기까지 구현을 못했는데, 그래서 이미 상태 패턴을 사용하는 방법을 강의에서 봐 버렸다. 그냥 본 김에 네오를 따라 상태 패턴을 사용해봤다. 장단점을 좀 느꼈는데, 현재까지 내가 느낀 것은 아래 내가 코드리뷰에 남겼던 이야기대로다. 상태 패턴에 대해서 한 번 포스팅 해야겠다! 💋 클래스, 메서드의 abstract, final 제어자를 잘 활용하자 이번 미션에서 상속을 자주 활용하다 보니 제어자 abstract, final에 대해 제대로 이해할 수 있었다. 앞으로 모든 클래스를 abstract나 final 둘 중 하나로 만들기로 다짐했다! 💋 쉽게 계산..
💋 인트로 우아한테크코스 미션 중 블랙잭 미션을 진행할 때, 굉장히 핫한 주제가 있었다. 바로 상속과 조합이었다. 조합에 대해 처음 들어보았고, 찾아보려 검색했지만 이펙티브 자바에서 다루는 아이템 18 상속보다는 컴포지션을 사용하라에 대한 내용 외에 컴포지션에 대해 설명하는 내용을 찾아볼 수가 없었다. 그래서 직접 써보기로 했다! 👍 조합? 컴포지션? 조합 == 컴포지션 같은 말이다. 상속은 문제가 많다. 잘 사용하면 되는 일이지만, 상속을 하면서 내부 구현을 외부에 드러내지 않고 사용하기는 굉장히 어렵다. (상속의 문제점은 이 포스팅의 주제가 아니니, 더 구체적으로 설명하지 않겠다.) 이 포스팅은 상속이 좋다, 조합이 좋다를 강조하는 포스팅이 아니다. 상속을 사용하다가, 상속의 단점을 크게 느껴 조합을..
깃짱
'분류 전체보기' 카테고리의 글 목록 (40 Page)