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. Other Discussions
  3. The Weird and The Wonderful
  4. Enums are for wimps

Enums are for wimps

Scheduled Pinned Locked Moved The Weird and The Wonderful
tutorial
15 Posts 12 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.
  • D David ONeil

    Bernhard Hiller wrote:

    But his code is superior...

    Oh. You are talking about the case that returns '3'. Properly formatted for optimal parsing: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :^) :^) :^) :^) :^) :^) :^) :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :^) :^) :^) :^) :^) :^) :^) :^) :^) :rolleyes: :rolleyes: :rolleyes: :rolleyes: :^) :^) :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :^) :^) :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :^) :^) :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :^) :^) :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :^) :^) :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :^) :^) :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :^) :^) :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :^) :^) :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :^) :^) :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :^) :^) :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :^) :^) :rolleyes: :rolleyes: :rolleyes: :rolleyes: :^) :^) :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :^) :^) :rolleyes: :rolleyes: :rolleyes: :rolleyes: :^) :^) :^) :^) :^) :^) :^) :^) :^) :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :^) :^) :^) :^) :^) :^) :^) :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes:

    D Offline
    D Offline
    Daniel Pfeffer
    wrote on last edited by
    #4

    Please use some other display method. As an engineer, I am "expression-blind" :sigh: (see [Engineers are cold and dead inside](https://www.codeproject.com/Messages/5364557/Engineers-are-cold-and-dead-inside.aspx))

    If you have an important point to make, don't try to be subtle or clever. Use a pile driver. Hit the point once. Then come back and hit it again. Then hit it a third time - a tremendous whack. --Winston Churchill

    D 1 Reply Last reply
    0
    • B Bernhard Hiller

      Once upon a time, the concept of enumeration had not yet been invented. Instead, you had to use long lists of const definitions mapping some name to some int. So I found a colleague writing code like:

      private int DecodeElementType(string elementName)
      {
      switch (elementName)
      {
      case "Blah": return 1;
      case "Blub": return 2;
      case "Hmpf": return 3;
      case "Grml": return 4;
      case "Tralala": return 5;
      default: return 0; // unknown
      }
      }

      I asked him if he knew what an enum is, and how to use Enum.Parse / Enum.TryParse. He said he knew that. But his code is superior...

      P Offline
      P Offline
      PeejayAdams
      wrote on last edited by
      #5

      Bernhard Hiller wrote:

      He said he knew that.

      If I were a betting man (and I am), I would wager my house that he did not know that.

      Slogans aren't solutions.

      1 Reply Last reply
      0
      • B Bernhard Hiller

        Once upon a time, the concept of enumeration had not yet been invented. Instead, you had to use long lists of const definitions mapping some name to some int. So I found a colleague writing code like:

        private int DecodeElementType(string elementName)
        {
        switch (elementName)
        {
        case "Blah": return 1;
        case "Blub": return 2;
        case "Hmpf": return 3;
        case "Grml": return 4;
        case "Tralala": return 5;
        default: return 0; // unknown
        }
        }

        I asked him if he knew what an enum is, and how to use Enum.Parse / Enum.TryParse. He said he knew that. But his code is superior...

        D Offline
        D Offline
        den2k88
        wrote on last edited by
        #6

        Implicit enums are ever worse.

        public enum Implicit
        AA_0
        BB_1
        CC_2
        DD_3
        EE_4
        GG_6
        HH_22
        II_7
        LL_17
        ...
        end enum

        Guess what value did HH_22 have? And GG_6? BTW the numbers in the end are useful since this enum maps fixed alarm codes that come from a PLC. The only reason the code worked was because the same creator of this enum didn't use its values but used magic numbers all over the code. Half a day hunting for a bug because alarm 31 never matched with '== XX_31'. XX_31 equalled 30.

        * CALL APOGEE, SAY AARDWOLF * GCS d--- s-/++ a- C++++ U+++ P- L- E-- W++ N++ o+ K- w+++ O? M-- V? PS+ PE- Y+ PGP t++ 5? X R++ tv-- b+ DI+++ D++ G e++>+++ h--- ++>+++ y+++*      Weapons extension: ma- k++ F+2 X * Never pay more than 20 bucks for a computer game. * I'm a puny punmaker.

        J 1 Reply Last reply
        0
        • D Daniel Pfeffer

          Please use some other display method. As an engineer, I am "expression-blind" :sigh: (see [Engineers are cold and dead inside](https://www.codeproject.com/Messages/5364557/Engineers-are-cold-and-dead-inside.aspx))

          If you have an important point to make, don't try to be subtle or clever. Use a pile driver. Hit the point once. Then come back and hit it again. Then hit it a third time - a tremendous whack. --Winston Churchill

          D Offline
          D Offline
          David ONeil
          wrote on last edited by
          #7

          :laugh:

          Sudden Sun Death Syndrome (SSDS) is a very real concern which we should be raising awareness of. 156 billion suns die every year before they're just 1 billion years old. While the military are doing their part, it simply isn't enough to make the amount of nukes needed to save those poor stars. - TWI2T3D (Reddit)

          1 Reply Last reply
          0
          • D den2k88

            Implicit enums are ever worse.

            public enum Implicit
            AA_0
            BB_1
            CC_2
            DD_3
            EE_4
            GG_6
            HH_22
            II_7
            LL_17
            ...
            end enum

            Guess what value did HH_22 have? And GG_6? BTW the numbers in the end are useful since this enum maps fixed alarm codes that come from a PLC. The only reason the code worked was because the same creator of this enum didn't use its values but used magic numbers all over the code. Half a day hunting for a bug because alarm 31 never matched with '== XX_31'. XX_31 equalled 30.

            * CALL APOGEE, SAY AARDWOLF * GCS d--- s-/++ a- C++++ U+++ P- L- E-- W++ N++ o+ K- w+++ O? M-- V? PS+ PE- Y+ PGP t++ 5? X R++ tv-- b+ DI+++ D++ G e++>+++ h--- ++>+++ y+++*      Weapons extension: ma- k++ F+2 X * Never pay more than 20 bucks for a computer game. * I'm a puny punmaker.

            J Offline
            J Offline
            Jon McKee
            wrote on last edited by
            #8

            Sounds like a case of the wrong tool for the job. Implicit enums are great for representing a fixed set of ideas/behavior (like flags) that isn't mapped to specific values. If you need a fixed set mapped to specific values use explicit enums :doh:

            D 1 Reply Last reply
            0
            • J Jon McKee

              Sounds like a case of the wrong tool for the job. Implicit enums are great for representing a fixed set of ideas/behavior (like flags) that isn't mapped to specific values. If you need a fixed set mapped to specific values use explicit enums :doh:

              D Offline
              D Offline
              den2k88
              wrote on last edited by
              #9

              Precisely. Even if I'm used to always explicit the enums - mainly because I work with a system that has a lot of marshalling and communications between different paradigms so more often than not I end up having to fix those values sooner or later.

              * CALL APOGEE, SAY AARDWOLF * GCS d--- s-/++ a- C++++ U+++ P- L- E-- W++ N++ o+ K- w+++ O? M-- V? PS+ PE- Y+ PGP t++ 5? X R++ tv-- b+ DI+++ D++ G e++>+++ h--- ++>+++ y+++*      Weapons extension: ma- k++ F+2 X * Never pay more than 20 bucks for a computer game. * I'm a puny punmaker.

              1 Reply Last reply
              0
              • P Pete OHanlon

                Sooooo, when I pass in TRalala to his code, it's still going to be superior. :rolleyes:

                This space for rent

                B Offline
                B Offline
                Bruce Patin
                wrote on last edited by
                #10

                You're going to get 0, unless you mean "Tralala".

                1 Reply Last reply
                0
                • B Bernhard Hiller

                  Once upon a time, the concept of enumeration had not yet been invented. Instead, you had to use long lists of const definitions mapping some name to some int. So I found a colleague writing code like:

                  private int DecodeElementType(string elementName)
                  {
                  switch (elementName)
                  {
                  case "Blah": return 1;
                  case "Blub": return 2;
                  case "Hmpf": return 3;
                  case "Grml": return 4;
                  case "Tralala": return 5;
                  default: return 0; // unknown
                  }
                  }

                  I asked him if he knew what an enum is, and how to use Enum.Parse / Enum.TryParse. He said he knew that. But his code is superior...

                  L Offline
                  L Offline
                  Leng Vang
                  wrote on last edited by
                  #11

                  My guess, he didn't know. Self-tough programming. What so superior about coding manually. The point of using enumeration is to allow the compiler to check for potential human errors. Tell him to go back to school.

                  L 1 Reply Last reply
                  0
                  • L Leng Vang

                    My guess, he didn't know. Self-tough programming. What so superior about coding manually. The point of using enumeration is to allow the compiler to check for potential human errors. Tell him to go back to school.

                    L Offline
                    L Offline
                    Lost User
                    wrote on last edited by
                    #12

                    I'd guess he did learn to code in school. Meaning he had coding courses, learned nothing (as usual, because those courses invariable suck), and then assumed he would not need learn any further.

                    1 Reply Last reply
                    0
                    • B Bernhard Hiller

                      Once upon a time, the concept of enumeration had not yet been invented. Instead, you had to use long lists of const definitions mapping some name to some int. So I found a colleague writing code like:

                      private int DecodeElementType(string elementName)
                      {
                      switch (elementName)
                      {
                      case "Blah": return 1;
                      case "Blub": return 2;
                      case "Hmpf": return 3;
                      case "Grml": return 4;
                      case "Tralala": return 5;
                      default: return 0; // unknown
                      }
                      }

                      I asked him if he knew what an enum is, and how to use Enum.Parse / Enum.TryParse. He said he knew that. But his code is superior...

                      M Offline
                      M Offline
                      Munchies_Matt
                      wrote on last edited by
                      #13

                      Whats the language that can use a string in a switch statement?

                      B 1 Reply Last reply
                      0
                      • M Munchies_Matt

                        Whats the language that can use a string in a switch statement?

                        B Offline
                        B Offline
                        Brisingr Aerowing
                        wrote on last edited by
                        #14

                        I think the snippet is in C#, which does allow that.

                        What do you get when you cross a joke with a rhetorical question? The metaphorical solid rear-end expulsions have impacted the metaphorical motorized bladed rotating air movement mechanism. Do questions with multiple question marks annoy you???

                        M 1 Reply Last reply
                        0
                        • B Brisingr Aerowing

                          I think the snippet is in C#, which does allow that.

                          What do you get when you cross a joke with a rhetorical question? The metaphorical solid rear-end expulsions have impacted the metaphorical motorized bladed rotating air movement mechanism. Do questions with multiple question marks annoy you???

                          M Offline
                          M Offline
                          Munchies_Matt
                          wrote on last edited by
                          #15

                          OK, makes sense. C++ allows for a lot of this kind of thing through operator overloading, though I tend to be a pure C programmer, and I like the level of clunky direct control you have of the code with C. :)

                          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