분류 전체보기 (319) 썸네일형 리스트형 객체지향의 사실과 오해 - 2 객체는 혼자 일하지 않는다 - 협력 중심의 사고객체지향은 "책임을 가진 객체가 요청을 받고, 그에 적절한 응답을 하는 것"이라고 이해합니다.요청과 응답은 곧 전달이며, 메시지를 주고받는 것은 곧 협력의 형태가 됩니다. 즉 중요한 것은 하나하나의 내부 구현이 아닌,이 객체가 어떤 역할을 맡고 있는가?책임을 제대로 수행하고 있는가?다른 객체와 협력을 잘하고 있는가?라는 점입니다.역할 - 책임 - 협력주문(Order)라는 하나의 문제를 객체지향적으로 풀어보자면, 하나의 객체가 모든 걸 다 처리해서는 안됩니다.각 객체는 자신의 역할만 수행하고, 나머지는 다른 객체에 메시지를 보내 협력해야 합니다.// 주문을 생성하는 역할@Injectable()export class OrderService { construct.. 객체지향의 사실과 오해 - 1 역할, 책임, 그리고 자율성 – 객체지향을 말하다.프로그래밍을 처음 배울 때는 어떻게 구현할까에 초점을 두고 코드를 구현했습니다. 예를 들어서 알고리즘 테스트 문제를 풀 때는 이것에만 집중했고, 실무에서도 어떻게 구현할까에 초점을 많이 맞췄습니다.이전 글에 팀을 리드하면서 코드의 유지보수를 높이기 위해서 점점 더 어떻게 협력할까, 어떻게 분리할까, 무엇이 역할이고, 무엇이 책임인가라는 질문을 던지게 되었고, 프로젝트를 진행하면서 책을 한권 읽게 되었습니다. 객체지향의 사실입니다. 최근 다시 책을 읽어보면서 와 닿는 내용들을 작성해보려고 합니다."여러 사람이 동일한 역할을 수행할 수 있다." 에 관한 내용입니다. 커피는 누가 만들어도 커피이다?카페에가서 "김 바리스타가 직접 만든 커피 주세요."라는 말.. 회사 코드 문화를 바꾸었다 - 완 기술 스택 개편 코드 문화 변화 그리고 팀과 함께한 변화팀에서 진행한 프로젝트의 기술 스택을 개선하면서 겪은 고민과 변화의 기록입니다. 단순한 마이그레이션이 아니라, 기술을 선택하는 기준, 팀원 설득 과정, 리팩토링 단계별 전략까지 모두 포함된 여정입니다. (결과적으로 왼쪽 견갑골의 담과 왼쪽 검지의 저림을 얻었다.)왜 Typescript였는가?Inversify는 JavaScript로도 사용할 수 있지만, 메타데이터를 다루는 과정이 지나치게 복잡해진다. 원래도 Typescript를 도입할 생각이 있었고, 더 이상 미룰 이유도 없었다. 그리고 어느 누가 javascript로 Inversify를 쓸 수 있을까?그리고, Typescript는 단순히 언어 차원이 아닌 "안정성"에 투자하는 결정이었다. 런타임 오.. 회사 코드를 바꿔보자 - 3 의존성 역전이 필요했던 이유와 Inversify 도입기코드 구조를 명확히 분리하는 일은 더 이상 선택이 아닌 필수가 되었습니다. 필수가 된 이유는 이전 프로젝트부터 시작된 얽히고 섥힌 코드들 때문이었습니다. 팀은 Express 기반의 자유로운 개발 환경에서 출발했지만 물론 너무 자유로웠고 그로 인해 발생한 구조적 문제들을 해결하기 위해 점진적으로 구조 개선을 해나갈 수 있었습니다. 다를 수 있지만 저에겐 아주 중요한 경험이었습니다.Controller - Service - Repository 구조로 설계를 개선한 이후, 의존성 관리를 효율화하고 테스트 가능한 구조를 만들기 위해 Inversify 기반의 DI(Dependency Injection)를 도입하게 되었습니다. 이 과정을 통해 결과적으로 DIP(D.. 회사 코드를 바꿔보자 - 2 까다로운 개발자들을 설득해보자3 Layered Architecture 도입과 팀원 설득 과정문제(https://jaemoon.tistory.com/316)를 해결하기 위해 구조적인 접근이 필요하다고 판단했다. 그래서 선택한 것이 '무늬만 3 Layered Architecture'로 되어 있는 현재 코드를 실제로 Controller – Service – Repository 구조로 명확히 분리하는 일이었습니다.현 회사에서 Express 프레임워크를 사용하고 있습니다. Express의 장점과 단점은 단 하나로 귀결됩니다.장점은 자유도가 높습니다.단점도 자유도가 높습니다.개발자 각자의 스타일에 따라 자유롭게 코드를 작성할 수 있었습니다. 그렇기 때문에 회사 내에서는 일관된 규칙 없이 다양한 책임과 역할이 있는 .. 회사 코드를 바꿔보자 - 1 전체 글의 요약 내용입니다. 복잡한 코드 베이스와 구조 문제 함수 역할 불명확모든 라우터가 한 파일에 몰려 유지보수에 어려움이 존재중복 코드 악순환 발생기존 함수 파악이 불가능해, 비슷한 함수 반복 생성되는 문제코드 중복 지속적으로 발생디버깅과 수정의 어려움호출 위치 추적이 어렵고, 수정시 사이드 이팩트 위험 발생"절대 건드리지 마" 문화 확산개선 의지와 성장개인 프로젝트로 아키텍처 실험 및 유비소수성 개선 경험을 쌓음팀장 역할과 문제 해결 기회를 획득신규 프로젝트를 리딩하며 기존 문제 해결을 주도할 수 있게 되었음기존 시스템 구조의 문제와 개선 필요성회사는 기존에 사용하던 개발 방식을 전면적으로 개선하기로 결정했습니다. 특히 코드 아키텍처에서 여러 심각한 문제를 발견했고, 이를 해결하기 위해 구조 개편.. DDD를 적용할 건데, 잘 이해해보자 DDD에 관한 내용을 작성할 예정. Register 레지스터란? 레지스터는 CPU 내부에 위치한 고속 기억 장치인데요. 이들은 데이터를 일시적으로 저장할 수 있습니다. 그리고 CPU가 연산을 수행하는 데 필요한 정보를 제공하는 역할을 하고 있습니다. 레지스터는 CPU가 매우 빠른 속도로 접근할 수 있기 때문에 CPU가 작업을 수행할 때 가장 먼저 사용하는 메모리 공간입니다. 그렇다면? 레지스터의 주요 역할은 무엇일까?레지스터는 데이터 저장 및 빠른 접근이 가능하는 것입니다. 레지스터는 CPU 내부에 있기 때문에 다른 주기억 장치인 RAM보다 훨씬 빠르게 접근할 수 있습니다. 그리고 이는 연산 속도를 향상하고 프로그램 실행을 더 효율적으로 할 수 있게 만들어 줍니다. CPU에서 수행되는 연산은 주로 레지스터에서 이루어지게 됩니다. 그리고 프로그램의 흐름을 제어하기도 하.. 이전 1 ··· 3 4 5 6 7 8 9 ··· 40 다음