Skip to content

AdrianStrugala/SolTechnology.Core

Repository files navigation

SolTechnology-logo

SolTechnology.Core

Modern readable coding

"Clean code is simple and direct. Clean code reads like well-written prose. Clean code never obscures the designer's intent but rather is full of crisp abstractions and straightforward lines of control."

~Grady Booch, author of 'Object-Oriented Analysis and Design with Applications'

Core Libraries

The SolTechnology.Core repository contains a set of shared libraries. This is a foundation for CQRS-driven applications using basic Azure technologies. The libraries support a modern coding approach presented in the example applications.

Documentation Tags NuGet
API API, Web, Controllers
HTTP Clients HTTP, Client, REST
AUID GUID, UUID, ID, Identifier
Authentication Auth, Security, Basic, API key
Blob Storage Azure, Blob, Storage, no-SQL
Cache Cache, Memory, Performance
CQRS CQRS, Patterns, Architecture
Story Framework Workflow, Interactive, Tale Code
Guards Validation, Guards, Checks
Logging Logging, Diagnostics, Tracing
Message Bus Azure, Messaging, Async, Queue
Scheduler Scheduler, Cron, Tasks
SQL Database Database, SQL, ORM, Dapper, EF

Tale Code

The idea of clean and readable code has stayed with me from the very beginning of my career. As a book lover and amateur writer, this is the most natural part of programming.
In the Tale Code approach, I am trying to summarize all the information about coding, design, automation, and configuration that I have learned over the years. The Tale Code rule is simple:

"Make your code a pleasure to read, like a tale."

~Adrian Aleksander Strugała

The sample application is the most common case that came to my mind. It's built of a user-facing API and a background worker responsible for fetching data and feeding the SQL database. The communication between these two is asynchronous and based on messages, as shown in the picture:

design

Code design is the main goal of Tale Code. Logical flow and code structure are described in detail, and it reads like a well-written story:

public class CalculateBestPathStory : StoryHandler<Input, Context, Output>
{
    protected override async Task TellStory()
    {
        await ReadChapter<DownloadRoadDataChapter>();
        await ReadChapter<FindProfitablePathChapter>();
        await ReadChapter<SolveTspChapter>();
        await ReadChapter<FormResultChapter>();

        context.Output.BestPath = context.OptimalRoute;
    }
}

I have summarized the knowledge and decisions into three chapters.
Enjoy your reading!

1. The Design
2. The Automation
3. The Quality

Some ending words

About

Modern redable coding - TaleCode foundation

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors