프로그래밍할 때 종종 사용하는 용어 중 TearDown과 Dirty는 맥락에 따라 다른 의미로 쓰이지만, 각각의 개념은 개발 과정에서 중요합니다. 이번 글에서는 이 두 용어의 의미와 사용 예를 정리해보겠습니다.
TearDown
TearDown은 설정된 상태를 초기화하거나 제거하는 과정을 의미합니다. 이는 특정 작업이 완료된 후 남아 있는 자원을 정리하거나, 테스트 환경을 원래 상태로 복구하는 데 사용됩니다.
예시
Unity의 Test Framework에서 TearDown은 테스트가 끝난 후 실행되는 메서드입니다. 테스트 중 생성된 오브젝트나 데이터를 정리해, 다음 테스트가 영향을 받지 않도록 해줍니다.
using UnityEngine;
using UnityEngine.TestTools;
using NUnit.Framework;
public class TearDownExample
{
private GameObject testObject;
[SetUp]
public void SetUp()
{
// 테스트용 GameObject 생성
testObject = new GameObject("TestObject");
}
[Test]
public void TestGameObject()
{
Assert.IsNotNull(testObject);
}
[TearDown]
public void TearDown()
{
// 테스트 후 GameObject 삭제
Object.DestroyImmediate(testObject);
}
}
Dirty
Dirty는 객체 또는 데이터가 변경된 상태임을 나타냅니다. 이를 통해 필요한 경우 저장, 업데이트, 혹은 리렌더링 등의 작업을 수행합니다.
예시
Unity Editor에서 SetDirty() 메서드를 사용하면 객체가 수정되었음을 표시할 수 있습니다. 이를 통해 변경 사항이 저장되도록 Unity에 알릴 수 있습니다.
using UnityEditor;
using UnityEngine;
public class DirtyExample : MonoBehaviour
{
public string exampleString;
void UpdateString(string newValue)
{
exampleString = newValue;
// 변경 사항을 Unity에 알림
EditorUtility.SetDirty(this);
}
}
그 외에도, Unity는 Scene 파일이 Dirty 상태일 경우 변경 사항이 있음을 표시합니다. Dirty 상태의 씬은 Unity Editor 상단에 *로 표시됩니다.
그리고 Dirty Flag Pattern도 자주 사용되는데요.
Dirty 상태를 추적하여 필요할 때만 업데이트를 수행하는 패턴입니다. 예를 들어, UI나 데이터의 변경 사항이 발생했을 때만 렌더링을 업데이트하면 성능을 최적화할 수 있습니다.
public class DirtyFlagExample : MonoBehaviour
{
private bool isDirty = false;
private void Update()
{
if (isDirty)
{
// 변경된 상태 처리
Debug.Log("Dirty 상태를 처리합니다.");
isDirty = false; // 상태 초기화
}
}
public void MarkDirty()
{
isDirty = true;
}
}
요약: TearDown과 Dirty
용어 | 의미 | Unity에서의 사용 사례 |
TearDown | 리소스 정리 또는 테스트 후 초기화 | Test Framework, 씬 종료 시 리소스 정리 |
Dirty | 변경된 상태를 나타냄 | EditorUtility.SetDirty, Dirty Flag Pattern |