Architecture

    Clean Architecture, for sustainable software development

    이번 시간에 다룰 주제는 클린아키텍처입니다. 최근에 JPA + Clean Architecture에 대한 예제를 작성한 바 있는데요, 그 예제의 README 만으로는 설명이 되지않을 것 같은 부분들이 많아 글을 쓰게 되었습니다. 0. 소프트웨어 아키텍처의 목표 마틴 파울러의 영상, 혹은 글을 보는 사람들이라면 분명히 아래의 문구를 한번쯤은 봤을겁니다. 소프트웨어 아키텍처의 목표란, 구조를 좋게 만들어서 수정하기 쉽게 만듦으로써, 수정하는데 비용을 적게 만드는 것에 목표를 두어야한다라고 생각한다. - 엉클 밥 (마틴 파울러) 소프트웨어의 유지보수란, 간단히 말해서 컴퓨터에게 더 많은 일, 그리고 더 정확하고 더 빠르게 만들기 위해서 코드를 읽고 수정하고 추가하는 행위로 정의됩니다. 그리고 코드를 읽는 행위는..

    객체지향에서의 추상화

    이번 글에서는 객체지향을 지향하는 개발자라면 한번쯤은 들어봤을 단어인 추상화에 대해서 다뤄보고자합니다. 오늘 오전에 팀 단위 스크럼을 진행하며 이러한 대화가 오고갔습니다. A: MVP 아키텍처를 구성하면서 View에서 Presenter로 데이터를 넘기면서 abstract class가 아니라 interface를 쓰던데 혹시 왜 그런거야? 뭔 특별한 이유라도 있어? Android 공식문서에서는 abstract class로 구현하라고 권장하던데... B: 그냥요. 저렇게 해도 되던데요? 그리고 저렇게 해도 상관없을 것 같다고 생각했어요 저는 저런 대화 중간에 끼어들어 아래와 같은 답을 해주었는데, 제가 해당 대화에 내놓았던 답은 아래와 같았습니다. Me: 어차피 abstract class나 interface는..

    계층화의 필요성

    티스토리로 마이그레이션 후 첫번째로 다룰 내용은, 코드 작성에 있어 계층화는 왜 필요한 것일까? 에 대해서 다뤄보고자합니다. 우선 제가 학교를 다니면서 만들어보았던 한 프로젝트를 소개해드리겠습니다. github: Fantasia GitHub - BrianDYKim/Fantasia: 스프링을 배우기 전에 자바 배운 것들을 정리하는 김에 자바만을 이용해 스프링을 배우기 전에 자바 배운 것들을 정리하는 김에 자바만을 이용해서 텍스트게임을 만들어보았습니다. 디자인 패턴이나 설계를 고려하지 않았기 때문에 다소 프로젝트가 스파게티입니다. github.com 대충 마을의 용사가 마을에 등장한 몬스터를 잡으며, NPC에게 퀘스트를 받으며 성장하면서 레벨 30이 되면 마왕을 때려잡아 마을을 구원하는 내용의 게임을 2주에..