Search

2024년 다섯 번째 개발일지

작성자
상태
완료
날짜
생성 일시
2024/02/18 00:45

CS공부의 필요성

지난 번에 말했듯이, 최근에 기초적인 컴퓨터 과학(CS) 지식의 필요성을 깨달았습니다.
개발자로서 2년의 경력을 쌓아가고 있지만, CS 지식은 신입보다 경력이 길어질수록, 주요 로직을 맡을 때 더욱 필요하게 됩니다.
다행히 컴퓨터 공학을 전공하여 기본적인 CS 지식을 갖추었지만, 유니티 C#과 관련하여 어려운 부분이 많았습니다.
예를 들어, 기본 빌드 과정인 전처리기, 컴파일러, 어셈블러 등이 C#과 유니티에서 IL2CPP 빌드로 이루어질 때, 이전에 배웠던 것과는 완전히 다르게 진행됩니다.
이러한 점들로 인해 유니티에선 기존 지식과 다르게 동작하는 경우가 많더군요.
따라서 운영체제 공룡책을 다시 복습하며, 유니티 C# 위주로 어떻게 작동하는지 학습할 예정입니다.

컬렉션

C#에서의 컬렉션은 특별한 의미를 가지고 있습니다.
기본 배열과 달리 개발자에게 더 사용자 친화적인 구조를 제공합니다.
이를 위해 foreach를 사용할 수 있도록 IEnumrable를 구현하고, Add, Remove 등등과 같이 사용하기 편리한 함수를 많이 제공합니다.
C#에서 제공하는 기본 컬렉션과 LINQ의 활용법을 이해하면 개발 과정이 훨씬 더 간결하고 쉬워질 것으로 생각합니다.

SOLID

객체 지향의 원칙인 SOLID는 유지 보수를 위해 필수적이라고 생각합니다.
그러나, 게임 개발에서는 모든 원칙을 강제로 따를 필요는 없다고 생각합니다.
오히려, 억지로 원칙을 따르려다 보면 코드 개발이 어려워질 수 있습니다.
특히, 싱글톤 패턴이 그런 경우라고 생각합니다.
실제로, 많은 사람들이 싱글톤 패턴이 단일 책임 원칙을 위반한다고 주장하지만, 저는 그렇게 생각하지 않습니다. 책임의 범위는 주관적일 수 있고, 싱글톤 패턴이 단일 책임 원칙을 위반하기 쉽다는 것은 사실이지만, 그럼에도 불구하고 싱글톤 패턴 자체가 반드시 단일 책임 원칙을 위반하는 것은 아니라고 생각합니다. 따라서, 싱글톤 패턴이 나쁘다는 이유로 사용하지 않는 것은 바람직하지 않다고 생각합니다.
위의 이유에도 불구하고, SOLID는 매우 훌륭한 원칙들입니다. 이 원칙들을 잘 준수하면 유지보수가 훨씬 더 편리해집니다.
제 주장은 원칙을 잘 이해하고 준수해야 하며, 원칙을 어길 필요가 있는 경우는 원칙의 이해를 바탕으로 원칙의 장점보다 어기는 것이 더 큰 이점을 가져올 때, 원칙을 어기고 코드를 작성해야 한다고 생각합니다.

C# VS C++

C#과 C++의 차이점을 설명하라 하면, 사실 평생 이 차이점을 설명해도 시간이 모자릅니다.
그러나, C#과 C++이 어떤 목적으로 만들어졌는지 이해하면, 두 언어간에 생기는 차이점을 이해하는데 도움이 될 것입니다.
예를 들어, C#의 Struct와 C++의 Struct의 차이점이 왜 큰지, 또는 C#이 왜 타입의 안정성에 이렇게 많은 신경을 쓰는지 등을 이해할 수 있을 것입니다.