devlog of ShinJe Kim

[TIL] 2019-08-29 (목)

|

Today I Learned

  • iterator 패턴: 이터레이터 패턴은 컬렉션 구현 방법을 노출시키지 않으면서 그 집합체 안에 들어있는 모든 항목에 접근할 수 있는 방법을 제공함. 컬렉션 객채 안에 들어있는 모든 항목에 접근하는 방식이 통일되어있으면 어떤 종류의 집합체에 대해서도 사용할 수 있는 다형적인 코드를 만들 수 있음. 이터레이터 패턴을 사용하면 모든 항목에 일일이 접근하는 작업을 컬렉션 객체가 아니라 반복자 객체에서 하게 됨. 이렇게 하면 집합체의 인터페이스 및 구현이 간단해질 뿐만 아니라 집합체에서는 반복작업에서 손을 떼고 원래 자신이 할 일(객체 컬렉션 관리)에만 전념할 수 있음. 즉 접근 기능과 자료 구조를 분리시켜 객체화 한 것.
  • 디자인 원칙 중 바뀌는 부분을 캡슐화하라는 원칙이 있음. iterator도 어떻게 보면 반복을 캡슐화한 것.
  • 또 하나의 디자인 원칙은 클래스를 바꾸는 이유는 한 가지 뿐이어야 한다는 것.
  • 언더스코어(_): 사용하지 않는 인자를 표기할 떄 씀(프로덕션 레벨로 컴파일하면 사용하지 않는 객체?가 있을 때 에러가 발생함. 과거에는 이를 해결하기 위해 의미 없는 코드를 작성해서 모든 객체를 사용했음. 하지만 최근의 언어들은 언더스코어로 이를 표현할 수 있게 해준다)
  • 함수형 프로그래밍(functional programming): side-causes(함수 안에 숨겨진 input)와 side-effects(함수 안에 숨겨진 output)가 최대한 없도록 선언하는 프로그래밍 패러다임.
  • 1급 객체: 3가지 조건을 만족해야 함. 변수나 데이터에 할당할 수 있어야 함/객체의 인자로 넘길 수 있어야 함/객체의 리턴값으로 리턴할 수 있어야 함. 코틀린의 함수는 1급 객체이지만 자바의 함수는 1급 객체가 아님. 함수형 프로그래밍의 함수는 1급 객체임.
  • 모달과 모달리스 : 모달은 해당 창 이외의 부분에 포커스가 가지 않도록 블록해놓은 것. 모달리스는 해당 윈도우가 열려있어도 다른 부분에 포커스가 가능.
  • 새로운 개념을 공부할 떄 그 개념의 관련 개념들을 모두 정리하여 공부하는 것이 중요함.

Todo

  • Observer 디자인 패턴이란?
  • async의 단점이 뭐다? -> observer디자인 패턴 -> rx

Comments