CS 18

Array vs Linked List

Array - 메모리 위치가 연속적이다 - 위치 계산이 쉽고 인덱스값으로 쉽게 요소에 접근 가능하다. 장점 - 같은 이름으로 비슷한 타입의 데이터를 여러개 저장할 수 있다. - 요소에 랜덤하게 엑세스 가능하다. = 원소의 인덱스 값을 알고 있으면 바로 접근 가능 => O(1) - 사이즈가 고정되어있고 메모리에 연속적으로 저장되기 때문에 메모리 오버플로우가 발생하지 않는다. - 어떤 데이터든 고정된 사이즈로 저장하기 좋다 - 연속된 메모리 위치에 저장되기 때문에 반복적인 작업을 하기 쉽고 인덱스를 알고 있다면 접근하는데 유닛 타임만 필요하다(연속적으로 접근할 필요가 없다는 의미) 단점 - static하기 때문에 한번 사이즈가 정해지면 고칠 수 없다. - 연속적인 메모리 위치에 저장되기 때문에 삽입/삭제가 ..

CS 2022.09.23

Stack vs Queue

Stack- LIFO 방식(Last-In, First-Out)- 후입선출방식- 나중에 들어온 것이 먼저 나오게 된다. Stack ADT void Init(Stack * stack);- 스택의 초기화- 스택 생성 후 제일 먼저 호출되어야 하는 함수 void IsEmpty(Stack * stack);- 스택이 빈 경우 True(1), 그렇지 않은 경우 False(0)을 반환 void Push(Stack * stack, Data data);- 스택에 데이터를 저장- 매개변수 data로 전달된 값 저장 Data Pop(Stack * stack)- 마지막에 지정된 요소를 삭제- 삭제된 데이터는 반환됨- 본 함수의 호출을 위해서는 데이터가 하나 이상이 존재함을 보장해야 함 Data Top(Stack * stack)..

MVC 패턴

MVC(모델-뷰-컨트롤러) 디자인 패턴사용자 인터페이스, 데이터 및 논리 제어를 구현하는데 널리 사용되는 소프트웨어 디자인 패턴애플리케이션을 세가지의 역할로 구분한 개발 방법론이외에는 MVVM (모델-뷰-뷰모델), MVP (모델-뷰-프리젠터), MVW (모델-뷰-왓에버)가 있다.소프트웨어의 비즈니스 로직과 화면을 구분하는데 중점을 두고 있다.모델데이터와 비즈니스 로직을 관리상태에 변화가 있을 때 컨트롤러와 뷰에 이를 통보한다. 이와 같은 통보를 통해서 뷰는 최신의 결과를 보여줄 수 있고, 컨트롤러는 모델의 변화에 따른 적용 가능한 명령을 추가·제거·수정할 수 있다. 뷰레이아웃과 화면을 처리사용자가 볼 결과물을 생성하기 위해 모델로부터 정보를 얻어 온다.컨트롤러명령을 모델과 뷰 부분으로 라우팅합니다.모델에..

함수형 프로그래밍

함수 프로그래밍 수학 함수와 같은 원리의 함수들로 프로그램을 구성하는 기법 코드를 간결하게 작성할 수 있어 개발 시간이 단축된다. 함수는 부작용(Side Effects)을 발생시키지 않고 단지 입력을 받아들여 출력을 구한다. 함수형 프로그래밍 언어의 특징 불변성(Immutability) 변경 가능한 상태를 최대한 제거하려고 한다. 순수 함수를 지향하는 프로그래밍 언어이다. 즉, 부작용이 없는 함수이다. * 순수 함수 : 내부 상태를 갖지 않아, 같은 입력에 대해 항상 같은 출력이 보장되는 함수이다. - 프로그램의 검증이 쉽다 오직 입력 값의 영향만 받기 때문에 테스트 코드를 작성하기 쉽고, 개발자가 예측하지 못하는 시점에 변경될 수 있는 내부 상태가 없기 때문에 프로그램이 예측 가능해진다. - 최적화가 ..

