반응형

Study/기타 9

Flutter의 Clean Architecture 클린아키텍처, 각 Layer에 대하여

앞서 배웠던 내용으로 Flutter에 Clean architecture를 적용해 보도록 하자. 드디어 Layer별 어떤 폴더들을 가지게되는지 설명하게 되었다.앞서 설명한 OOP(객체 지향 프로그래밍)과 SOLID원칙을 기초로 하여 구현을 하는 게 목표이다. 하나하나씩 살펴보자.Domain LayerDomain Layer는 애플리케이션의 비즈니스 로직을 담고 있는 계층이다. 이 계층은 프레임워크에 독립적이며, 순수한 Dart 코드로 작성되며, 테스트가 용이하고, 다른 기술 스택으로 교체할 때도 영향을 최소화하도록 한다.EntitiesUse CasesRepositories(Interfaces)Domain Layer에서는 위 3가지 요소들이 포함이 되어있다.하나하나씩 살펴보도록 하자.EntitiesEntiti..

Study/기타 2024.06.20

Clean Architecture 클린아키텍처, 객체지향 디자인 5원칙 SOLID[5부]

이번에는 객체지향 디자인 5원칙에 대해서 알아보도록 하자. 원래 포스팅의 순서는 Folder구조를 잡고, 각 폴더 안에 들어가는 파일 class들의 예시를 보여주려고 했다. 하지만 객체지향 디자인 5원칙을 설명하지 않고는 작성하기가 힘들다 생각이 되어 이것부터 먼저 포스팅을 하도록 하겠다. SOLID란 무엇인가. SOLID는 위의 이미지로 유추할 수 있듯이, 5개의 원칙에서 앞에 한 글자씩 따온 것이다. Robert C Martin(Uncle Bob)이 제시한 객체지향설계에 대한 원칙을 5원칙으로 정리를 한 것이다. Uncle Bob, 익숙한 이름일 것이다. Clean Architecture를 제안한 아키텍처이다. 클린아키텍처는 헥사고날(hexagonal) 아키텍처라고 하기도하고 포트와 어댑터(Port..

Study/기타 2024.03.23

Clean Architecture 클린아키텍처, 객체와객체지향 프로그래밍[4부]

이번에는 객체와 객체지향 프로그래밍에 대해 알아보도록 하자. 원래 포스팅의 순서는 Folder구조를 잡고, 각 폴더안에 들어가는 파일 class들의 예시를 보여주려고 했다. 하지만 객체지향 디자인 5원칙을 설명하지 않고는 작성하기가 힘들고, 객체지향프로그래밍에 대해서 설명이 부족하면 객체지향 디자인 5원칙이 작성하기 힘들다. 우선 객체와 객체지향 프로그래밍에 대해서 알아보도록 하자. 객체, 객체지향 프로그래밍이란 객체(Object)라는 것은 클래스(Class)에서 정의한 것을 토대로 메모리에 할당된 것으로 프로그램에서 사용되는 데이터 또는 식별자에 의해 참조되는 공간을 의미하며, 변수 자료 구조, 함수 또는 메소드가 될 수 있다. 좀더 쉽게 설명을 해보자. 객체지향 프로그레밍에서 객체(Object)는 데..

Study/기타 2024.03.20

Clean Architecture 클린아키텍처, Flutter 폴더구조에 대하여[3부]

이번에는 클린아키텍처를 잡을 때 폴더구조에 대해서 알아보도록 하자. Flutter를 가지고 설명을 해보도록 하겠다. 목차 들어가기에 앞서. Layout First Feature First 1. 들어가기에 앞서. Flutter를 시작하고 여러 토이프로젝트를 하게 되면 느끼는 점이 다들 있겠지만 그중 공통적으로 느끼게 될 것 중 하나가 "굉장히 자유로운 아키텍처 선택" 일 것이다. 하지만 가끔 우리는 자유로운 것은 힘들 때가 많다. 예를 들어 코드컨벤션(Code Convention) 이 등장한 이유도 그중 하나일 것이다. 코드컨벤션이란 내가 작성한 코드를 다른사람들도 쉽게 이해할 수 있게 가독성 있는 코드를 작성하는 법에 대한 규칙이다. 코드컨벤션란 단어는 다소 생소할 수 있지만, 아주 친숙한 것이다. 코드..

Study/기타 2024.02.25

Clean Architecture 클린아키텍처, Domain에 대하여 [2부]

1부에선 Clean Architecture의 창시자, Uncle bob의 블로그를 최대한 번역하여 설명하는 내용으로 포스팅 하였다. 이번 포스팅에서는 Clean Architecture와 DDD 그리고 Domain에 대해서 알아보자. DDD, TDD 그걸 왜 알아야해? 우선 Clean architecture를 보다가 갑자기 DDD와 Domain 알아보자고 해서 놀라신 분들을 위해 먼저 "왜" 알아야하는지 설명부터 하는게 맞을거같아 설명을 해드리겠다. Domain과 DDD이란, Domain : 비즈니스 도메인이라고도 불리며, 소프트웨어가 해결하거나 다루려는 현실 세계의 문제 영역을 나타낸다. 예를들어, 은행 애플리케이션에서 도메인은 고객, 계좌, 거래와 같은 금융 분야의 주제를 포함할 수 있다. DDD(D..

Study/기타 2024.01.09

Clean Architecture 클린아키텍처에 대하여 [1부]

내가 사이드잡을 시작하면서 Flutter의 Clean Architecture를 지키며 코딩을 하기위해 공부를 한 것을 정리해보도록 하겠다. 가급적이면 처음부터 쭉 읽어도 모든 내용들이 이해되도록 작성해보도록 하겠다. 최대한 교차검증으로 오류도 최소화해서 작성해보도록 하겠다. 1. Clean Architecture란 우선 Clean architecture란 무엇일까? Uncle bob, Robert C. Martin이란 사람의 블로그에서 처음 등장한 것으로, 프로젝트 전반에 관련된 구조이다. 우선 그 내용은 아래 링크를 참고하길 바란다. (주의 : MVVM, MVC같은 것들은 프로젝트 전반이 아니라 UI와 비즈니스로직에 관련된 내용이다.) http://blog.cleancoder.com/uncle-bob/..

Study/기타 2024.01.08

3. REST API에 대한 이해

오늘은 REST API에 대해서 알아보도록 하자. REST API이란 https://restfulapi.net/ What is REST REST is an acronym for REpresentational State Transfer. It is an architectural style for hypermedia systems and was first presented by Roy Fielding. restfulapi.net 'Roy Fielding'이라는 분이 2000년에 처음으로 발표한 것으로, REpresentational State Transfer의 줄임말이다. A Web API(or Web Service) conforming to the REST architectural style is a RE..

Study/기타 2022.02.20

2. Reactive Programming

오늘은 Reactive Programming에 대해서 알아보도록 하자. Reactive Programming이란 Reactive programming is programming with asynchronous data streams. 비동기 데이터스트림을 이용한 프로그래밍하는 것을 말한다. 비동기란 동시에 진행되지 않는 것을 뜻하고, 데이터 스트림이란 데이터의 양이 한정되어 있지 않고 지속적으로 생성되고 시간에 따라 값이 변하는 데이터의 흐름이라는 뜻이다.(비동기에 더 자세한 내용은 앞전 포스팅을 참고하기 바란다. https://pcseob.tistory.com/35) 그러면 Reactive Manifesto(선언문)은 어떤 내용 일까? https://www.reactivemanifesto.org/ Th..

Study/기타 2022.01.18

1. Asynchronous 비동기

이번에 포스팅할 주제는 비동기에 대해서 포스팅해보도록 하겠다. 반응형 프로그래밍을 설명하기 위해서는 비동기에 대한 내용은 필수적이고, 내 블로그에 곳곳에 보면 비동기에 관련된 글이 있지만, 프로그래밍을 위한 글이라 자세하게 작성하지 않아서 이번에 제대로 작성하도록 하겠다. Asynchronous 비동기 비동기란 비동기와 스레드 1. Asynchronous 비동기 Asynchronous 비동기의 사전적 의미는, "not occurring at the same time", 동시에 발생하지 않는 이라는 뜻이다. 일반적으로 우리가 프로그래밍을 한다면, 순차적(Synchronous)으로 진행이 된다. print(1) print(2) print(3) print(4) 예를 들어 위와 같은 코드가 있다고 하자. 실행을..

Study/기타 2021.11.25
반응형