Unity 개발/기술 향상

[Unity] 깔끔한 코드 작성을 위한 스타일 가이드 (2)

내공부방 2024. 10. 27. 00:52
반응형

이번 글도 이어서 Unity에서 코드 작성을 위한 스타일 가이드에 강의에서 알려준 내용을 한번 정리해보자!

 

https://www.youtube.com/watch?v=eoJLowmz5zU&t=938s

 

1. 클래스와 메서드 구성

  • 가독성과 유지보수성: 코드는 읽기 쉽고 이해하기 쉬워야 함.
  • 일관된 스타일과 규칙: 이름 짓기와 코드 구조를 일정하게 유지.
//비일관적인 코드
public class PlayerScript : MonoBehaviour
{
    public int health_points = 100;
    public bool isAlive = true;

    void heal()
    {
        health_points += 10;
    }
}

//일관적인 코드 
public class Player : MonoBehaviour
{
    public int HealthPoints { get; private set; } = 100;
    public bool IsAlive { get; private set; } = true;

    public void Heal()
    {
        HealthPoints += 10;
    }
}

//변수와 메서드는 Pascal Case와 Camel Case와 같은 일관된 스타일
  • 최소한의 주석 사용: 주석 없이도 코드가 명확하게 이해될 수 있도록 작성.

 

** 추가적으로 ** 
클래스 내부의 구성 요소는 논리적인 순서로 배치해야 가독성이 좋아진다.
일반적으로는 필드, 프로퍼티, 생성자, 공용 메서드, 비공용 메스드 순으로 정리! 

예를 들면 
//정리가 안된 코드
public class Enemy : MonoBehaviour
{
    void Start() { }
    private void DealDamage() { }
    public float Health = 50f;
    public void TakeDamage(float amount) { Health -= amount; }
}​

//정리가 된 코드 
public class Enemy : MonoBehaviour
{
    // 필드
    public float Health { get; private set; } = 50f;

    // Unity 이벤트 메서드
    void Start()
    {
        // 초기화 코드
    }

    // 공용 메서드
    public void TakeDamage(float amount)
    {
        Health -= amount;
    }

    // 비공용 메서드
    private void DealDamage()
    {
        // 내부 로직
    }
}

 

 

2. 메서드 작성 규칙

  • 메서드는 동작을 표현하는 동사로 시작 (e.g., Move(), Stop(), ...).
  • 단일 책임 메서드: 한 가지 동작만 수행하도록 작성.
  • 매개변수 최소화: 간단하고 이해하기 쉬운 메서드 유지 (객체나 구조체로 관련된 매개변수를 그룹화!!!)
// 매개변수 과다 (비효율적)
public void ConfigurePlayer(string name, int health, int speed, int score)
{
    Name = name;
    Health = health;
    Speed = speed;
    Score = score;
}

// 매개변수를 객체로 그룹화
public class PlayerConfig
{
    public string Name;
    public int Health;
    public int Speed;
    public int Score;
}

public void ConfigurePlayer(PlayerConfig config)
{
    Name = config.Name;
    Health = config.Health;
    Speed = config.Speed;
    Score = config.Score;
}

 

3. 이벤트와 핸들러

  • 이벤트는 Action 대리자를 사용해 간결하게 정의.
public class GameEvents : MonoBehaviour
{
    public event Action OnPlayerDeath;  // 이벤트 정의
    public event Action<int> OnScoreUpdated;  // 매개변수 포함

    public void TriggerPlayerDeath()
    {
        OnPlayerDeath?.Invoke();  // 이벤트 발생
    }

    public void UpdateScore(int newScore)
    {
        OnScoreUpdated?.Invoke(newScore);  // 이벤트 발생
    }
}
  • 이벤트를 발생시키는 메서드는 On으로 시작 (e.g., OnPlayerDeath()). -> 일반 메서드랑은 분리하여 알아보기 쉽게!
  • 이벤트 핸들러는 이벤트 이름과 일치하도록 명명. 
public class UIManager : MonoBehaviour
{
    public void GameEvents_OnPlayerDeath()
    {
        Debug.Log("Player has died.");
    }

    public void GameEvents_OnScoreUpdated(int newScore)
    {
        Debug.Log($"New Score: {newScore}");
    }
}

 

오늘은 여기까지 

이번 포스팅에서는 C# 스타일 가이드 E-Book과 Unity에서 제공해준 유튜브 영상을 통해

클래스와 메서드, 그리고 이벤트에 대해 알아보았다.

 

다음 포스팅도 이어서 C# 스타일 가이드 E-Book과 Unity에서 제공해준 유튜브 영상을 통해 

알아둬야 할 내용들을 정리해보자 

반응형