Which is better? Reassign or Clear

  • Post author:
  • Post category:
  • Post comments:0 Comments
  • Post last modified:May 25, 2006

왜 그런 약속을 했는지 모르겠다. 처음에는 별 것 아니라고 생각했다. 이제 와서 생각해보면 터무니 없이 안일한 태도였다. 마소 6월호 원고 마감일을 하루 앞두고 수정 건도 있는데 왜 수락했을까?

이틀째 집에 오자마자 Netbeans를 켠다. 유사한 점이 많다고는 해도 GUI 프로그래밍을 하려니, C#을 주로 다루는 나에겐 벅찬 듯 하다. 정말 간단한 데이터 구조 숙제인 줄 알았다. 그러나 데이터 구조를 화면에 보여줘야 하다니 보통 일이 아니었다.

결국 요구사항 중 일부를 구현 못하고 작업이 끝났다. 그 정도로 만족한다니 다행이지만, 더 잘해 주지 못해서 미안했다.

아차, 방심하는 사이에 이야기가 샜다. 이 과제는 나름대로 재밌었다. 완전히 새로 짜는 것이 아니라, 어느 정도 구축된 인터페이스와 데이터 구조 위에 새로운 기능을 추가하는 것이었다. 어제는 기존 소스 코드를 수정하면서 재밌는 소재를 찾았다. 여기서는 C#으로 예제 코드를 만들었다.

private List<int> list = null;

private void ButtonClicked()
{
	if (list == null)
	{
		list = new List<int>();
	}
	else
	{
		list.Clear();
	}

	// some List operations
}

사용자가 버튼을 누르면 List에 새로운 값을 입력하고, 트리 구조 등을 만든다. 여기서 문제는 굳이 null 체크를 위해 분기해야만 하냐는 점이다. if/else 부분을 단순하게 list = new List<int>();로 바꾸면 안 될까? GC가 알아서 참조를 잃어버린 List 인스턴스를 제거해 줄 것이다.

물론 ButtonClicked() 메써드가 자주 호출된다면 List 인스턴스 생성에 필요한 자그마한 오버헤드도 매우 큰 효과를 불러일으킬 수 있다. 하지만 UI를 통해 입력이 들어왔을 때만 실행되는 메써드라면 매번 새로운 객체를 생성해도 무방하다.

Kubernetes, DevSecOps, AWS, 클라우드 보안, 클라우드 비용관리, SaaS 의 활용과 내재화 등 소프트웨어 개발 전반에 도움이 필요하다면 도움을 요청하세요. 지인이라면 가볍게 도와드리겠습니다. 전문적인 도움이 필요하다면 저의 현업에 방해가 되지 않는 선에서 협의가능합니다.
follow me
  • https://t.co/3HNEvXY673
    23 hours ago
  • https://t.co/iyhVMgJtzv 이 소식통은 “구글 입장에서 보면 정부에서 수수료 정책에 관여하는 것은 한국에서 사업하지 말라는 것으로 해석할 수 있다”며 “유독 한국에서만 반 구글 정서가 강한… https://t.co/33cEsNVkkM
    1 day ago
  • RT @jindo_moon: 진짜 심하다..개훌륭영상은 댓글 안닫나? 출연한 보호자님 악플과 심한욕설과 비난메세지에 시달리시셨는고 계정도 없애셨는데 유튜브 영상엔 아직까지도 보호자님 외모평가와 심한욕설 비난댓글이 달리고있다 단체로 경찰서에서 정모한번…
    1 day ago
Buy me a coffeeBuy me a coffee
×
Kubernetes, DevSecOps, AWS, 클라우드 보안, 클라우드 비용관리, SaaS 의 활용과 내재화 등 소프트웨어 개발 전반에 도움이 필요하다면 도움을 요청하세요. 지인이라면 가볍게 도와드리겠습니다. 전문적인 도움이 필요하다면 저의 현업에 방해가 되지 않는 선에서 협의가능합니다.
Latest Posts