본문 바로가기

분류 전체보기100

안 좋은 코드 시리즈 2탄 안 좋은 코드 시리즈 2탄 1.잘 변하는 데이터 (mutual data) 데이터가 잘 변한다면, 그것은 안 좋은 코드!! 변수가 변화할 때는 항상 프로그래머가 추적가능한 상태여야 한다. 데이터가 생성된 이후 데이터가 변경되는 것에 신중해야한다. 변수가 변경되지 않도록 하는 방법들 - 변수 캡슐화 - 변경 로직을 별도의 메소드로 분리 - 조회 함수와 변경 함수는 항상 분리 - 필요 없다면 setter 함수는 제거하기 (차후 변경되지 않을거라는 확신이 있다면) - set 보다는 private set으로 설정하기 - 추후 변경될 여지가 있다면 새로운 인스턴스로 설정하기 (귀찮더라도 한 번 만들어놓으면 나중에 동기화할 때 오류가 줄어든다.) 2. 뒤엉킨 변경 (divergent change) [메소드 : 기능].. 2023. 12. 12.
문자열 반환 Substring(n) / fixedDeltatime 알고리즘 코드카타 C# 에서 Substring() 메소드를 사용해 문자열 반환하기 1. Substring(n) : 문자열에서 인덱스 시작 위치(n)부터 끝까지의 문자열을 반환. (n) 이전의 문자열은 삭제됨. 2. Substring(n, m) : 문자열에서 인덱스 시작 위치(n)부터 길이(m)만큼의 문자열을 반환. // Programmers. 핸드폰 번호 가리기 // 프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다. // 전화번호가 문자열 phone_number로 주어졌을 때, // 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부* 으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요. internal class _027_HidePhoneNu.. 2023. 12. 11.
[Baldur's Gate 3] 게임은 무한하고, 권위는 영원하다. 12월 8일, THE GAME AWARDS 2023이 한국 시간 09시 30분에 열렸다. GOTY 후보작 메들리와 GOTY 수상 시간이 때마침 점심시간과 맞물려 실시간으로 시청할 수 있었다. 티모시 샬라메가 '발더스 게이트3' 를 호명할 것이라는 기대가 있었고, 예상대로 라리안 스튜디오가 2023 TGA GOTY를 수상했다. 2023년은 게임인들에게 행복한 해였다. 많은 사람들의 기대를 모은 AAA 대작들이 성공적으로 출시되었고 다양한 장르의 게임, 기술 혁신을 보면서 새로운 게임 시대가 오고 있다는 느낌이 들기 때문이다. 6개의 후보작들만 보아도 예술성, 그래픽 등 다방면으로 완전무장한 게임들이다. 이런 게임들 사이에서 GOTY를 수상한 라리안 스튜디오에게 다시 한 번 박수를 보낸다. 발더스 게이트3에.. 2023. 12. 8.
안 좋은 코드 시리즈 1탄 안 좋은 코드란? 1. 모호한 이름 (Mysterious Name) 함수, 변수, 클래스 ,모듈 등 이름을 모호하게 작성하는 것. 만약 명확한 이름이 떠오르지 않는다면 프로젝트의 설계에 문제가 있을 수도 있다! 2. 중복 코드 ( Duplicated Code) 똑같은 구조를 반복하는 것은 최악이다. 하나의 클래스 안에 비슷한 함수가 있다면 중복되는 부분을 함수로 추출하자. 3. 긴 함수 (Long function) 짧은 함수는 재사용성이 좋고 코드를 공유하기 쉽다. 하나의 함수를 길게 만들기 보다는 짧은 함수를 여러 개 호출하는 구조가 훨씬 좋다. (코드 줄 수가 중요하다기보다는, 가독성이 좋아야 한다.) 알고리즘 문제풀이의 경우는 성능이 1순위, 가독성이 2순위. 4. 전역 변수의 남용 전역 변수는 어.. 2023. 12. 8.
객체지향 프로그래밍에서의 Loose Coupling과 모듈화 Unity 게임 개발 입문 팀프로젝트 : Arkanoid24 객체 지향 프로그래밍에서 Coupling Coupling 이란 상호작용하는 시스템(객체)간의 의존성을 의미한다. Tight Coupling : 두 객체가 높은 의존성을 가진다. Loose Coupling : 두 객체가 낮은 의존성을 가진다. (객체 지향 프로그래밍의 지향점) 느슨한 결합을 사용해 최대한 객체를 독립적으로 유지할수록 코드의 자율성/변형가능성이 높아진다. 느슨한 결합을 사용하면 상호작용하는 객체 중 한 가지에 변경이 생겨도 다른 객체가 유연하게 대처할 수 있다. Arkanoid24 구현 당시 어려웠던 점 기능구현 시 가장 어려웠던 부분은 Local에서 멀티플레이(2P)를 구현하는 것이다. 기존에 1P에서 사용하던 input syst.. 2023. 12. 7.
region 사용하기 / UI - RankPanel 만들기 Unity 게임 개발 입문 팀프로젝트 : Arkanoid24 길어지는 script 정리하는 방법 #region 을 사용하면 선언한 변수들을 깔끔하게 정리할 수 있다. 랭킹 UI 만들기 // RankPanel.cs ... float rankscore = 0; rankscore = Managers.Game.Score; PlayerPrefs.SetFloat("Ranks", rankscore); float tmpScore = 0f; for (int i = 0; i < 4; i++) { RankScores[i] = PlayerPrefs.GetFloat("Ranks"); while (RankScores[i] < rankscore) { tmpScore = RankScores[i]; RankScores[i] = ran.. 2023. 12. 6.