내배캠)Week4_TIL/WIL

Dev.Shinny·2022년 11월 22일
0

내배캠

목록 보기
3/7

Week03 (11.21-11.25)

221121 TIL

JAVA 제네릭스 작성 완료.

SOLID

1. SRP (단일책임의 원칙: Single Responsibility Principle)

하나의 클래스는 하나의 책임만 갖는다.

클래스는 기능이나 그 존재 자체의 목적이 있다. 그에 따르는 하나의 책임만 갖는다. 즉 클래스 하나에 너무 많은 기능을 넣지 말라. 많고 적음의 기준은 개발자 '내'가 정한다.

책임이란 기준이 모호하다.

어떤 기업의 개발팀과 영업팀이 있다. 영업팀의 이번 분기 실적이 좋지 않다. 이 책임을 개발팀에 물을 순 없다.

객체지향은 유지보수 즉 변화 대응이 중요하다. 이건 숙명이다 거스릴 수 없다. 개발자는 유지보수와 성능 사이에서 고민하는데, 유지보수가 이긴다. 이 유지보수성을 극대화하기 위한 것이 단일 책임 원칙이다.

그러니까 객체를 잘 쪼개라. 그리고 그 근본 목표가 유지보수성을 극대화하는 것이다.

클래스의 덩치를 너무 키우면 책임의 연쇄작용이 일어난다. A를 고쳤더니 B를 고쳐야하고 C를 고쳐야 하는 최악의 상황이다.

솔리드 원칙의 기초가 되는 것이 바로 이 단일책임의 원칙이다.

2. OCP (개방폐쇄의 원칙: Open Close Principle)

APPLE을 OCP를 잘한다. 엔진을 구성할 때 엔진을 단일체인가 아니면 엔진은 실린더, 발전기 등으로 나누는 복합체인가.

애플은 아이폰 하나만 보면 응집도가 높아보이지만 무엇보다 확장에 열려있다. 변경에 닫혀 있다. 새로운 변경상황이 발생했을 때 유연하게 코드를 추가 또는 수정할 수 있어야 한다. 그러나 한 번 만들어진 코드가 직접 수정된는 일은 바람직하다 즉 객체를 직접 수정하지 않고도 변경사항을 적용할 수 있도록.

한 번 객체화를 하면 바깥에서는 건들일 수 없게, 결합하는 방법을 많이 제공 인터페이스 상에서.

전 레고에 빗대곤 합니다.
높은 응집도는 레고의 "수준높은 에디션"
낮은 결합도는 레고의 "특수블럭 사용최소화"
확장가능은 "신규블럭 제작가능"
변경불가는 "블럭규격 절대준수"

3. LSP (리스코브 치환의 원칙: The Liskov Substitution Principle)

어떤 클래스가 있을 때 정확성을 깨지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다(호환성). 그러러면 인터페이스 규약을 잘 지켜야한다. 다형성.

아직 작성중...

아직 SOLID 정리를 못했다. 너무 이론적인 설명이라 이해를 좀 더 하고 정리한 뒤에 글 올릴 생각. 요즘 계속 내가 스스로 공부할 걸 찾아서 공부해야하니 좋기도 하면서, 좀 늘어질 때도 많은 것 같다. 화이팅.

221122 TIL

컬렉션 프레임 워크 공부중.
코드 위주로 공부 중.
회원이름과 ID를 저장하고 출력하는 프로그램을 각 프레임워크를 이용해 짜보는 중.

Collection 요소 순회하는 Iterator와
TreeSet의 Comparable과 Comparator 공부.
근데 Comparator를 언제 어떻게 사용하는지는 좀 더 공부 필요할 듯
좀 더 확실히 공부하고 컬렉션 프레임 워크에 대해 정리하여 글 수정할 생각.

프로젝트 기간 중에서 여유가 되면, 람다 + 스트림 공부 좀 더 해야겠음

221123 TIL

  • 메모장 프로젝트를 진행했다.
  • 유일키의 중요성을 알았다.
    메모 객체에 유일한 키값이 될 변수를 선언하지 않아서 특정 메모를 삭제하고 싶어도 삭제할 수 없었다. 물론 삭제 기능을 구현해두었다. 그러나 작성한 메모가 저장된 인덱스 값을 알고 있다는 전제 하에서 삭제가 진행되기 때문에 결과적으로 실패했다.
  • 클래스 관계도를 짜는 것이 얼마나 중요한지 알았다.
    무작정 코드를 짜는 것부터 시작하는 바람에 어떻게 구조를 잡아야 하는지, 어디서부터 시작해야할지 한참을 헤맸다.
  • 객체지향 지식을 탄탄히 해야겠다고 다짐했다.

221124 TIL

Github Push 문제해결
25일 TIL 호텔 예약프로젝트 글과 연결.

221125 TIL

호텔 예약 프로젝트 글 작성.

221126 TIL

  • 정규식의 사용법
    정규식이 무엇인지, 왜 사용하는지 알게되었다.
    그러나 정규식을 작성하지는 못한다. 연습이 필요하다.
  • 입력한 날짜와 현재 날짜 비교하기 (정리하여 글 올리기)

Week04

  • **FACTS(사실, 객관)** : 이번 일주일 동안 있었던 일, 내가 한 일
  • **FEELINGS(느낌, 주관)** : 나의 감정적인 반응, 느낌
  • **FINDINGS(배운 것)** : 그 상황으로부터 내가 배운 것, 얻은 것
  • **FUTURE(**

Facts

  • SOLID의 개념을 배웠다.
  • 프로젝트가 진행되었다.
  • 깃허브 사용법을 익혔다.

Feelings & Findings

호텔 예약 프로젝트 후기에 자세히 서술.

  • 자기주도 학습의 중요성

Future

  • 다음 프로젝트에서는 진정한 의미의 협업을 해내고 싶다.
  • 앞으로 깃허브에 잔디밭을 깔겠다.
  • 배운 것들을 토대로 리팩토링.
profile
Hello I'm Shinny. A developer who try to enjoy the challenge.

0개의 댓글