오늘 오전에 BitSupport의 첫 번째 초안을 배포했습니다.
배포 후 "BitSupport만의 차별점은 무엇일까?"라는 고민을 해보았는데, 그 과정에서 한 가지 흥미로운 아이디어가 떠올랐습니다.
아이디어
만약 장비나 캐릭터의 상태를 Bit로 표현하고, 여기에 더해 해당 상태를 제어할 수 있는 자동화 메서드를 클래스로 생성할 수 있다면 어떨까요? 말로 설명하는 것보다는 직접 샘플을 보여드리겠습니다.
사용 예시
// Enum과 자동화할 객체 모델을 아래와 같이 선언합니다.
[BitSupportFlags] // 또는 [Flags]
public enum CharacterState
{
Idle,
Running,
Jumping,
Attacking,
Defending
}
[BitState(typeof(CharacterState))] // 또는 [BitState(typeof(CharacterState))]
public partial class Character
{
}
public void Main()
{
Character character = new Character();
// 상태 제어
character.SetState(CharacterStateFlags.Running); // 캐릭터를 Running 상태로 설정
character.SetState(CharacterStateFlags.Jumping); // 캐릭터를 Jumping 상태로 설정
character.RemoveState(CharacterStateFlags.Jumping); // 캐릭터의 Jumping 상태 제거
// 상태 확인
Console.WriteLine($"캐릭터가 점프 중인가요? : {character.IsState(CharacterState.Jumping)}");
Console.WriteLine($"캐릭터가 달리는 중인가요? : {character.IsState(CharacterState.Running)}");
Console.WriteLine($"현재 캐릭터의 상태를 Byte로 표현하면? : {character.GetByte()}");
/*
[BitState(typeof(CharacterState))]로 설정한 경우에도 동일하게 동작합니다.
*/
}
/* 출력 결과:
캐릭터가 점프 중인가요? : false
캐릭터가 달리는 중인가요? : true
현재 캐릭터의 상태를 Byte로 표현하면? : 0x01
*/
[BitState]
어트리뷰트
[BitState]
어트리뷰트는 [BitSupportFlags]
나 [Flags]
가 적용된 Enum에 전용으로 사용됩니다. 이를 통해 상태를 간편하게 관리할 수 있으며, 특정 상태의 추가, 제거, 확인 등을 자동으로 처리하는 메서드를 생성합니다.
이 아이디어를 통해 개발자가 Enum 값을 직접 다루는 복잡함을 줄이고, 객체 상태를 보다 직관적으로 관리할 수 있게 됩니다. 다른 의견이나 아이디어가 있다면 언제든지 공유해주세요!
GitHub 주소