1. 객체 지향 프로그래밍(OOP) 주어진 문제영역을 실세계 안에 존재하는 객체의 집합으로 보고, 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체로 만들어 객체들간의 상호작용을 통해 로직을 구성하는 프로그래밍 2. 객체 지향 설계 객체와 클래스 : 객체는 독립적으로 존재하는 실세계의 사물, 클래스는 유사한 객체들의 모임으로 각 객체는 특정 속성의 모임에 의해 기술됨. 객체를 묶는 작업을 분류화라고 함 캡슐화 : 정보 은닉을 통한 추상화, 독립성 향상을 얻을 수 있는 방법, 속성과 오퍼레이션을 함께 묶어 보호함. 모듈의 기능적 독립성은 단위 모듈의 처리 완전성을 높이고 타 모듈과의 처리 종속성을 최소화할 때 극대화됨 상속 : 클래스의 정의를 단순화, 기존에 정의되어 있는 클래스를 이용하여..
SW

1. 애자일 방법론 소프트웨어 개발 및 프로젝트 관리에서 사용되는 접근 방식 중 하나로, 반복적이고 협업 중심의 개발 방법론. 작업 계획을 짧은 단위로 세우고 시제품을 만들어 나가는 사이클을 반복함으로써 고객의 요구 변화에 유연하고도 신속하게 대응하는 방법론이다. 계획 및 분석 : 고객과 사용자가 원하는 바를 파악하여 타당성을 조사하고 SW 기능과 제약조건을 정의하는 명세서 작성, 대상이 되는 문제 영역과 사용자가 원하는 task를 이해하는 단계 설계(디자인) : 기획의도에 맞는 설계 및 디자인 추가 및 수정하는 단계 개발(발전) : 설계단계에서 만들어진 설계서를 바탕으로 프로그램을 작성, 코딩, 디버깅, 단위/통합 테스트 수행 테스트 : 발생 가능한 실행 프로그램 오류를 발견, 수정하는 단계 검토(피드..

1. TDD란(Test Driven Development) 테스트 주도 개발. 반복 테스트를 이용한 방법론으로, 작은 단위의 테스트 케이스를 작성하고 이를 통과하는 코드를 추가하는 단계를 반복하여 구현 2. TDD 개발 주기 Write Failing Test : 실패하는 테스트 코드 먼저 작성 Make Test Pass : 테스트 코드를 성공하기 위한 실제 코드 작성 Refactor : 중복 코드 제거, 일반화 등의 리팩토링 수행 💡 실패하는 테스트 코드를 작성할 때 까지 실제 코드를 작성하지 않고, 실패하는 테스트를 통과할 정도의 최소 실제 코드를 작성함으로써 실제 코드에 대해 기대되는 바를 보다 명확하게 정의하여 불필요한 설계를 피할 수 있고 정확한 요구 사항에 집중 가능 3. TDD의 장점 보다 튼..
1. 클린코딩 💡 코드를 작성하는 의도와 목적이 명확하며 가독성이 높은 코드 특징 명확한 네이밍 오류, 중복 없음 의존성 최대한 감소 클래스 혹은 메소드가 한 가지 일만 처리해아함 규칙 Naming : 변수, 클래스, 메소드에 의도가 분명한 이름 사용 Comment : 주석은 반드시 달 이유가 있는 경우에만 작성 Aesthetics (꾸미기): 규칙적인 들여쓰기와 줄바꿈, 불규칙한 중복 코드 제거 Making Control flow easy to read (흐름제거 만들기) 비교 시 왼쪽에 변수, 오른쪽에 상수 조건문 내에는 긍정문 if/else 를 사용하며, 삼항 연산자는 매우 간단한 경우만 do/while 루프의 사용은 가급적 삼가 Function : 함수는 가급적 작게, 한번에 하나의 작업만 수행할..