728x90
마이크로소프트가 제공하는 닷넷 프레임워크는 그 양이 정말 방대하다. 그러다 보니 이미 오래전부터 존재하고 있음에도 불구하고 사용자들에게 널리 사용되지 않는 요소들도 꽤 많다. 오래된 기술이라서 Deprecated 되는 요소를 제외하더라도 그 유용성에 비해 사용자들의 인지가 떨어지는 것들이 여럿 있다. 그 중 대표적인 것이 바로 "?? 연산자" 이다. 

일반적으로 사용자들은 단행 조건문 처리를 할 때나 Nullable 자료형을 선언할 때 쓰는 "?" 는 많이 사용하는 편이다. 하지만 물음표를 두개 붙이 "??" 연산자를 사용하는 경우는 쉽게 찾아보기 어렵다. 그렇다면 도대체 물음표를 두개 붙여 놓은 "?? 연산자"는 무얼하는 친구일까?

 
우선 "??" 연산자는 영어로 null-coalescing 연산자라고 부른다. 우리말로 어떻게 해석해야 할지 조금 애매하니 그냥 "??" 또는 "?? 연산자" 라고 부르기로 하겠다. 이 연산자의 용도는 Null 값을 가질 수 있는 변수들을 사용할 때 초기값의 원활한 지정이다. 보통 Null 값의 처리를 위해 아래와 같은 코드를 많이 사용한다.

int? numOne = null;
int? numTwo = 23;

if (numOne != null)
    return numOne;
if (numTwo != null)
    return numTwo;

return 10;


이 코드는 Null 값을 가질 수 있는 두개의 정수형 변수 numOne 과 numTwo를 비교하여 Null이 아닌 값을 출력하기 위한 간단한 코드이다. 만약 둘다 null 값이면 숫자 10을 출력하게 된다. 우선 이 코드를 물음표 한개를 이용하여 단행 조건문으로 처리해 보면 아래처럼 표현될 수 있다.

return (numOne != null ? numOne : (numTwo != null ? numTwo : 10));

한줄로 처리가 되긴 했지만 가독성이 그리 높은 코드는 아니다. 코드 자체의 길이도 길지만 콜론과 괄호, 물음표, 부등호 등이 섞여 있어서 한눈에 내용을 파악하기에는 쉽지 않은 상태이다. 이것은 "??" 연산자를 이용해서 표현하면 아래와 같다.

return ((numOne ?? numTwo) ?? 10);

처음에 상당히 길었던 코드가 상당히 짧게 표현되었다. numOne ?? numTwo 의 의미는 두가지 변수 중 Null 값이 아닌 것이 어떤 것인가? 를 의미한다. Null 이 아닌 값이 있으면 해당 변수 값이 Return 된다. 하지만 둘다 Null 이면 numOne ?? numTwo 의 결과는 Null 이다. 이후 바깥쪽 괄호의 처리가 진행되는데 Null ?? 10 을 연산하게 되면 Null 이 아닌 10 이 Return 되게 된다.  

소프트웨어 개발을 하면서 Null 값의 처리는 꼭 해줘야 하는 필수적인 예외처리 로직이다. 이왕 해야 하는 처리 로직이라면 조금 더 간결하고 가독성 있는 코드를 만들어 쓰는 것이 더 좋지 않을까?

- NoPD - 
728x90
728x90
마이크로소프트의 자격증 1과목당 응시 비용은 정말 오래전부터 80달러를 유지해 왔습니다. 환율을 적용하여 7만원부터 9만원 사이의 금액으로 한과목의 시험을 볼 수 있었는데요, 오늘 아침에 도착한 마이크로소프트의 메일을 보니 7월 1일부터 금액이 인상된다고 합니다.

제 기억이 맞다면 2003년에도 80달러 였습니다. 10여년이 지났는데도 80달러가 유지되고 있었다는 것은 새로운 시험의 개발과 관련된 서비스의 제공 등에 따른 비용을 처리하기 쉽지 않았을거라는 생각이 드네요. 어쨌든 중요한 것은 7월 1일부터 아래 스샷처럼 과목당 시험비용이 100달러로 증가됩니다. 시험 준비하고 계셨던 분들은 피치를 좀 올리셔야 겠네요!
 

- NoPD -
 
728x90
728x90
윈도폰7은 기존 마이크로소프트의 윈도우모바일 계열 운영체제와 다르게 닷넷 기반의 C# 만으로 개발이 가능하다고 알려져 있습니다. Managed 코드로만 개발을 가능하게 함으로써 애플리케이션과 운영체제의 안정성을 더 높히겠다는 마이크로소프트의 의지가 반영된 결과입니다. 한동안 Native C 를 지원하지 않음으로서 생기는 단점들에 대하여 갑론을박이 많았습니다만 단말 런칭 이후에는 이런 이야기가 많이 줄어든 분위기입니다.

마이크로소프트는 여기에 더하여 개발자 저변을 확대하기 위하여 비주얼베이직으로도 개발이 가능한 개발도구 추가 기능을 공개했습니다. 기존에 설치한 비주얼스튜디오 2010 윈도폰 버전이나 윈도폰7 개발도구가 추가된 비주얼스튜디오에 설치 가능하며 아직 정식 버전이 아닌 RTW 임을 감안하여 테스트 해볼것을 권장하고 있습니다. 비주얼 베이직은 은근히 개발자 층이 넓다는 것이 이번 개발도구 런칭의 이유가 아닐까 싶습니다.


개발도구를 다운로드 받는 MSDN 경로는 위의 이미지에 연결해 두었습니다. 이로써 윈도폰7을 개발할 수 있는 닷넷 기반의 Managed 언어는 C# 과 VB 가 된 것 같습니다. 다만 현재까지 XNA 기반의 게임 개발에는 사용할 수 없고 실버라이트를 기반으로하는 일반 어플리케이션 개발로 한정된다고 합니다. 

- NoPD -
728x90
728x90
찰스 페졸드라는 이름이 마이크로소프트 관련 개발을 하시는 분들께는 무척 익숙할겁니다. 윈도우 서버 제품군을 비롯하여 개발 관련된 내용들까지 가리지 않고 책을 저술하는 분으로 유명합니다. 이번에 그 영역을 모바일까지 넓혀왔습니다. 이름하여 프로그래밍 윈도폰7!

아직까지 윈도폰7 개발서가 딱히 나오지 않은 상태에서 페졸드와 MS Press 에서 이렇게 무료로 책을 풀어준다는 것은 개발 붐을 일으키기 위한 하나의 전략으로 생각됩니다. 마이크로소프트의 입장에서 초기 개발붐을 일으키지 못하면 윈도폰7의 늦을 출시를 만회할 수 있는 마지막 기회를 잃게 되는 것이니까요.


영문으로 된 원서라는 압박이 있지만 개발자의 장점이 뭐겠습니까? 코드로 모든것을 이해하면 되니 부담 갖지 말고 바로 다운로드 받으시기 바랍니다!

- eBook 다운로드 링크 : http://bit.ly/9PBQNr
- eBook 샘플 프로젝트 : http://bit.ly/aB0N08

- NoPD -
728x90

+ Recent posts