그외 새로 들어가는 IDE 기능들
전에 쓴 post에 있는 새로운 IDE 기능은 dynamic과 COM interop에 관련되어 새로 추가된 기능들이고, 당연히 이 밖에도 여러가지 새로 VS10에 추가 되는 IDE 기능들이 있습니다. 이번 post에서는 요 기능들에 대해 얘기 할까 합니다.
일단 새로 추가된 기능을 2가지로 분류 한다면, 첫번째는 새로이 들어가는 기능이고, 두번째는 기존의 기능을 향상 시킨것입니다.
일단 새로이 들어간 기능에 대해서 먼저 쓰자면,
- Quick Search
- Call Hierarchy
- Highlight References
- Generate from Usage
- Co/Contravariance
- 이 기능은 간단히 말해서 이제 C# 4.0에서 아래와 같이 할수 있다는겁니다.
interface I<in T, out U> { }
class Base { } class Derived : Base { }
class Program { void Test(I<Base, Derived> ib) { I<Derived, Base> id = ib; } }
- 아시다시피, 기존에는 같은 generic type 사이에서만 conversion이 가능했지, 보시는것 처럼 inheritance에 따라서 assign 하는것이 불가능 했엇죠. 이제 interface와 delegate의 경우, generic argument에 한해, 이것을 지원합니다. 또한 언어만 지원하는게 아니고, BCL혹은 mscorlib에 정의되어 있는 interface와 delegate 중, co/contravariance 를 씀으로써 혜택 받을수 있는 타입들은 이번 CLR 4.0에서 co/contravariance를 쓰도록 바뀌었습니다. 예를 들어 IEnumerable 이나 Func 같은것들 말이죠.
- 보다 자세한 내용은 Covariance and Contravariance in C# 4.0 혹은 Eric Lippert 을 참조 하시기 바랍니다.
- 이 기능은 간단히 말해서 이제 C# 4.0에서 아래와 같이 할수 있다는겁니다.
뭐 이정도 인거 같고, 기존의 있었던 기능들 중에 발전된것들을 나열하자면
- Background errors (live squiggles)
- 이 기능은 VS 2008 SP1에서 처음 소개된 기능인데, 이번 VS10에서 더욱 다듬어졌습니다.
- Refactoring performance
- 기존에 사용하던 refactoring engine을 vs 2008에서 새로이 개발한 LAF로 교체 하였습니다. 이로 인해 “Find All reference”, “Rename” 과 같은 여러 refactoring 기능들의 성능이 많이 향상 되었습니다. 특히 local variable 같은 경우는 거의 실시간으로 작동하게 되었습니다.
- 전체 solution을 찾아야만 하는 것도 기존의 engine에 비해 거의 2배 이상 성능 향상이 있었습니다.
- refactoring on xml doc comment
- Completion set
- 기존의 completion set과 달리 존재 하지 않는 타입 혹은 심볼을 사용하더라도 강제로 commit 시키지 않습니다. 대신 builder를 이용하여 존재 하지 않은 symbol을 commit 할수 있게 해줍니다. (아쉽게도 제가 아직 이 기능이 작동하는 VS를 인스톨 하지 않았네요…)
뭐 기능이 향상 된건 이정도 인거 같네요. 이것보다 몇개 더 했던거 같은데, 지금 기억나는건 이게 다네요.
몇 달후에 beta1 아마도 나올테니 관심있으신 분들은 다운 받아서 함 써봐주세요.
그럼 수고.