iOS앱 개발🍎: 소프트웨어 설계 원칙

IOS 프로그래밍을 하다 보면 코드를 작성하는 것만으로 충분하지 않다는 것을 자주 느낍니다. 엔지니어는 코드 작성 전반에 걸쳐 올바른 소프트웨어 원칙을 기억하며 개발하고 싶기 때문입니다. 객체 지향 프로그래밍을 배우며 클래스와 상속이 어떻게 작동하는지 배웠습니다. 하지만 객체의 상태(변수)와 동작(함수)을 실제로 어떻게 작성하고 사용하는지가 더 중요합니다. 엔지니어의 목표는 앱을 작동시키는 것뿐만 아니라 잘 구조화되고 격리된 코드를 작성하는 것입니다. 이런 코드를 작성하기 위한 소프트웨어 개발의 세 가지 기본 원칙을 소개합니다. 1️⃣ 관심사 분리 원칙(Separation of Concerns) 첫 번째 원칙은 ‘관심사 분리 원칙’으로 하나의 모듈은 하나의 책임에 관해서만 관심을 가져야 합니다. 모듈은 협력하는 객체들로 구성되고, 객체는 적절한 책임들로 구성되고, 책임은 하나의 동작입니다. 모듈, 객체, 책임의 관심사가 다른 모듈, 객체, 책임에 있지 않을 때 종속성이 줄어들고 코드를 더 쉽게 이해하고 변경할 수 있습니다. 💡객체를 만들 때 역할과 책임이 중요하다는 것은 알지만 핵심은 객체에 어떤 상태(변수)와 동작(함수)과 속하는지 결정하는 것입니다. 이때 ‘관심사 분리 원칙’을 토대로 코드를 작성해야 합니다. 너무 어렵게 접근하기보다는 이 객체가 가져야 할 책임이 맞는지를 고민해보고 헷갈린다면 주변에 물어보는 것도 좋은 방법입니다. 일단 작성하고 넘어가도 좋습니다. 시간이 흘러서 책임의 주체를 변경하여 더 많은 역할이 햡력하는 그림이 그려지는 것도 좋은 접근이라고 생각합니다. 2️⃣ 최소 지식 원칙(Principle of least knowledge) 두 번째 원칙은 ‘데메테르의 법칙’이라고도 알려진 ‘최소 지식 원칙’입니다. 한 객체가 다른 객체 내부 구현에 대해 너무 많이 알고 있으면 객체의 동작이 변경될 때 다른 객체의 수정이 필요하고 눈덩이가 굴러 걷잡을 수 없을 만큼 변경 비용이 많이 발생합니다. 💡객체의 내부 구현을 숨기는 정보 은닉과 캡슐화를 지키며 객체 간 명확한 경계를 바탕으로 협력하는 것이 가장 중요하지만, 코드를 작성할 때는 함수 매개변수와 반환 데이터, 호출 시퀀스를 중요하게 생각해야 합니다. 객체 내부 구현을 숨겼는데 메서드 시그니처를 보고 객체가 어떤 상태를 가졌는지 유추할 수 있습니다. 내구 구현을 숨겼는데도 최소 지식 원칙을 지키지 못한 상황입니다. 매개변수와 반환 데이터 역시도 최소 지식 원칙에 맞게 작성하는 연습을 합시다! 3️⃣ 반복하지 않기 마지막 원칙은 "반복하지 않기"입니다. 간단히 말해, 프로젝트의 다른 부분에서 비슷하게 보이는 코드가 있어서는 안 된다는 뜻입니다. 실제로는 이미 작성한 코드를 복사하여 붙여넣지 말아야 한다는 뜻입니다. 다른 곳에서 이미 작성한 기능이 필요한 경우, 대신 코드를 한곳에 보관하여 재사용할 수 있도록 만들어야 합니다. 프로젝트에서 코드를 복제하면 동작을 변경할 때마다 모든 복사본을 찾아 수정해야 합니다. 또한 일부 코드에 버그가 있는 경우 이를 복사하면 앱의 다른 부분으로 버그가 확산하고 한 곳에서 수정하면 다른 모든 부분에도 버그가 남게 됩니다. 💡같은 일을 반복하지 않으려면 함수, 매개변수, 반환 데이터를 구조화하는 방법을 이해하는 것이 필수입니다. 완전히 똑같은 코드는 쉽게 재사용할 수 있는 코드로 만듭니다. 하지만 약간만 비슷한 코드는 쉽게 재사용할 수 있는 코드로 만들기가 쉽지 않습니다. 그렇기에 구조화를 연습해야 합니다. 프로토콜과 제네릭을 이해하면 유사한 코드를 일반화할 때 유용합니다. 중요한 많은 원칙과 패턴을 지키며 개발하는 것이 아렵다면 이 세 가지 원칙을 바탕으로 개발하는 것이 좋은 연습 방법이라고 생각합니다☺️☺️

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2023년 3월 30일 오전 7:59

 • 

저장 19조회 2,338

댓글 0

    함께 읽은 게시물


    안정적인 기업 재미없어요! I 위기를 기회로 바꾸는 사람들

    ... 더 보기

    생각해볼 부분이 많은 chart

    우리는 이런 세상에 살고 있고, 이중 몇몇은 더 잘될것이고, 몇몇은 말이되는 multiple로 내려올것.


    < 좋은 관계를 위한 최소한의 예의, ‘거리 두기’ >

    1. 살다보면 나를 끔찍이 싫어하는 사람이 한둘은 나오게 마련이다.

    ... 더 보기

    가끔 미국이나 홍콩 등에서 온 해외 투자자들을 만날 때가 있다. 이미 상장된 전 세계 대기업에 투자하는 큰 펀드를 운용하는 회사에 다니는 분들이다. 그들과 이야기하다가 한국의 경영자들은 그들을 잘 만나주지도 않고, 회사의 방향성에 대한 커뮤니케이션도 잘 못한다는 얘기를 들었다.

    ... 더 보기

    글로벌 매체에서 인정받는 한국 경영자가 없는 이유

    ㅍㅍㅅㅅ

    글로벌 매체에서 인정받는 한국 경영자가 없는 이유

    조회 149


    업계는 오픈AI와 퍼플렉시티의 웹브라우저가 크롬의 아성을 무너뜨릴 수 있을지 주목한다. 시장조사업체 스탯카운터에 따르면 전 세계 웹브라우저 시장 점유율은 크롬이 68%로 압도적 1위다. 애플 사파리가 16%로 뒤를 이었고, 마이크로소프트 엣지 5%, 파이어폭스와 삼성인터넷은 2% 수준에 그쳤다. 크롬의 높은 검색 점유율은 구글의 광고 매출로 이어진다. 크롬은 사용자의 검색 기록을 바탕으로 광고를 타겟팅하고, 이를 통해 높은 수익을 올리고 있다.

    ... 더 보기

    ‘크롬 천하’ 웹브라우저 시장 도전하는 AI기업들

    국민일보

    ‘크롬 천하’ 웹브라우저 시장 도전하는 AI기업들

    조회 283