본문 바로가기

개발17

(mac) VScode - Code Runner 사용해서 .cpp 코드 실행하기 1. Code Runner 익스텐션 설치 2. settings.json 편집 "code-runner.executorMap": { ... "cpp": "cd $dir && clang++ -std=c++17 -O2 -Wno-unused-result $fileName -o a.out && $dira.out" ... } -std=c++17 -O2 -Wno-unused-result -> 프로그래머스 IDE에서 사용하는 컴파일 옵션 3. Code Runner 실행 ctrl + option + n 2023. 3. 16.
Nest.js interface 구현체에 DI 적용하기 Nest.js 에서 interface는 컴파일 환경에서만 존재하고 런타임 환경에서는 사라지기 때문에 interface를 구현한 클래스는 Nest.js의 DI컨테이너가 해당 컨테이너를 찾지 못한다. 해결방법 // test.interface.ts export interface Test { getHello(): string; } // test-impl.service.ts import { Injectable } from '@nestjs/common'; import { Test } from './test.interface'; @Injectable() export class TestImpl implements Test { getHello(): string { return 'Hello World!'; } } // a.. 2023. 3. 13.
HashMap vs ConcurrentHashMap 2023. 3. 5.
좋은 객체 지향 설계의 5가지 원칙(SOLID) SRP: 단일 책임 원칙(Single Responsibility Principle) 한 클래스는 하나의 책임만 가져야 한다. 하나의 책임은 문맥과 상황에 따라 다르며 클 수 있고 작을 수 있다. -> 변경이 있을때 파급 효과가 적으면 단일 책임 원칙을 잘 따른 것 OCP: 개방-폐쇄 원칙 (Open/Closed Principle) 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다. 확장을 하려면 기존 코드를 변경하는 것이 당연한데 이게 뭐지??.. 다형성을 활용해보자. 인터페이스를 구현한 객체를 바꿔서 사용하면 될듯! 하지만 결국 코드의 변경은 불가피하다 -> Dependency Injection으로 해결 LSP: 리스코프 치환 원칙 (Liskov Substitution Principle.. 2023. 3. 5.
좋은 객체 지향 프로그래밍 객체 지향 프로그래밍? 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지 를 주고받고, 데이터를 처리할 수 있다. -> 협력 객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용된다 유연하고 변경이 용이하게 설계 레고 블럭 조립하듯이 키보드 마우스 갈아 끼우듯이 컴퓨터 부품 갈아 끼우듯이 컴포넌트를 쉽고 유연하게 변경하면서 개발할 수 있는 방법 객체 지향 프로그래밍은 다음 한 문장으로 정리 할 수 있다. '객체들의 협력으로 프로그램 작동하며 이때 각 객체들은 유연하고 변경이 용이하게 만들어야 한다' 만약, '운전자' 객체와 .. 2023. 3. 5.