CS 2022.09.16

TDD

TDD ; Test-Driven Development = 테스트 먼저 짠다 매우 짧은 개발 사이클을 반복하는 것에 기반한 소프트웨어 개발 프로세스 - 요구사항(Requirements)이 매우 구체적인 테스트 케이스가 된다. - 그래서 코드가 개선되면 테스트를 pass하게 된다. TDD 사이클 1. 테스트를 추가한다. 2. 모든 테스트를 Run하고 새 test가 fail하는지 본다. 3. 코드를 작성한다. 4. 모든 테스트를 Run한다. 5. 코드를 Refactoring 한다. - 함수마다 테스트코드를 작성하게 된다. - 테스트가 하나 추가될 때마다 전체 코드를 한번 더 테스트해야 한다. * Test Coverage : 내 코드에 테스트를 Run했을 때 성공한 퍼센트(%) * Test Lag : 테스트 코..

CS 2022.09.16

RESTFul API

RESTful API란?두 컴퓨터 시스템이 인터넷을 통해 정보를 안전하게 교환하기 위해 사용하는 인터페이스안전하고 신뢰할 수 있으며 효율적인 소프트웨어 통신 표준을 따른다. API(Application Programming Interface)란?다른 소프트웨어 시스템과 통신하기 위해 따라야 하는 규칙다른 애플리케이션이 프로그래밍 방식으로 애플리케이션과 통신할 수 있도록 한다.웹 API는 클라이언트와 웹 리소스 사이의 게이트웨이이다. 클라이언트웹에서 정보에 액세스하려는 사용자, API를 사용하는 사람 or 소프트웨어 시스템 리소스다양한 애플리케이션이 클라이언트에게 제공하는 정보클라이언트에 리소스를 제공하는 시스템을 서버라고도 한다.조직은 API를 사용하여 리소스를 공유하고 보안, 제어 및 인증을 유지하면서..

객체 지향 프로그래밍

절차 중심 프로그래밍(Procedure Programming)어떤 문제를 해결하기 위한 과정을 순차적으로 설계하는 것재사용성을 높이기 위해 함수 또는 프로시저라는 작은 단위로 나누어 작성한다.절차와 데이터가 분리되어 있는 경우가 많고, 관리가 어렵다Pascal, FORTRAN, C 등... 객체 지향 언어(OOP;Object-Oriented Programming)기존의 절차 중심 프로그래밍의 재사용성을 개선한 방법데이터와 코드를 객체로 함께 구성해서 한 개의 자료형으로 취급한다.클래스 혹은 객체들의 집합으로 프로그램이 작성된다.컴퓨터 프로그램을 단순히 데이터와 처리 방법으로 나누는 것이 아니라, 프로그램을 수많은 '객체(Object)'라는 기본 단위로나누고 이 객체들이 서로 메시지를 주고 받으며 데이터를..

좋은 코드란 무엇인가?

Bad Code- 이해하기 어렵다.- 수정이 어렵다. - 따라서 버그가 빠르게 고쳐지지 않는다.- 제품의 출시일이 늦어진다.- 로딩 타임이 증가하고 crash 발생이 증가한다.-더 많은 기능이 들어갈수록, 코드의 code smell은 증가한다. 우리는 프로그램이 돌아가게 하려고만 하지, 코드를 clean up하지 않는다.추후에 수정할 일도 없기 때문에, 항상 clean code를 짜는 것이 중요하다. * 보이 스카우트 규칙"Leave the campgroud cleaner than you found it"캠프장을 처음 왔을 때보다 깨끗하게 해 놓고 떠나기코드를 가져왔을 때보다 더 clean하도록 코드를 짜야 한다는 의미이다. Name의미 있는 이름을 짓자- 변수, 함수, 클래스 등에 이름을 짓게 ..