코드스멜
·
Programming/기타
코드스멜코드스멜이란?직역을 해보자면 냄새나는 코드라는 의미이다.사전적 정의는 개발자가 이해하지 못하거나 잠재적인 결함이  내재되어 있어 문제를 일으킬 가능성이 있는 코드를 말하는데, 운이 좋다면 한 두군데를 고치면 에러가 해결되고 정상적으로 작동하는 경우도 있지만 보통은 리팩토링을 거쳐야 하는 경우가 많다. 코드 스멜의 종류는 굉장히 다양하다. 그중 몇가지를 소개해보고자 한다. 코드스멜의 종류중복코드 (Duplicate Code)동일한 코드구조가 여러 곳에 있는 경우를 의미한다.이 경우 동일한 코드 구조를 메서드 추출 기법등을 통해 개선이 가능하다. 긴 메서드 (Long Method)메서드의 내용이 너무 긴 경우에도 문제가 될 수 있다. 어느 부분이 문제인지 알기 어렵기 때문이다.조건문 쪼개기나 메서드 ..
컴파일러
·
Programming/기타
컴파일러컴파일러란?컴파일이란 특정 프로그래밍 언어로 쓰여 있는 문서를 다른 프로그래밍 언어 혹은 컴퓨터 언어로 옮기는 과정을 의미한다. 이러한 컴파일링을 자동으로 수행해주는 소프트웨어 혹은 장치를 컴파일러라고 한다. 컴파일링 과정은 4단계로 이루어진다.1. 전처리 과정 (Pre-processor)2. 컴파일 과정3. 어셈블리 과정4. 링킹 과정 전처리전처리 과정이란 우리가 만든 코드들 중 헤더파일이나 매크로와 같은 부분들을 소스코드로 변환해주는 사전 작업이다.이 과정에서 쓸모없는 부분들을 제거하여 최적화 또한 수행한다.주석을 제거하고, 헤더파일 내부의 코드를 삽입하고, 상단의 매크로를 실제 코드로 치환하고 적용해주는 과정을 수행한다. 컴파일그 다음 컴파일 과정에서 고급 언어 (대표적으로, C++)를 저급..
C#) 메서드와 매개변수
·
Programming/C C# C++
이번에 알아볼 것은 바로 메서드이다. C#에서는 메서드라 부르고 C/C++에서는 함수라고도 하는데, 특정한 동작을 수행하거나 특정 결과를 계산하는 일련의 구문 순서를 묶는 수단이다. 우리는 이 메서드들의 이름을 호출하여 사용할 수 있다.using UnityEngine;public class Test1 : MonoBehaviour{ public void Start() { int a = 10, b = 20; Debug.Log(Add(a, b)); } public int Add(int a, int b) { int c = a + b; return c; }}...이런 식으로 말이다. 이 경우 Add라고 하는 메서드를 Start메서드..
게임수학) 행렬 - 1
·
Programming/기타
행렬의 정의행렬은 수나 기호를 직사각형 형태로 배열한 것으로, 여러 분야에서 사용되지만 게임 엔진에서는 주로 벡터 공간의 변환을 위해 사용된다.  보통 이런식으로 작성된다.이 행렬 안에 나열된 성분들은 요소라고 부르고 m11, m23처럼 나타낼 수 있다. 행과 열의 수가 동일한 행렬을 정사각행렬이라고 부른다. 게임 엔진에서는 주로 이 정사각행렬을 많이 사용한다.만약 행번호와 열번호가 동일한 성분, 예를 들어 m11, m22, m33같은 요소를 대각요소라고 한다. 한번 행렬의 종류에 대해서 한번 알아보자.정사각행렬이면서 대각 요소외의 요소가 모두 0이라면 그때는 그 행렬을 대각행렬이라고 할 수 있다.만약 대각행렬이면서 대각요소가 모두 1이라면? 단위행렬이 된다. 만약 모든 요소가 0이라면? 영행렬이 된다...
자료구조) 이중 연결 리스트 (Double Linked List) - 1
·
Programming/자료구조 & 알고리즘
이중 연결 리스트기존의 방법(단일 연결 리스트)으로 리스트의 데이터를 찾으려면 링크를 타고, 타고, 타고 내려가서 맞는게 나올때까지 들어가야 했다.이 방법을 어떻게 개선할 수는 없을까?그림처럼 노드를 두 개로 만들면 된다. 이전 노드의 주소를 저장하는 노드(PrevNode)와 다음 노드의 주소를 저장하는 노드(NextNode).이제 우리는 양방향으로 데이터를 찾을 수 있게 되었다.이 방식의 장점은 단일 연결 리스트에 비해 접근이 빠르다는 점이다. 예를 들어 1000개의 데이터 중 900번째 데이터에 접근해야 한다면 단일 연결 리스트는 900번 이동해야 하지만, 이중 연결 리스트는 꼬리부터 100번 움직이면 접근할 수 있다. 이중 연결 리스트에 다른 노드를 연결은 어떻게 할 수 있을까? 맨 처음 상태이다...
게임수학) 벡터 - 2
·
Programming/기타
벡터 연산덧셈, 뺄셈, 교환법칙, 결합법칙기하벡터의 경우에는 시각적으로 벡터를 보여줄수 있으므로, 기초적인 연산법칙이 성립한다는 것을 보여주는것도 쉽다. 우리가 고등학?생때 배웠었던 덧셈, 뺄셈, 교환법칙, 결합법칙을 벡터에서도 성립한다는 것을 그림을 통해 알 수 있다.증명은 생략하고 대신 설명을 한번 해보자. 교환법칙이란 a + b를 순서를 바꿔서 b + a로 표기해도 성립한다는 내용이다. 그림에서는 좌상단에 해당한다.벡터 b와 크기는 같으나 방향이 정반대인 벡터를 역벡터 -b로 정의하는데, 우상단에 해당한다.원본 벡터와 그 역벡터를 더하면 영벡터가 된다. 우상단 그림에서 b와 -b벡터가 합이 0이 되는것을 확인할 수 있다.마지막으로 (a + b) + c = a + (b + c)와 같이 괄호의 위치를 ..