Jon Skeet – Edulinq
About a year and a half ago, I gave a talk at a DDD day in Reading, attempting to reimplement as much of LINQ to Objects as possible in an hour. Based on the feedback from the session, I went far too fast… and I was still a long way from finishing. However, I still think it’s an interesting exercise, so I thought I’d do it again in a more leisurely way, blogging as I go. Everything will be under the „Edulinq” tag, so that’s the best way to get all the parts in order, without any of my other posts.
General approach
The plan is to reimplement the whole of LINQ to Objects, explaining each method (or group of methods) in a blog post. I’m going to try to make the code itself production quality, but I’m not going to include any XML documentation – if I’m already writing up how things work, I don’t want to do everything twice. I’ll include optimizations where appropriate, hopefully doing better than LINQ to Objects itself.
The approach is going to be fairly simple: for each LINQ method, I’ll write some unit tests (most of which I won’t show in the blog posts) and make sure they run against the normal .NET implementation. I’ll then comment out the using directive for System.Linq, and introduce one for JonSkeet.Linq instead. The tests will fail, I’ll implement the methods, and gradually they’ll go green again. It’s not quite the normal TDD pattern, but it works pretty well.
I will write up a blog entry for each LINQ operator, probably including all of the production code but only „interesting” tests. I’ll highlight important patterns as they come up – that’s half the point of the exercise, of course.
At the end of each post, I’ll include a link to download the „code so far”. For the sake of anyone looking at these posts in the future, I’m going to keep the downloads numbered separately, rather than updating a single download over time. I’m hoping that the code will simply grow, but I dare say there’ll be some modifications along the way too.
The aim is not to end up with LINQBridge: I’m going to be targeting .NET 3.5 (mostly so I can use extension methods without creating my own attribute) and I’m certainly not going to start worrying about installers and the like. The purpose of all of this is purely educational: if you follow along with these blog posts, with any luck you’ll have a deeper understanding of LINQ in general and LINQ to Objects in particular. For example, topics like deferred execution are often misunderstood: looking at the implementation can clarify things pretty well. źródło opisu: http://edulinq.googlecode.com/hg/posts/01-Intro.html
- Wydawnictwo:
- Jon Skeet
- data wydania:
- 2011 (data przybliżona)
- liczba stron:
- 279
- słowa kluczowe:
- informatyka , c# , programowanie , linq
- kategoria:
- informatyka i matematyka
- język:
- angielski