본문 바로가기
반응형

까망 동네77

[디자인패턴] 싱글턴 패턴 싱글턴(Singleton) 패턴이란? • 단, 하나의 객체를 만들어서 사용 (단일 객체) → 한번 생성되고 프로그램 종료될 때까지 메모리에 상주 • 디자인 패턴(Design Pattern)에서 "생성 패턴"에 해당 • 다른 곳에서도 해당 인스턴스로 접근해서 사용 DB Connection Pool / Thread Pool / Logging과 같이 하나의 인스턴스로 여러 객체를 관리하는 형태에서 활용 💻 디자인 패턴(Design Pattern)이란? 👨‍💻 디자인 패턴(Design Pattern)이란? • SW 개발 방법 중에서도 구조적인 문제 해결에 목적을 둔다. • 알고리즘과 같이 특정 문제를 해결하는 Logic 형태보다는 특정 상황에 적용할 수 있는 방 zoosso.tistory.com 객체 생성은 n.. 2023. 10. 14.
[프로그래밍] 디자인 패턴 필요성 간단한 예제로 디자인 패턴 필요성을 알아보고자 한다. 📌 디자인 패턴(Design Pattern)이란? 💻 디자인 패턴(Design Pattern)이란? 👨‍💻 디자인 패턴(Design Pattern)이란? • SW 개발 방법 중에서도 구조적인 문제 해결에 목적을 둔다. • 알고리즘과 같이 특정 문제를 해결하는 Logic 형태보다는 특정 상황에 적용할 수 있 zoosso.tistory.com 예제 코드 배열[]에서 find()로 특정 원소를 찾을 수 있다. #include #include using namespace std; int* find(int* first, int* last, int v) { while (first != last && *first != v) { ++first; } return fi.. 2022. 8. 29.
MVC 패턴이란? MVC 패턴이란? • Model - View - Controller 구조를 말한다. • Model: 데이터나 Business Logic 내포 (= 데이터 제어) • View: 사용자에게 보여지는 인터페이스 • Controller: View ↔ Model 사이 요청/응답 관리 • 하나의 Model로 여러 형태 View를 보여줄 수 있다. → 1:多 구조로 Model을 재활용 (실서비스는 View 변화가 많은 편) ex) 하나의 raw 데이터로 표, 원형 차트, 막대 그래프 등을 표현 • 이전에는 View가 Model을 의존해야 했지만 Controller로 View-Model 의존성을 낮추는 구조이다. = 각 View 요청은 Controller 동작에 영향을 주어서 안된다. • Controller 역할? →.. 2022. 8. 28.
💻 회의록 작성 Tip 회의록 작성 Tips 회사에서 업무하다보면 회의 간사 역할 등 회의록을 작성해야 하는 경우가 있다. 좋은 회의록은 그 자리에 없었던 사람도 어떻게 진행 되었는지 유추할 수 있다. 회의 주제에 따라 회의록 작성방식이 다양한다. 예를 들어 Raw Data 그대로 작성해서 작성자 생각을 아에 배제할 수도 있다. 일반적으로는 핵심 / 요약하는 경우가 많긴하다. 회의 진행 전 육하원칙에 맞게 템플릿을 만들어두면 편하다. • why (배경, 목적, 활용 계획) • who (참석자 및 주관자) • when (시작 일시, 소요시간) • where (회의 장소 및 진행 방식) • what (논의 주제, Agenda, 요청사항, 근거) • how (다음 계획, Action Plan) 예시 • 가독성을 위해 기호와 표 활용.. 2022. 8. 8.
👨‍💻 Shmoo Plot 이란? Shmoo Plot은 여러 조건(특성)에서 반도체 칩이 정상 동작 여부를 확인할 수 있는 그래프이다. X축(속도) / Y축(전압)이라고 가정한다면 특정 수치 결과를 PASS(녹색) / FAIL(붉은색)로 표시한다. 이외에도 반도체 소자 따라 여러가지 특성들이 있다. 결과 커브 곡선이 캐릭터 배 모양과 유사하여 "Shmoo"로 명명되었다. shmoo plot 에서 100칸이 존재한다면 X, Y 값 설정에 따라 총 100번 측정된 것이다. 수율 관리 차원에서 Chip 동작에서 영향을 주는 값을 평가할 때 사용된다. ex) Chip 설계의 마진이 충분한지 혹은 불량품 검출 조건 찾기 Shmoo Plot 형태를 만들기 위해 2차 함수를 이용하였다. #include #include #include using na.. 2022. 7. 30.
[클린코드] 객체와 자료구조 자료 구조 자료를 그대로 공개하며 별다른 함수 제공 X class Point { public: double x; double y; }; 내부 구조가 노출되어, 직접적으로 좌표값을 읽고 설정할 수 있다. 직접적인 접근을 제한하기 위해 비공개 private로 선언하고 getter와 setter 함수를 제공한다 class Point { private: double x, y; public: double getX() {return x;} double getY() {return y;} } 함수라는 계층을 넣었다고 완전히 감춰지지 않는다. 내부 구조를 노출하는 구조에 해당된다. 객체 추상화 뒤로 자료를 숨긴 채 자료를 다루는 함수만 공개 class Point { public: virtual double getX() .. 2022. 7. 19.
팩토리 메서드 패턴 (Factory Method) 🎈 팩토리 메서드 패턴(Factory Method Pattern) • 객체 생성 시 확장을 쉽게 하기 위한 설계 방법 강력한 결합 관계는 코드의 수정•변경을 어렵게 한다. • 객체 생성 동작을 별도 클래스로 분리하여 처리 또는 별도의 메서드를 호출하여 객체 생성 동작을 처리 • 객체 생성 처리를 하위(Sub) 클래스로 분리하여 캡슐화하는 패턴 • 새로운 객체를 추가할 때 기존 일반 함수 코드 분석 없이 (새로운 하위 클래스 정의) + (Factory 클래스 멤버 함수 추가) 하여 확장 가능 • 일반 클래스가 생성자 호출로 직접 객체 생성하지 않고 Factory(공장)에 위임하는 방식 • 조건에 따라 객체를 다르게 생성하고자 할 때 유용 • 생성 패턴에 해당된다. 💻 디자인 패턴(Design Pattern.. 2022. 7. 19.
[클린코드] 형식 (Format) ✔️ 개념은 빈 행으로 분리 글에 문단이 있듯이 코드에도 빈 행으로 구분해주면 좋다. public List getFlaggedCells() { List flaggedCells = new ArrayList(); for (Cell cell : gameBoard) if (cell.isFlagged()) flaggedCells.add(cell); return flaggedCells; } 변수는 변수끼리, 로직은 로직끼리 적절한 행 구분은 가독성을 높여준다. public List getFlaggedCells() { List flaggedCells = new ArrayList(); for (Cell cell : gameBoard) { if (cell.isFlagged()) { flaggedCells.add(cell.. 2022. 7. 18.
[클린코드] 함수 Function 클린 코드(Clean Code) 클린 코드(Clean Code)란? 💻 클린 코드 (Clean Code)? • 프로그래밍을 모르는 사람도 한눈에 읽히는 코드 (가독성) • 다른 사람이 수정하기 쉬운 코드 • 한 가지 일에 집중하는 코드 • 중복이 적은 코드 • 테스트가 zoosso.tistory.com ✔️ 작게 만들어라 ✔️ 한가지만 해라 → 내부에 다른 함수로 추출할 수 있는 section이 더 있는가? ✔️ 서술적인 이름 사용 (동사구 활용) ex) isOrderable(), hasAvailableProduct 예제 코드 static string renderPageWithSetupsAndTeardowns(PageData pageData, bool isSuite) { bool isTestPage = .. 2022. 7. 18.
[클린코드] 주석 Comment Q) 주석은 많이 있을수록 좋은가? A) 아니오! 주석은 오래될수록 코드에서 멀어진다. 코드(Code)는 유지보수를 해도, 주석(Comment)도 함께 유지보수되기 어렵다. 주석 없이 코드만으로도 충분히 의미를 전달할 수 있다. // 직원에게 복지 혜택을 받을 자격이 있는지 검사한다. if ((emplotee.flags & HOURLY_FLAG) && (employee.age > 65) if 조건이 길고 어렵기 때문에 주석을 달아놓은 것이지만 사실 의미 있는 이름만으로도 충분하다. if (employee.isEligibleForFullBenefits()) 📌 [클린코드] 의미 있는 이름 2500; i++) { threadList.push_back(thread(WidgetBuilderThread, widg.. 2022. 7. 18.
반응형