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. How would you code it?

How would you code it?

Scheduled Pinned Locked Moved The Lounge
csharpcsshelpquestion
59 Posts 15 Posters 1 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.
  • A Andy Brummer

    Al Beback wrote:

    I guess it's a matter of opinion, but I find those curly place holders ugly.

    Coding in C# and thinking curly braces are ugly? :laugh:

    Al Beback wrote:

    You have to start matching the index number with the location inside the Format statement.

    Once that becomes an issue, I think you've really just reached the point where you just have complex output requirements. At that point I have trouble putting the output all together in my mind, so it gets to be just as much of a pain to update. Sometimes I'm more in the mood that day to use format strings other times I'll just munge the strings together.


    This blanket smells like ham

    P Offline
    P Offline
    PIEBALDconsult
    wrote on last edited by
    #16

    Andy Brummer wrote:

    Coding in C# and thinking curly braces are ugly?

    Well, in the other uses of braces one could employ the C preprocessor and define begin and end appropriately, but that won't work in a string. :-D I still find the .net way preferable to the C way.

    1 Reply Last reply
    0
    • S Shog9 0

      I use #1 almost exclusively. Why? Because #1 gives me a good idea at first-glance of how the end-result will be structured. value-space-value-!-space-Today is-space-formatted value. And yeah, there's a bug, which will show up the first time this code actually runs if no one sees it sooner - so it's really only an issue if no-one will ever test the code. #2 i find exceedingly tedious to mentally parse into an idea of what the result will look like. For performance, i'll just go with a StringBuilder or some such thing.


      Last modified: 6mins after originally posted -- See how easy index errors are to catch at runtime? ;P

      every night, i kneel at the foot of my bed and thank the Great Overseeing Politicians for protecting my freedoms by reducing their number, as if they were deer in a state park. -- Chris Losinger, Online Poker Players?

      P Offline
      P Offline
      PIEBALDconsult
      wrote on last edited by
      #17

      Shog9 wrote:

      Because #2 gives

      I think you mean #1. #2 is, well... #2 :-D

      S 1 Reply Last reply
      0
      • P PIEBALDconsult

        Shog9 wrote:

        Because #2 gives

        I think you mean #1. #2 is, well... #2 :-D

        S Offline
        S Offline
        Shog9 0
        wrote on last edited by
        #18

        Corrected. Obviously this is the problem with using literal index values... :rolleyes:

        every night, i kneel at the foot of my bed and thank the Great Overseeing Politicians for protecting my freedoms by reducing their number, as if they were deer in a state park. -- Chris Losinger, Online Poker Players?

        P 1 Reply Last reply
        0
        • A Al Beback

          malharone wrote:

          Localization: it's easier to put the Format string in your RESX file and depending upon the locale, one can re-order the "{xx}".

          That's the only compelling reason I have for using string.Format.


          Man is a marvelous curiosity ... he thinks he is the Creator's pet ... he even believes the Creator loves him; has a passion for him; sits up nights to admire him; yes and watch over him and keep him out of trouble. He prays to him and thinks He listens. Isn't it a quaint idea. - Mark Twain

          D Offline
          D Offline
          Dave Kreskowiak
          wrote on last edited by
          #19

          Have you seen the crap concatenated by the newbies when they "build" their SQL statements?? That stuff isn't easy to read and it's a bitch to debug, hence they post it here wondering why it doesn't work.

          A guide to posting questions on CodeProject[^]
          Dave Kreskowiak Microsoft MVP Visual Developer - Visual Basic
               2006, 2007

          1 Reply Last reply
          0
          • S Shog9 0

            I use #1 almost exclusively. Why? Because #1 gives me a good idea at first-glance of how the end-result will be structured. value-space-value-!-space-Today is-space-formatted value. And yeah, there's a bug, which will show up the first time this code actually runs if no one sees it sooner - so it's really only an issue if no-one will ever test the code. #2 i find exceedingly tedious to mentally parse into an idea of what the result will look like. For performance, i'll just go with a StringBuilder or some such thing.


            Last modified: 6mins after originally posted -- See how easy index errors are to catch at runtime? ;P

            every night, i kneel at the foot of my bed and thank the Great Overseeing Politicians for protecting my freedoms by reducing their number, as if they were deer in a state park. -- Chris Losinger, Online Poker Players?

            A Offline
            A Offline
            Al Beback
            wrote on last edited by
            #20

            Shog9 wrote:

            Why? Because #2 gives me a good idea ...

            Don't you mean #1?

            Shog9 wrote:

            #2 i find exceedingly tedious to mentally parse into an idea of what the result will look like.

            I have the same opinion of #1. I have to mentally keep substituting the placeholders for their corresponding values. The more of those there are, the more difficult to visualize. With #2 the values are already neatly layed out in their proper place.


            Man is a marvelous curiosity ... he thinks he is the Creator's pet ... he even believes the Creator loves him; has a passion for him; sits up nights to admire him; yes and watch over him and keep him out of trouble. He prays to him and thinks He listens. Isn't it a quaint idea. - Mark Twain

            S P P 3 Replies Last reply
            0
            • M malharone

              Big Daddy Farang wrote:

              I think he's fishing for "5" votes.

              In that case, he'd asked for "vote 5 for option 1. vote 5 for option 2" !. - MS

              A Offline
              A Offline
              Al Beback
              wrote on last edited by
              #21

              malharone wrote:

              In that case, he'd asked for "vote 5 for option 1. vote 5 for option 2" !.

              I'm actually a bit surprised. I was hoping more people would see things my way. :-)


              Man is a marvelous curiosity ... he thinks he is the Creator's pet ... he even believes the Creator loves him; has a passion for him; sits up nights to admire him; yes and watch over him and keep him out of trouble. He prays to him and thinks He listens. Isn't it a quaint idea. - Mark Twain

              1 Reply Last reply
              0
              • S Shog9 0

                Corrected. Obviously this is the problem with using literal index values... :rolleyes:

                every night, i kneel at the foot of my bed and thank the Great Overseeing Politicians for protecting my freedoms by reducing their number, as if they were deer in a state park. -- Chris Losinger, Online Poker Players?

                P Offline
                P Offline
                PIEBALDconsult
                wrote on last edited by
                #22

                Yes, but next time you'll be more careful and a better writer because of it. :)

                S 1 Reply Last reply
                0
                • A Al Beback

                  Shog9 wrote:

                  Why? Because #2 gives me a good idea ...

                  Don't you mean #1?

                  Shog9 wrote:

                  #2 i find exceedingly tedious to mentally parse into an idea of what the result will look like.

                  I have the same opinion of #1. I have to mentally keep substituting the placeholders for their corresponding values. The more of those there are, the more difficult to visualize. With #2 the values are already neatly layed out in their proper place.


                  Man is a marvelous curiosity ... he thinks he is the Creator's pet ... he even believes the Creator loves him; has a passion for him; sits up nights to admire him; yes and watch over him and keep him out of trouble. He prays to him and thinks He listens. Isn't it a quaint idea. - Mark Twain

                  S Offline
                  S Offline
                  Shog9 0
                  wrote on last edited by
                  #23

                  Al Beback wrote:

                  I have to mentally keep substituting the placeholders for their corresponding values.

                  You have to do that both ways. The difference is, #1 just gives you a tiny little "this is a placeholder" mark, while #2 uses the full variable or expression (which is unlikely to be any closer in appearance to the actual result than #1's curly-brace marks, but takes up a whole lot more room. Not to mention requiring parens to separate non-string ops from string ops). Of course, it's a matter of preference - but i'm pretty set in my ways here; i use similar techniques for C++ and even JS, writing my own formatters when there's nothing suitable built-in. You have to do that both ways. The difference is, #1 just gives you a tiny little "this is a placeholder" mark, while #2 uses the full variable or expression**†**. Of course, it's a matter of preference - but i'm pretty set in my ways here; i use similar techniques for C++ and even JS, writing my own formatters when there's nothing suitable built-in. BTW - which of the above paragraphs do you prefer? ;P **†**which is unlikely to be any closer in appearance to the actual result than #1's curly-brace marks, but takes up a whole lot more room. Not to mention requiring parens to separate non-string ops from string ops.

                  every night, i kneel at the foot of my bed and thank the Great Overseeing Politicians for protecting my freedoms by reducing their number, as if they were deer in a state park. -- Chris Losinger, Online Poker Players?

                  A 1 Reply Last reply
                  0
                  • A Al Beback

                    Shog9 wrote:

                    Why? Because #2 gives me a good idea ...

                    Don't you mean #1?

                    Shog9 wrote:

                    #2 i find exceedingly tedious to mentally parse into an idea of what the result will look like.

                    I have the same opinion of #1. I have to mentally keep substituting the placeholders for their corresponding values. The more of those there are, the more difficult to visualize. With #2 the values are already neatly layed out in their proper place.


                    Man is a marvelous curiosity ... he thinks he is the Creator's pet ... he even believes the Creator loves him; has a passion for him; sits up nights to admire him; yes and watch over him and keep him out of trouble. He prays to him and thinks He listens. Isn't it a quaint idea. - Mark Twain

                    P Offline
                    P Offline
                    Pete OHanlon
                    wrote on last edited by
                    #24

                    What happens when it becomes hello + " " + value + " " + value2 + value + " " + item.Format("{0:D}") + hello;? Is that still easy to visualize and have you looked at the IL that this produces?

                    Deja View - the feeling that you've seen this post before.

                    P A 3 Replies Last reply
                    0
                    • P PIEBALDconsult

                      Yes, but next time you'll be more careful and a better writer because of it. :)

                      S Offline
                      S Offline
                      Shog9 0
                      wrote on last edited by
                      #25

                      Past experience sez otherwise... ;P

                      every night, i kneel at the foot of my bed and thank the Great Overseeing Politicians for protecting my freedoms by reducing their number, as if they were deer in a state park. -- Chris Losinger, Online Poker Players?

                      1 Reply Last reply
                      0
                      • A Al Beback

                        Shog9 wrote:

                        Why? Because #2 gives me a good idea ...

                        Don't you mean #1?

                        Shog9 wrote:

                        #2 i find exceedingly tedious to mentally parse into an idea of what the result will look like.

                        I have the same opinion of #1. I have to mentally keep substituting the placeholders for their corresponding values. The more of those there are, the more difficult to visualize. With #2 the values are already neatly layed out in their proper place.


                        Man is a marvelous curiosity ... he thinks he is the Creator's pet ... he even believes the Creator loves him; has a passion for him; sits up nights to admire him; yes and watch over him and keep him out of trouble. He prays to him and thinks He listens. Isn't it a quaint idea. - Mark Twain

                        P Offline
                        P Offline
                        PIEBALDconsult
                        wrote on last edited by
                        #26

                        Well, if/when you use a Console.WriteLine(), would you use the format string and parameters?

                        A 1 Reply Last reply
                        0
                        • A Al Beback

                          PIEBALDconsult wrote:

                          The first is more readable, less error-prone

                          My example demonstrates how it's not less error prone. It's easy to mess up the numbering, or to pass in more or less parameters than expected, or to pass them in the wrong order.


                          Man is a marvelous curiosity ... he thinks he is the Creator's pet ... he even believes the Creator loves him; has a passion for him; sits up nights to admire him; yes and watch over him and keep him out of trouble. He prays to him and thinks He listens. Isn't it a quaint idea. - Mark Twain

                          D Offline
                          D Offline
                          Dave Kreskowiak
                          wrote on last edited by
                          #27

                          I don't buy it. I just don't see how any variant of

                          Dim sqlUpdate As String = "UPDATE ls_orderitems SET OrderItemRetailPrice = '" & _
                          Trim(PartRetailPrice) & "', OrderItemSalePrice = '" & Trim(PartSalePrice) & _
                          "' WHERE OrderItemPartNum = '" & Trim(PartNum) & "', OrderItemSource = '" & _
                          Trim(PartSource) & "', OrderType = 'Ron Ayers MotorSports'"

                          can possibly be considered "easier to debug".

                          A guide to posting questions on CodeProject[^]
                          Dave Kreskowiak Microsoft MVP Visual Developer - Visual Basic
                               2006, 2007

                          P J A 3 Replies Last reply
                          0
                          • A Al Beback

                            Here's a simple code snippet (in C#):

                            string hello = "Hello";
                            string cp = "CP";
                            DateTime today = DateTime.Today;

                            // Desired result: "Hello CP! Today is Friday";

                            string option1 = string.Format("{0} {1}! Today is {3:dddd}", hello, cp, today);

                            string option2 = hello + " " + cp + "! Today is " + today.ToString("dddd");

                            Vote 1 if you prefer option1. Vote 5 if you prefer option2. I prefer option2 since it's 1. More readable 2. Less error-prone (note the subtle error in option1 which the compiler won't catch) 3. More efficient (no CPU cycles spent scanning the format string looking for matching curly braces). Cheers!


                            Man is a marvelous curiosity ... he thinks he is the Creator's pet ... he even believes the Creator loves him; has a passion for him; sits up nights to admire him; yes and watch over him and keep him out of trouble. He prays to him and thinks He listens. Isn't it a quaint idea. - Mark Twain

                            L Offline
                            L Offline
                            leppie
                            wrote on last edited by
                            #28

                            WWCND? ;P

                            **

                            xacc.ide-0.2.0.77 - now with C# 3.5 support and Navigation Bar!^
                            New xacc.ide release RSS feed^

                            **

                            A D 2 Replies Last reply
                            0
                            • D Dave Kreskowiak

                              I don't buy it. I just don't see how any variant of

                              Dim sqlUpdate As String = "UPDATE ls_orderitems SET OrderItemRetailPrice = '" & _
                              Trim(PartRetailPrice) & "', OrderItemSalePrice = '" & Trim(PartSalePrice) & _
                              "' WHERE OrderItemPartNum = '" & Trim(PartNum) & "', OrderItemSource = '" & _
                              Trim(PartSource) & "', OrderType = 'Ron Ayers MotorSports'"

                              can possibly be considered "easier to debug".

                              A guide to posting questions on CodeProject[^]
                              Dave Kreskowiak Microsoft MVP Visual Developer - Visual Basic
                                   2006, 2007

                              P Offline
                              P Offline
                              PIEBALDconsult
                              wrote on last edited by
                              #29

                              Oh, well for that you need parameters anyway.

                              D 1 Reply Last reply
                              0
                              • P Pete OHanlon

                                What happens when it becomes hello + " " + value + " " + value2 + value + " " + item.Format("{0:D}") + hello;? Is that still easy to visualize and have you looked at the IL that this produces?

                                Deja View - the feeling that you've seen this post before.

                                P Offline
                                P Offline
                                PIEBALDconsult
                                wrote on last edited by
                                #30

                                And don't forget ...value==null?"null":value.ToString()...

                                A 1 Reply Last reply
                                0
                                • P Pete OHanlon

                                  What happens when it becomes hello + " " + value + " " + value2 + value + " " + item.Format("{0:D}") + hello;? Is that still easy to visualize and have you looked at the IL that this produces?

                                  Deja View - the feeling that you've seen this post before.

                                  A Offline
                                  A Offline
                                  Al Beback
                                  wrote on last edited by
                                  #31

                                  Pete O`Hanlon wrote:

                                  What happens when it becomes hello + " " + value + " " + value2 + value + " " + item.Format("{0:D}") + hello;?

                                  I prefer it to string.Format("{0} {1} {2}{1} {3:D}{0}", hello, value, value2, item); Although it does appear neater, I can't visualize anything here. All I see is 6 placeholders and 4 variables. Bringing it all together mentally is, to me, more difficult.

                                  Pete O`Hanlon wrote:

                                  you looked at the IL that this produces

                                  That's the best part. It's the equivalent of string.Concat(hello, " ", value, " ", value2, value, " ", ...);


                                  Man is a marvelous curiosity ... he thinks he is the Creator's pet ... he even believes the Creator loves him; has a passion for him; sits up nights to admire him; yes and watch over him and keep him out of trouble. He prays to him and thinks He listens. Isn't it a quaint idea. - Mark Twain

                                  A 1 Reply Last reply
                                  0
                                  • S Shog9 0

                                    Al Beback wrote:

                                    I have to mentally keep substituting the placeholders for their corresponding values.

                                    You have to do that both ways. The difference is, #1 just gives you a tiny little "this is a placeholder" mark, while #2 uses the full variable or expression (which is unlikely to be any closer in appearance to the actual result than #1's curly-brace marks, but takes up a whole lot more room. Not to mention requiring parens to separate non-string ops from string ops). Of course, it's a matter of preference - but i'm pretty set in my ways here; i use similar techniques for C++ and even JS, writing my own formatters when there's nothing suitable built-in. You have to do that both ways. The difference is, #1 just gives you a tiny little "this is a placeholder" mark, while #2 uses the full variable or expression**†**. Of course, it's a matter of preference - but i'm pretty set in my ways here; i use similar techniques for C++ and even JS, writing my own formatters when there's nothing suitable built-in. BTW - which of the above paragraphs do you prefer? ;P **†**which is unlikely to be any closer in appearance to the actual result than #1's curly-brace marks, but takes up a whole lot more room. Not to mention requiring parens to separate non-string ops from string ops.

                                    every night, i kneel at the foot of my bed and thank the Great Overseeing Politicians for protecting my freedoms by reducing their number, as if they were deer in a state park. -- Chris Losinger, Online Poker Players?

                                    A Offline
                                    A Offline
                                    Al Beback
                                    wrote on last edited by
                                    #32

                                    Shog9 wrote:

                                    which of the above paragraphs do you prefer?

                                    1! :-D


                                    Man is a marvelous curiosity ... he thinks he is the Creator's pet ... he even believes the Creator loves him; has a passion for him; sits up nights to admire him; yes and watch over him and keep him out of trouble. He prays to him and thinks He listens. Isn't it a quaint idea. - Mark Twain

                                    S 1 Reply Last reply
                                    0
                                    • P PIEBALDconsult

                                      Well, if/when you use a Console.WriteLine(), would you use the format string and parameters?

                                      A Offline
                                      A Offline
                                      Al Beback
                                      wrote on last edited by
                                      #33

                                      PIEBALDconsult wrote:

                                      Well, if/when you use a Console.WriteLine(), would you use the format string and parameters?

                                      No. I would still use concatenation for the same reasons (readability, stability, and efficiency).


                                      Man is a marvelous curiosity ... he thinks he is the Creator's pet ... he even believes the Creator loves him; has a passion for him; sits up nights to admire him; yes and watch over him and keep him out of trouble. He prays to him and thinks He listens. Isn't it a quaint idea. - Mark Twain

                                      P 1 Reply Last reply
                                      0
                                      • L leppie

                                        WWCND? ;P

                                        **

                                        xacc.ide-0.2.0.77 - now with C# 3.5 support and Navigation Bar!^
                                        New xacc.ide release RSS feed^

                                        **

                                        A Offline
                                        A Offline
                                        Al Beback
                                        wrote on last edited by
                                        #34

                                        leppie wrote:

                                        WWCND?

                                        :) I had to look that up.


                                        Man is a marvelous curiosity ... he thinks he is the Creator's pet ... he even believes the Creator loves him; has a passion for him; sits up nights to admire him; yes and watch over him and keep him out of trouble. He prays to him and thinks He listens. Isn't it a quaint idea. - Mark Twain

                                        1 Reply Last reply
                                        0
                                        • L leppie

                                          WWCND? ;P

                                          **

                                          xacc.ide-0.2.0.77 - now with C# 3.5 support and Navigation Bar!^
                                          New xacc.ide release RSS feed^

                                          **

                                          D Offline
                                          D Offline
                                          Dan Neely
                                          wrote on last edited by
                                          #35

                                          Chunk Norris doesn't write code. He stares at the computer until it does what he wants it to.

                                          -- If you view money as inherently evil, I view it as my duty to assist in making you more virtuous.

                                          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