Domain-Driven Refactoring - Jimmy Bogard - NDC London 2022
Books, workshops, storming and more, all build up an idealized domain model. All describe great techniques for domain-driven greenfield applications. But what about the code we have? How can we take what's already built, and move it towards a better, more cohesive design?
In this session, we'll look at anemic, procedural, boring code and examine code smells that can point us in the right direction. We'll also look at standard design patterns for more complex behaviors and models, and how to recognize when (and when not) to apply them. Finally, we'll cover how to safely apply refactoring techniques to achieve our domain-driven model nirvana.
معرفی سایت construx.vueocity.com
1.30 Visual Studio Code منتشر شد
Welcome to the November 2018 release of Visual Studio Code. There are a number of significant updates in this version that we hope you will like, some of the key highlights include:
- Multiline search improvements - Easily create multiline search patterns without using regex.
- Custom title bar on Linux - The custom title and menu bar is now the default on Linux.
- References view - Find All References view includes history of recent searches.
- Snippet comment variables - Snippet variables insert correct comment per language.
- JS/TS callback display - Now you can see the context of anonymous callbacks.
- JSDoc Markdown highlighting - Including syntax highlighting for Markdown code blocks in JSDoc.
- Simplified debug configuration - Better defaults and Quick Pick UI for initial launch configuration.
- Run tasks on folder open - Configure tasks to run when you first open a project folder.
- Choose extension version - Install earlier versions of Marketplace extensions.
کنفرانس NET Fringe 2017.
Sean Killeen - Casting a Wider .NET: OSS Maturity in the .NET Community
Caitie McAffery - Distributed Sagas: A Protocol for Coordinating Microservices
Jeremy Bellows - Neuroevolution
Bobby Johnson - Zero to Sixty with DotNetCoreKoans
Ted Neward - Polytechnical Careering
Jasmine Greenaway - Climbing trees with UI Automation
Natallia Dzenisenka - Parallel Programming with F# and Hopac
Deren Liao - gRPC: Efficient RPC framework for .NET microservices
Alistair Champan - Using Docker to supercharge .NET development on Linux
Mikayla Hutchinson - Mono: Today and Tomorrow
Kent Bye - VR & AR: Design Patterns for the Experiential Age
Sara Ford - The Psychology of Developer Tool Usability
Immo Landworth - .NET Standard for Library Authors
Ken Egozi - Devil's Advocate
Sergey Bykov - Orleans: Rails for the Cloud
Andreia Gaita - C# in Games
Karel Zikmund - Challenges of Managing CoreFX Repo
Jeremy Abbott - Productive Web Applications (F#)
- https://blog.greglow.com/2018/02/12/sql-design-entity-attribute-value-tables-part-1/
- https://blog.greglow.com/2018/02/19/sql-design-entity-attribute-value-tables-part-2-pros-cons/
- https://ekobit.com/blog/designing-an-entity-attribute-value-model-with-ef-core/
- https://sqlblog.org/2009/11/19/what-is-so-bad-about-eav-anyway
- https://modern-sql.com/use-case/pivot
- https://mariadb.com/kb/en/entity-attribute-value-implementation/
- https://vladmihalcea.com/how-to-store-schema-less-eav-entity-attribute-value-data-using-json-and-hibernate/
- https://www.2ndquadrant.com/en/blog/postgresql-anti-patterns-unnecessary-jsonhstore-dynamic-columns/
- https://coussej.github.io/2016/01/14/Replacing-EAV-with-JSONB-in-PostgreSQL/
- https://davidlaprade.github.io/storing-arbitrary-model-attributes
- https://inviqa.com/blog/understanding-eav-data-model-and-when-use-it
- https://mikesmithers.wordpress.com/2013/12/22/the-anti-pattern-eavil-database-design/
- http://duhallowgreygeek.com/entity-attribute-value-eav-model-sql-smell/
معرفی List Patterns Matching در C# 11
var data = "item1|item2|item3"; var collection = data.Split('|');
var formattedDataBefore = collection.Length switch { 2 => FormatData(collection[0], collection[1]), 3 => FormatData(collection[0], collection[1], collection[2]), var length => throw new InvalidOperationException($"Expected 3 parts, but got {length} parts for formatted string: {data}."), };
var formattedDataAfter = collection switch { [var part1, var part2] => FormatData(part1, part2), [var part1, var part2, var part3] => FormatData(part1, part2, part3), var parts => throw new InvalidOperationException($"Expected 3 parts, but got {parts.Length} parts for formatted string: {data}."), };
نمونهی دیگر این دسترسیهای بر اساس ایندکسها، مثال زیر است. در اینجا ساختار شیء Song به صورت زیر تعریف شدهاست:
public class Song { public string Name { get; set; } public List<string> Lyrics { get; set; } }
for (var i = 0; i < songs.Count; i++) { if (songs[i].Lyrics[0] == "Hello" && songs[i].Lyrics.Count == 6 && songs[i].Lyrics[songs[i].Lyrics.Count - 1] == "?") { Console.WriteLine($"{i}"); } }
for (var i = 0; i < songs.Count; i++) { if (songs[i].Lyrics is ["Hello", _, _, _, _, "?"]) { Console.WriteLine($"{i}"); } }
foreach (Song song in songs) { if (song.Lyrics is ["Hello", .., "?"]) { Console.WriteLine(song.Name); } }
foreach (Song song in songs) { if (song.Lyrics is ["Hello", "from" or "is", var third, var forth, var fifth]) { Console.WriteLine(song.Name); Console.WriteLine($"The third word is : {third}"); Console.WriteLine($"The forth word is : {forth}"); Console.WriteLine($"The fifth word is : {fifth}"); } }
تزریق خودکار وابستگیها در برنامههای ASP.NET MVC
- محل فراخوانی و معرفی آن مهم است که در بحث هم ذکر شده: Application_Start