Coder Social home page Coder Social logo

Comments (2)

aevitas avatar aevitas commented on July 26, 2024

Definitely see your point - what you suggest is also in line with the C# programming guidelines on that properties should always be safe to get, i.e. they are more similar to accessing a field than invoking a method.

Vladimir Khorikov's implementation in CSharpFunctionalExtensions takes this approach, but I found that more often than not, I don't actually have an action for the None() case. I do see how it would be safer to just invoke () => {} at runtime than throwing an InvalidOperationException just because some behaviour didn't net a value.

What do you typically provide for the empty value case in a Match call?

from cleantickets.

megasuperlexa avatar megasuperlexa commented on July 26, 2024

Depending on situation, e.g. the code here

return result.HasValue ? Results.Ok(result.Value) : Results.NotFound();

could be:
return result.Match( success => Results.Ok(success), () => Results.NotFound();

But overall, this functional monadic stuff makes the whole codebase non-idiomatic, odd-looking and therefore hard to follow for ordinary C# people.
So instead of Maybe I would just use the standard C# language feature of Nullable reference types. What I typically do is turn them on as errors in the very beginning of a new project:

    <Nullable>enable</Nullable>
    <WarningsAsErrors>Nullable</WarningsAsErrors>

they're not without their issues, but are useful in the long run.

from cleantickets.

Related Issues (1)

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.