cs-util-com / cscore

cscore is a minimal-footprint library providing commonly used helpers & patterns for your C# projects. It can be used in both pure C# and Unity projects.
https://cs-util-com.github.io/cscore/
Apache License 2.0
178 stars 31 forks source link

Update README.md to include all latest features #124

Open cs-util opened 5 months ago

cs-util commented 5 months ago

Improve the https://github.com/cs-util-com/cscore/blob/master/README.md to include more of the features of cscore. The readme was not updated regularly with all the new features, only the unit tests that serve also as usage examples are still up to date, so reviewing all tests and adding the relevant/interesting features that are still missing in the readme would be a good idea to give the reader a quick and easy overview on what is available.

Here are all usage examples how to use the pure C# components (that can be used in any C# project and in Unity): https://github.com/cs-util-com/cscore/tree/master/CsCore/xUnitTests/src/Plugins/CsCoreXUnitTests/com/csutil/tests

And here are Unity specific examples / demo scenes on the components that can be used only in Unity: https://github.com/cs-util-com/cscore/tree/master/CsCore/UnityTests/Assets/Plugins/CsCoreUnityDemoScenes

Also include the info that the xunit tests are now split in a "tests" namespace and an "integrationTests" namespace:

cs-util commented 5 months ago

And when reading the intro of the readme I think it sounds a bit too cocky and too blabla, could probably be written a bit shorter/to the point what the core idea of the library is:

Fewer 3rd party libraries and dependencies included in a project means fewer code and complexity which in the end leads to less bugs. On the other hand having zero dependencies very likely means that a few fundamental concepts and patterns you will have to implement over and over for each new project. This repo tries to provide a single source for a few simple to extend features to make sure these work great together and build up on each other. Some things like logging, communication of components, dependency and state management, easy to use IO and similar fundamental challenges in software are things all applications benefit from.

This is why I think it makes sense to put this into a single compact core library with great test coverage and great documentation. And these two can go hand in hand, well written tests can serve as a easy to understand documentation + usage examples, which automatically stay up to date since they have to change with the code over time. That's how the unit tests in this project ensure all features are well tested and documented. See below for some extracts from these tests. To ensure full test coverage mutation testing is used (thanks to Stryker!)

All components are loosly coupled so that components can be used individually when needed without deep knowledge about the full cscore library required.

Maybe something like this:

This repo provides a single source for a collection of independent, simple to extend features that are commonly needed. Some things like logging, communication of components, dependency and state management, easy to use IO are included with a focus on simple usage and quality.

The goal is to put such components into a single compact core library with high test coverage and easy to follow documentation. And these two can go hand in hand, easy to follow tests can serve at the same time as the documentation + usage examples and this approach automatically ensures the documentation stays up to date, since the tests have to change with the code over time. That's how the unit tests in this project ensure all features are well tested and documented. See below for some extracts from these tests. To ensure full test coverage mutation testing is used (thanks to Stryker!)

All components are loosely coupled so that components can be used individually when needed without deep knowledge about the entire cscore library.