Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. The Lounge
  3. Need a good name for an extension method

Need a good name for an extension method

Scheduled Pinned Locked Moved The Lounge
pythoncomquestionlearning
42 Posts 18 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M Marc Clifton

    A basic extension method to implement min (yes, I know there's Math.Min, but I want a fluent implementation, so just go with it):

    public static int Min(this int a, int max)
    {
    return (a > max) ? max : a;
    }

    But what would be a good name for this (which I've tentatively named "MinDelta":

    public static int MinDelta(this int a, int delta)
    {
    return a > a + delta ? a + delta : a;
    }

    Suggestions? Humor? Marc

    V.A.P.O.R.ware - Visual Assisted Programming / Organizational Representation Learning to code with python is like learning to swim with those little arm floaties. It gives you undeserved confidence and will eventually drown you. - DangerBunny Artificial intelligence is the only remedy for natural stupidity. - CDP1802

    B Offline
    B Offline
    BillWoodruff
    wrote on last edited by
    #41

    namespace CliftoniusMagnus
    {
    public enum Int32CompareResult
    {
    Equal,
    LessThan,
    GreaterThan
    }

    public static class Int32Extensions
    {
        public static int I32Min(this int i, int limit)
        {
            return I32Compare(i, limit) == Int32CompareResult.LessThan
                ? i
                : limit;
        }
    
        public static int I32PlusDeltaMin(this int i, int delta)
        {
            return I32Min(i, i + delta);
        }
    
        public static Int32CompareResult I32Compare(this int i1, int i2)
        {
            return i1 == i2 
                ? Int32CompareResult.Equal
                : i1 < 12
                    ? Int32CompareResult.LessThan
                    : Int32CompareResult.GreaterThan;
        }
    }
    

    }

    The style here reflects my preference (ghost of Simonyi ?) for making "Type and Intent" salient at all times, and ... whenever possible ... writing functions that are multi-purpose. However, I'd only write such functions if I anticipated I might have a need to add some functionality to them; otherwise, they're just duplicating functions in .Math. And, yes, this style is not spicy. cheers, Bill

    «There is a spectrum, from "clearly desirable behaviour," to "possibly dodgy behavior that still makes some sense," to "clearly undesirable behavior." We try to make the latter into warnings or, better, errors. But stuff that is in the middle category you don’t want to restrict unless there is a clear way to work around it.» Eric Lippert, May 14, 2008

    1 Reply Last reply
    0
    • M Marc Clifton

      A basic extension method to implement min (yes, I know there's Math.Min, but I want a fluent implementation, so just go with it):

      public static int Min(this int a, int max)
      {
      return (a > max) ? max : a;
      }

      But what would be a good name for this (which I've tentatively named "MinDelta":

      public static int MinDelta(this int a, int delta)
      {
      return a > a + delta ? a + delta : a;
      }

      Suggestions? Humor? Marc

      V.A.P.O.R.ware - Visual Assisted Programming / Organizational Representation Learning to code with python is like learning to swim with those little arm floaties. It gives you undeserved confidence and will eventually drown you. - DangerBunny Artificial intelligence is the only remedy for natural stupidity. - CDP1802

      B Offline
      B Offline
      BillWoodruff
      wrote on last edited by
      #42

      Hi, Marc, I am a little wary of extension methods on 'Int32 because of compiler error #CS0023

      caused by an attempt to use/call the method on a negative integer; while this can be worked around by putting the negative value in parens; I find that tedious.

      var x = -100.SomeExtension(10); // will not compile
      var y = (-100).SomeExtension(10); // will compile
      var z = 100.SomeExtension(10); // will compile

      I regret to say this same error occurs in VS 2017, using the latest FrameWork version.

      I assume this is an operator execution precedence issue ?

      I have not evaluated whether this error occurs with other numeric Types; I hypothesize it will.

      cheers, Bill

      «There is a spectrum, from "clearly desirable behaviour," to "possibly dodgy behavior that still makes some sense," to "clearly undesirable behavior." We try to make the latter into warnings or, better, errors. But stuff that is in the middle category you don’t want to restrict unless there is a clear way to work around it.» Eric Lippert, May 14, 2008

      1 Reply Last reply
      0
      Reply
      • Reply as topic
      Log in to reply
      • Oldest to Newest
      • Newest to Oldest
      • Most Votes


      • Login

      • Don't have an account? Register

      • Login or register to search.
      • First post
        Last post
      0
      • Categories
      • Recent
      • Tags
      • Popular
      • World
      • Users
      • Groups