728x90
C# 3.0 에서 새롭게 도입된 Lambda 표현식을 사용하면 코드를 정말 간단하게 표시할 수 있는 장점이 있습니다. 델리게이트가 세상에 처음 나타난 이래 이는 정말 많은 프로그램과 개발자들에게 형언할 수 없는 아름다운 생활을 할 수 있는 "기회"를 주었습니다. 물론... 기회에는 반대급부가 따랐지만 말이죠.. 쿨럭... 여튼... 아래의 간단한 세가지 코드를 보면서 코드가 아름다워지는 광경을 한번 보도록 하겠습니다.

Named 메서드의 사용
IEnumerable<string> filteredList = cities.Where(StartsWithL);

public bool StartsWithL(string name)
{
    return name.StartsWith("L");
}

자주 보시던 스타일의 코드입니다. cities 어레이에 들어 있는 값들 중 L 로 시작하는 값을 얻어오는 코드지요. string 클래스의 확장 메서드인 Where 의 도움을 받아 StartsWithL 메서드가 Where 절의 역할을 하고 있습니다.

익명 Delegate의 사용

별도로 메서드를 만들어서 호출하는 것도 나쁘지 않습니다만 이왕이면 코드를 간결하게 유지하기 위해 익명 Delegate를 많이들 사용하실 겁니다. Named 메서드 사용하던걸 익명 Delegate 로 바꿔보겠습니다.

IEnumerable<string> filteredList = cities.Where(
            delegate(string s)
            {
                return s.StartsWith("L");
            }
일단 메서드가 하나 줄어서 기분이 좋습니다 ^^; 익명 Delegate 를 이용해서 위처럼 간단하게 inline 으로 처리를 할 수 있습니다. 그런데 코드가 지저분한 것이 별로 보기가 좋지 않습니다. 이를 람다 표현식으로 바꾸어 보도록 하겠습니다

Lambda 표현식의 사용

IEnumerable<string> filteredList = cities.Where(s => s.StartsWith("L"));
아주 깔끔하게 한줄러 코드를 줄였습니다. 닷넷이 제공하는 컴파일러는 생각보다 똑똑해서 s 라는 변수가 당연히 cities의 타입을 따라간다는 것을 알고 있습니다. 인텔리센스도 실시간으로 당연히 잘 동작하겠지요.

- NoPD -
728x90
728x90
사용자 삽입 이미지
개인적인 실험 프로젝트로 me2day 관련 매쉬업 서비스를 개발하다가 기존에 공개된 C# 버전의 닷넷 미투데이 OpenAPI 라이브러리를 업데이트 했습니다. 큰 변경을 가한 것은 아니지만, 기존에 공개된 라이브러리에 빠져있는 메소드와 필드를 추가해서 보다 다양한 활용이 가능하도록 변경해 봤습니다.

me2api 스프링노트에 원저작자가 기술되어 있지 않아서 일단 허락을 받지 않고 배포를 합니다만, 모든 코드의 저작권은 미투데이(http://www.me2day.net)가 가지고 있으며 문제가 될 경우 배포를 중단하도록 하겠습니다. 소스코드는 VIsual Studio 2008 로 컴파일 되어 있어 코드를 수정하실 분들은 사용하시는 VS 버전에 맞추셔야 합니다.

그 외 일반적으로 사용하실 분들은 첨부파일의 Release 폴더에서 DLL 을 참고하셔서 사용하시면 됩니다. 표준 me2day API 의 룰을 따르므로 자세한 메소드별 사용법은 첨부파일의 프로젝트에 같이 포함된 샘플을 참고하시기 바립니다.

This is redistribution of OpenAPI library for micro blogging service named `me2DAY` which is familiar in South Korea. Attached project file has been built under Visual Studio 2008 environment. So if you want to use previous version of Visual Studio IDE, you should migrate it.

All rights are reserved and me2DAY.net has authorities for this library. If this distribution has any problem, I will stop to distribute it. To get API definition document, kindly go to the me2API SpringNote page linked below.

Thanks.

* me2API 스프링노트 : http://codian.springnote.com
* me2day OpenAPI 닷넷 라이브러리 :

- NoPD -
728x90

+ Recent posts