Code Monkey home page Code Monkey logo

sharpener's People

Contributors

ryan-singleton avatar

Stargazers

 avatar  avatar  avatar

sharpener's Issues

Apply Code Style Enforcement

Even though I'm writing this in VSCode, need to run code cleanup in either VS 2022 or Rider (If I can get a license). Get the code standardized.

Add a benchmarks project

It'd be good to have comparisons of the AsList, AsArray and string based NoCase, Current, etc. in performance as compared to how the stock method of writing these operations would perform.

Small perf hits are expected, but it'd be good to have eyes on it.

Refactor project for modularity and release

The current project setup is decent, but it can be better before release (when structure will be less malleable).

project structure

  • src
    • Sharpener (referenced by all)
    • Sharpener.Json
    • Sharpener.NewtonsoftJson
    • Sharpener.Http
  • test
    • Sharpener.Tests
    • Sharpener.Json.Tests
    • Sharpener.NewtonsoftJson.Tests
    • Sharpener.Http.Tests
    • benchmarks
      • Sharpener.Benchmarks
      • Sharpener.Json.Benchmarks
      • Sharpener.NewtonsoftJson.Benchmarks
      • Sharpener.Http.Benchmarks

tasks

  • Create icon/branding for repository
  • Create simple home markdown with concise demonstrations
  • Link out to documents with more elaborate information
  • Create new markdowns
    • CONTRIBUTING
      • code style
      • dotnet format
      • csproj file requirements
    • README (revised)
    • ROADMAP
    • CHANGELOG
    • COLLECTION_FEATURES(docs)
    • STRING_FEATURES(docs)
    • SERIALIZATION FEATURES(docs)
    • BENCHMARKS (revised)(docs)

investigate list join logic possibilities

Sure, you can do this

var results = workOrders.Join(plans,
  wo => wo.WorkOrderNumber,
  p => p.WorkOrderNumber,
  (order,plan) => new {order.WorkOrderNumber, order.WorkDescription, plan.ScheduledDate}
);

But I know that I personally just end up using

var query = from order in workOrders
            join plan in plans
                 on order.WorkOrderNumber equals plan.WorkOrderNumber
            select new
            {
                order.WorkOrderNumber,
                order.Description,
                plan.ScheduledDate
            };

And I'm curious if a linq syntax could be made that feels more like query syntax. For example:

var results = workOrders.Join(plans)
    .On(((order, plan) => order.WorkOrderNumber == plan.WorkOrderNumber)
// DefaultIfEmpty() type choices here
    .Select((order, plan) => new {order.WorkOrderNumber, order.WorkDescription, plan.ScheduledDate});

Fulfill test coverage

I'm not going to require a code coverage percentage, but it's fairly certain that a more parameterized and well designed test matrix can be written for the string comparison ops.

Revise accessibility on classes

Make sure we're using "internal" where needed and "sealed" for performance gains and security.

Add InternalsVisibleTo to the main project too.

Redundancy in the Rest Test project

The Sharpener.Rest.Tests project was unable to finish a build while using the Sharpener.Tests.Common project. It couldn't resolve the namespace.

Could not duplicate the issue locally. But at the moment, this project is not following suit. Tech debt waiting to happen. Either figure out what the build issue was, or opt to allow individual test projects to resolve packages with CPM.

JSON default registration more lambda friendly

Json writer/reader registrations require new classes implementing interfaces, which is a safe and common practice in c#. But we should explore the possibility of setting default behaviors via lambda functions instead so that users of the library might be able to avoid the need to make a new class in their projects vs a quick one-line register of a lambda.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.