[객체지향 SOLID 원칙] 리스코프 치환 원칙(LSP)의 이해와 예제
·
개발/개발 공통
이번에는 세 번째 원칙인 리스코프 치환 원칙(LSP)에 대해서 알아보도록 하겠습니다. 리스코프 치환 원칙(LSP)의 이해와 예제 리스코프 치환 원칙이란 자료형 B가 자료형 A의 서브타입라면 필요한 프로그램의 속성(정확성, 수행하는 업무 등)의 변경 없이 자료형 B의 객체를 자료형 A의 객체로 교체(치환)할 수 있어야 한다는 원칙입니다. 2023.01.14 - [개발/개발 공통] - [객체 지향] SOLID 원칙에 대해서 알아보자 [객체 지향] SOLID 원칙에 대해서 알아보자 객체 지향을 공부하면서 SOLID 원칙을 빼놓을 수 없다. SOLID 원칙에 대해서 공부해 본다. SOLID란 로버트 마틴이 2000년대 초반에 명명한 객체지향 프로그래밍 및 설계의 다섯 가지 기본 원칙을 마이 growing-dev..
[객체지향 SOLID 원칙] 개방 폐쇄 원칙(OCP)의 이해와 예제
·
개발/개발 공통
SRP 원칙에 이어서 개방 폐쇄 원칙인 OCP(Open Closed Principle)에 대해서 알아보도록 하겠습니다. 개방 폐쇄 원칙(OCP)의 이해와 예제 개방 폐쇄 원칙이란 소프트웨어 개발 작업에 이용된 많은 모듈 중에 하나에 수정을 가할 때 그 모듈을 이용하는 다른 모듈을 줄줄이 고쳐야 한다면, 이와 같은 프로그램은 수정하기가 어렵습니다. 개방-폐쇄 원칙은 시스템의 구조를 올바르게 재조직(리팩토링)하여 나중에 이와 같은 유형의 변경이 더 이상의 수정을 유발하지 않도록 하는 것입니다. 개방-폐쇄 원칙이 잘 적용되면, 기능을 추가하거나 변경해야 할 때 이미 제대로 동작하고 있던 원래 코드를 변경하지 않아도, 기존의 코드에 새로운 코드를 추가함으로써 기능의 추가나 변경이 가능합니다. 2023.05.26..
[객체지향 SOLID 원칙] 단일 책임 원칙(SRP)의 이해와 예제
·
개발/개발 공통
이전 포스팅에서 SOLID 원칙에 대해서 알아보았습니다. 이번에는 좀 더 구체적으로 하나씩 이해해보려고 합니다. 첫 번째로 단일 책임 원칙에 대해서 예제를 통해 알아보도록 하겠습니다. 2023.01.14 - [개발/개발 공통] - [객체 지향] SOLID 원칙에 대해서 알아보자 [객체 지향] SOLID 원칙에 대해서 알아보자 객체 지향을 공부하면서 SOLID 원칙을 빼놓을 수 없다. SOLID 원칙에 대해서 공부해 본다. SOLID란 로버트 마틴이 2000년대 초반에 명명한 객체지향 프로그래밍 및 설계의 다섯 가지 기본 원칙을 마이 growing-dev101.tistory.com 단일 책임 원칙(SRP)의 이해와 예제 단일 책임 원칙 (SRP) 란 무엇인가 단일 책임 원칙 (Single Responsib..
좋은 코드 개발 문화 (클린 코드, 코드 리뷰, TDD)
·
개발/개발 공통
소프트웨어 개발을 할 때 좋은 개발 문화는 무엇 일지에 대해서 개인적으로 고민해 보았습니다. 좋은 코드 개발 문화 (클린 코드, 코드 리뷰, TDD) 개발하면서 어려운 점 개인적으로 개발하면서 어려운 점을 생각해 보았습니다. 제가 겪었던 안 좋았던 상황들을 조금 정리해 보았습니다. 처음부터 요구사항이나 리소스, 테스트 등 모호한 것이 많다. 그래도 처음에는 나름 고민하여 만든 코드가 동작한다. 개발자 단계에서 하는 테스트가 많지 않고 최종 엔드투엔드 테스트에 의존한다. 특정 모듈, 특정 파트에 업무 로드가 집중된다. 문제가 발생했을 때 디버깅에 오래 걸리고 해결책은 최소 수정사항으로 해결하려고 한다. 수정했을 때 테스트가 잘 없고 테스트해 볼 수 있는 환경 제약이 많다. 결국 사이드 이펙트가 발생하여 다..
[ChatGPT] 챗GPT 가입, 사용법 및 활용 팁 정리
·
개발/개발 공통
요즘 핫한 ChatGPT를 어떻게 가입하고 사용하고 활용하는지 활용 팁까지 정리해 보았다. 챗 GPT 가입, 사용법 및 활용 팁 정리 ChatGPT란 ChatGPT는 openAI라는 곳에서 만든 대화형 인공지능 AI기반 챗봇이다. ChatGPT(생성형 사전 학습 트랜스포머)의 원리는 딥러닝 기술을 사용하여 자연어를 이해하고 주어진 프롬프트나 대화에 대해 사람과 유사한 응답을 생성할 수 있는 언어 모델을 생성하는 것이다. 방대한 양의 텍스트 데이터에 대한 학습을 통해 언어의 기본 패턴과 구조를 학습할 수 있다고 한다. 이러한 학습을 통해 모델은 수신된 입력을 기반으로 가장 가능성이 높은 다음 단어 또는 단어 시퀀스를 예측하여 새로운 텍스트를 생성하는 것이라고 한다. 기존 챗봇들과 다르고 더 좋은 점은 딥러..
[개발 방법] 테스트 주도 개발(Test-Driven Development)에 대해서
·
개발/개발 공통
오늘은 테스트 주도 개발(Test-Driven Development) 줄여서 TDD에 대해서 알아보고 장점과 단점은 무엇인지 공부해 본다. 테스트 주도 개발(Test-Driven Development)에 대해서 테스트 주도 개발 줄여서 TDD는 테스트 위주로 고려해서 개발을 하는 개발 방법론 중에 하나이다. 반복 테스트를 이용한 소프트웨어 방법론으로, 작은 단위의 테스트 케이스를 작성하고 이를 통과하는 코드를 추가하는 단계를 반복하여 구현한다. 기존의 일반적인 방법론과는 다소 다르게 테스트를 매우 중요시한다는 것이 핵심이다. 아래는 켄트 벡의 테스트 주도 개발이라는 책에서 설명하고 있는 내용이다. 테스트 주도 개발의 바이블과도 같은 책이라고 할 수 있다. 테스트 주도 개발은 학계와 업계에서 많은 주목을 ..
[파일 형식] 마크다운(Markdown) 파일에 대해서
·
개발/개발 공통
특정 문법을 사용해서 화면에 표시해 주는 마크업 language 중 하나인 마크다운 언어의 문법을 알아보고 사용해 보도록 한다. 마크다운(Markdown) 파일에 대해서 마크다운(Markdwon)이란 Markdown은 텍스트 기반의 마크업언어로 2004년 존그루버에 의해 만들어졌다. HTML로 변환이 가능하며 간단하게 작성할 수 있다. 특수기호와 문자를 이용해서 간단한 구조의 문법을 정하였으며 직관적이며 웹에서 쉽게 활용할 수 있다. 마크 다운이 대표적으로 많이 사용되는 곳이 GitHub이다. GitHub의 최초 README.md 가 바로 Markdown(. md) 파일이다. 각종 오픈소스 프로젝트에서 많이 활용되고 Wiki 등과 같은 곳에서 사용법과 가이드 문서 등을 자주 활용하게 되면서 널리 사용되고..
[파일 형식] JSON 파일의 형식과 문법에 대해서
·
개발/개발 공통
어디선가 자연스럽게 많이 보았던 JSON 파일에 대해서 알아본다. 실제로 프로그램에서 활용하는 읽어보는 것까지 알아보도록 한다. JSON 파일의 형식과 문법에 대해서 JSON이 뭐지? JavaScript Object Notation (JSON)은 Javascript 객체 문법으로 구조화된 데이터를 표현하기 위한 문자 기반의 표준 포맷이다. 웹 애플리케이션에서 데이터를 전송할 때 일반적으로 사용한다. JSON이 Javascript 객체 문법과 매우 유사하지만 딱히 Javascript가 아니더라도 JSON을 읽고 쓸 수 있는 기능이 다수의 프로그래밍 환경에서 제공된다. 확장자는. json으로 생성한다. VS Code에서 JSON 확장 설치 가장 먼저 json 이라는 VS Code 확장을 설치했다. 제대로 활..
[파일 형식] YAML 파일의 형식과 문법에 대해서
·
개발/개발 공통
프로그래밍을 하다 보면 실제 언어로 구현된 파일뿐만 아니라 어떤 데이터나 환경 설정 등이 필요한 경우들이 있다. 그럴 때 필요한 것이 특정한 파일 형식이다. 내가 정한 문법대로 내 프로그램에서만 사용해도 상관없지만 다른 프로그램들과의 호환성을 위해서는 많이 사용되는 형식을 따르면 훨씬 더 활용도가 높아질 것이다. 대표적인 파일 형식들에 대해서 알아보고 어떻게 사용하는지 알아보도록 하겠다. 첫 번째로 YAML 파일 형식과 문법에 대해서 알아보겠다. YAML이란? yml 이나 yaml과 같은 확장자를 가진 파일이다. 출력 가능한 유니코드 문자 집합(UTF-8, UTF-16 등)을 이용한다. 다른 시스템과 상호작용할 수 있는 데이터를 표현하는 다른 형식인 XML이나 JSON보다는 읽기 쉽게 표현할 수 있다. ..
[도서 리뷰] 임베디드 C를 위한 TDD
·
개발/개발 공통
TDD를 실제로 해보면 매우 유용하고 새로운 느낌을 얻을 수 있다. 하지만 임베디드 C와 같은 특수한 소프트웨어나 펌웨어에서는 적용하기 다소 어렵다. 그래서 이 책은 그런 부분들을 어느 정도 가이드해 준다. http://www.yes24.com/Product/Goods/8117533 임베디드 C를 위한 TDD - YES24 애자일 전문가인 제임스 그레닝은 임베디드 소프트웨어 개발에 테스트 주도 개발을 적용해야 하는 이유와 적용하기 위한 방법을 간결하게 보여준다. TDD를 소개하는 다른 책들과 달리 특별히 펌 www.yes24.com 테스트 주도 개발 왜 TDD가 필요한가? 사람은 실수를 하기 때문이다. 프로그래밍은 매우 복잡한 활동이며 우리가 의도한 대로 계속 잘 동작하도록 지켜줄 자동화된 테스트 케이스..