프론트엔드 7

객체지향의 사실과 오해 - 객체 지도

이번 챕터는 글로 써 내려가는 것보다 그림을 통해 이해하는 게 쉽다. 길을 묻는 방법은 현재의 마을에서 다른 마을로 이동하는 현재의 요구만을 만족시킬 수 있다. 지도는 현재의 목적뿐만 아니라 다양한 목적을 위해 재사용될 수 있다. 즉 지도는 범용적이다. 훌륭한 기능은 훌륭한 소프트웨어를 만들고 훌륭한 구조는 훌륭한 소프트웨어를 만들기 위한 필요조건이다. 게임 플레이어들은 게임 도메인을 캐릭터와 몬스터, 그리고 아이템 간의 관계로 표현한다. 중고 자동차 판매상은 구매되는 자동차와 판매되는 자동차의 교환으로 자동차 도메인을 바라본다. 코드의 구조가 도메인의 구조를 반영하기 때문에 도메인을 이해하면 코드를 이해하기가 수월해진다. 시스템에 할당된 커다란 책임은 시스템 안의 작은 규모의 객체들이 수행해야 하는 더..

객체지향의 사실과 오해 - 책임과 메시지

여러 내용들이 가리키는 하나의 목적은 소프트웨어의 유연한 변경, 즉 유지보수를 편하게 하는 것 자율성 객체가 어떤 행동을 하는 유일한 이유는 다른 객체로부터 요청을 수신했기 때문이다. 요청을 처리하기 위해 객체가 수행하는 행동을 책임이라고 한다. 자율적인 객체란 스스로의 의지와 판단에 따라 각자 맡은 책임을 수행하는 객체를 의미한다. 모자 장수는 왕에게 증언할 책임은 있지만, 증언을 위한 구체적인 방법이나 절차에 대해서는 최대한의 자유를 누린다. 여기서 문제는 여러 책임들이 모자 장수가 증언하기 위해 선택할 수 있는 자유의 범위를 지나치게 제한한다는 점이다. 두 번째 모자 장수는 자율적으로 책임을 수행할 수 없다. 객체가 자율적이기 위해서는 객체에게 할당되는 책임의 수준 역시 자율적이어야 한다. 그러나 ..

객체지향의 사실과 오해 - 타입과 추상화 | 역할, 책임, 협력

책을 읽으며 객체지향과 더불어 하나의 컴포넌트가 가지게 되는 역할과 책임에 대해서 계속 생각하게 된다. 재사용성이 가능한 컴포넌트를 만들기 위해서 작은 단위의 컴포넌트로 잘게 쪼개는 상황이 생기는데, 이때 조금 더 각각의 컴포넌트들이 역할과 책임을 작게 작게 가져가게 된다. 많은 설명이 개념 중심이라 배운 것들을 어디서 적용해볼지 고민도 많이 해봐야겠다. 결국에는 직접 설계하고 코드를 짜봐야 내 것이 되니깐... 코드를 빨리 짜는 것이 중요한 게 아니라 유지보수성이 뛰어난 애플리케이션을 구축하기 위해서는 견고한 설계가 우선시 되어야 한다. 타입과 추상화 지하철 승객의 목적 : 하나의 역에서 다른 역으로 이동하는 것 승객이 원하는 것 : 빠르게 목적지에 도착할 수 있는지를 직관적이고 단순하게 보여주는 것 ..

실용주의 프로그래머 (Day 6, 7)

오늘 TIL 3줄 요약 현재 사용하는 도구들을 더 효율적으로 사용할 수 있도록 습관을 개선시켜보자. 테스트와 지속적인 메모, 그리고 디버깅을 통해 안정적이고 더 좋은 프로그램 설계해보자 항상 작은 단계를 밟아가며 프로그래밍을 하고 너무 먼 미래를 예측하려 하지말자. 대신에 언제나 교체 가능한 코드를 작성하여 대비하자. TIL (Today I Learned) 날짜 2022.03.24 - 2022.03.25 오늘 읽은 범위 3장. 기본도구 ~ 4장. 실용주의 편집증 책에서 기억하고 싶은 내용 쉘 스크립트를 통해 좀 더 효율적인 프로그래밍을 할 수 있다. 어느 정도 에디터를 써야 유창하다고 볼 수 있을까에 대한 과제 목록들 (마우스를 사용하지 않고 진행해보기) 디버깅에 대한 사고방식; 한발짝 뒤로 물러나서 버..

입사 후 3개월

TL;DR 처음 입사해서 파일럿 프로젝트를 시작한 게 엊그제 같은데 시간은 참 빠르다. 회사에서는 부족한 점을 뼈저리게 느끼고 있다. 퇴근 이후에는 동기들과 스터디를 진행하거나 개인적인 공부를 조금씩 해나가고 있다. 최근 싱가포르를 4박 5일로 다녀왔다. 회사 입사 이후에는 공부할 것이 점점 쌓여간다. 팀원들이 지나가듯 말하는 몇몇 용어를 잘 알지 못해서 팀원들에게 바로 물어보거나, 노션에 따로 적어 놓고 집에서 몰래 찾아봤다. 싱글톤, BFF패턴, blue green 배포 등과 더불어 개발 실무에 사용하는 ArgoCD, Jenkins 등 모르는 게 많았다. 모르는 게 정말 많아서 슬랙에 종종 물어보는데 나만 물어보는 것 같다. 우리 팀원들은 혼자서 척척 다 잘 해낸다. 나는 질문 봇이다. 첫 6주 동안..

회고 2022.02.16

Vuex에서 각 사용자가 독립된 저장소를 가지려면?

시나리오 두 명의 사용자가 들어왔을 때 각각 독립적인 상태를 가지고, 유저의 클릭 이벤트에 따라 로그인 모달 창이 열리거나 닫혀야 한다. 만약 모달 상태를 저장하는 store를 단순히 객체로 구성했다면 이런 식이다. 이 상태로 빌드가 된 다음 배포가 되었을 때 문제는 무엇일까? const modalStoreModule = { namespaced: true, state: { isOn: { login: false, }, }, mutations, actions, }; export default modalStoreModule 문제는 바로 두 명의 사용자가 각각 독립된 모달 상태 저장소를 가지고 있지 않다는 것이다. 첫 번째 사용자가 로그인을 하기 위해 로그인 모달창을 열었을 때, login의 상태는 true로 ..

2021년 신입 프론트엔드 개발자의 회고

TL;DR 2021년은 내게 있어서 정말 치열한 한 해였다. 새롭게 프로그래밍을 배우게 되었고, 올해 11월 프론트엔드 개발자로 커리어를 시작하게 되었다. 1. 프로그래밍을 배우다. 대학교 4학년 마지막 학기를 보내며 정말 많은 고민을 했다. 어떤 일을 해야 즐겁게 일을 할 수 있을지. 혹은, 내게 맞는 일은 무엇인지 고민했었다. 나는 항상 인턴과 아르바이트를 통한 직접적인 경험을 통해서 질문에 대한 답을 찾아가려고 노력했다. 시민단체, 스타트업에서 인턴을 경험하고, 기자라는 직업에 관심이 생겼을 때는 무작정 이력서를 넣고 면접을 보러 다니며, 금융권에 관심이 생겼을 때는 금융권에서 아르바이트를 하기도 했다. 이러한 경험들이 도움이 된 것 인지 사업기획과 관련된 직무로 20년 11월에 덜컥 취업을 하게 ..

회고 2021.12.31