It's one of the paradoxes of blogging that most every blogger (including myself) is sharing what they know right now (let's quietly ignore those who blog purely for traffic and visibility). Since everyone is learning, this can result in poor or misleading information being shared just as much as good information. Keep this in mind as you read any blog - how experienced is the writer and how well do they really know what they're talking about.
I'm just as flawed as other bloggers, so you should feel encouraged to check my ideas for yourself. Keep the date in mind as well - in our fast moving field, even good ideas can become obsolete.
It’s vital that our priority queue returns items in the correct order, so we should write some unit tests to ensure that items are returned in the order desired. Fortunately, we can test this fairly easy using property tests.
For a queue exceeding two items, our existing implementations are insufficient. We need another - a
BranchingImmutablePriorityQueue<T>. Each of these nodes will combine two existing sub-queues with a head item to form a tree structure.
Once we have a priority queue containing a single item, how do we handle enqueuing the next item onto the queue? The answer, of course, is buried in the code from from last time: we introduce the
As we did with our original immutable queue, we’ll define dedicated implementations of
IImmutablePriorityQueue<T> for handling empty and single item queues.
After exploring last time how to remove an item from a queue, let’s look at the slightly more complex case of adding items.
|Equality in .NET||7|
|Immutable Priority Queues||8|
|Killing the Utility Class||5|
|Instance validation in C#||12|
|Dequeuing Values||03 Nov 2018|
|Designing the External API||27 Oct 2018|
|Introducing the Priority Queue||20 Oct 2018|
|A better approach to reflection||13 Oct 2018|
|Avoiding Magic Strings||06 Oct 2018|
|Capturing Validation Metadata||29 Sep 2018|
|Modelling Validation Metadata||22 Sep 2018|
|Validation Metadata||15 Sep 2018|
|Extending validation with warnings||08 Sep 2018|
|Bootstrapping a Psake build||01 Sep 2018|
|Validation recap||25 Aug 2018|
|Equality of validation||18 Aug 2018|
|Short-circuiting validation||11 Aug 2018|
|Aggregation of validation||04 Aug 2018|
|Recovery of validation types||28 Jul 2018|
|Basic validation||21 Jul 2018|
|Default includes and excludes for csproj||14 Jul 2018|
|Why we need better validation||07 Jul 2018|
|A question of struct performance||30 Jun 2018|
|Solving my Assembly Load Issues||23 Jun 2018|
|Troubleshooting Assembly Load Issues with the MSBuild Structured Log Viewer||16 Jun 2018|
|Troubleshooting Assembly Loading with the Assembly Binding Log Viewer||09 Jun 2018|
|Sharpen The Saw #37||04 Jun 2018|
|Converting projects to new csproj||02 Jun 2018|
|Avoid hardcoded wait times||26 May 2018|
|Sharpen The Saw #36||21 May 2018|
|Guaranteed Progression||19 May 2018|
|Always fix it twice||12 May 2018|
|Even longer than that||05 May 2018|
|Sharpen The Saw #35||30 Apr 2018|