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. Don't tell me how to declare a string!

Don't tell me how to declare a string!

Scheduled Pinned Locked Moved The Weird and The Wonderful
databasetutorial
25 Posts 14 Posters 39 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.
  • T TClarke

    I found something that made me blink with its absurdity the other day and what was more absurd was the defense the developer used when confronted with it. while looking through countless strings storing SQL queries I noticed they were all written as so:

    private static final String SQL = ""

    • " SELECT "
    • " nvl( vss.structure_address, "
    • " ifsapp.serial_structure_template_api.get_pos(top_part_no, "
      etc...

    When I asked him about the first empty string he looked at me as though I was suggesting replacing all hiss method calls with gotos "You can't just add a sting to nothing you know!" he snarled "you need an empty base" :laugh:

    L Offline
    L Offline
    Luc Pattyn
    wrote on last edited by
    #2

    TClarke wrote:

    private static final String SQL = "" + " SELECT " + " nvl( vss.structure_address, " + " ifsapp.serial_structure_template_api.get_pos(top_part_no," etc...

    Without the "" on the first line, you couldn't start the second line with a + hence the indentation might be at risk, i.e. the third and following lines might not align with the second one; this may become very important when the code is worthwhile and is likely be published on one or more forums. BTW: the code itself is OK, the compiler does the concatenation for you.

    Luc Pattyn [Forum Guidelines] [My Articles]


    this weeks tips: - make Visual display line numbers: Tools/Options/TextEditor/AllLanguages/General - show exceptions with ToString() to see all information - before you ask a question here, search CodeProject, then Google


    T V D 3 Replies Last reply
    0
    • T TClarke

      I found something that made me blink with its absurdity the other day and what was more absurd was the defense the developer used when confronted with it. while looking through countless strings storing SQL queries I noticed they were all written as so:

      private static final String SQL = ""

      • " SELECT "
      • " nvl( vss.structure_address, "
      • " ifsapp.serial_structure_template_api.get_pos(top_part_no, "
        etc...

      When I asked him about the first empty string he looked at me as though I was suggesting replacing all hiss method calls with gotos "You can't just add a sting to nothing you know!" he snarled "you need an empty base" :laugh:

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

      This reminds me of a consultancy developer who wrote all of his SQL statements like this:

      "SELECT field1, \r\n" +
      "       field2, \r\n" + 
      "       field3 \r\n" +
      "FROM \r\n" +
      "       myTable \r\n";
      

      It still makes me shudder.

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

      T P J J 4 Replies Last reply
      0
      • L Luc Pattyn

        TClarke wrote:

        private static final String SQL = "" + " SELECT " + " nvl( vss.structure_address, " + " ifsapp.serial_structure_template_api.get_pos(top_part_no," etc...

        Without the "" on the first line, you couldn't start the second line with a + hence the indentation might be at risk, i.e. the third and following lines might not align with the second one; this may become very important when the code is worthwhile and is likely be published on one or more forums. BTW: the code itself is OK, the compiler does the concatenation for you.

        Luc Pattyn [Forum Guidelines] [My Articles]


        this weeks tips: - make Visual display line numbers: Tools/Options/TextEditor/AllLanguages/General - show exceptions with ToString() to see all information - before you ask a question here, search CodeProject, then Google


        T Offline
        T Offline
        TClarke
        wrote on last edited by
        #4

        If it had just been down to him being a format obsessive I would have let it slide but he claimed it was not possible to start a string with a space unless you concatenated it to a blank string. Which is of course complete bollocks :) Also this SQL was just going off to run in a database, it wouldn't be seen by anyone but developers on the team, none of which would be any less capable of reading the code if it wasn't aligned like that

        Luc Pattyn wrote:

        BTW: the code itself is OK, the compiler does the concatenation for you.

        Sure. The byte code comes out the same, he didn't know that though :)

        1 Reply Last reply
        0
        • P Pete OHanlon

          This reminds me of a consultancy developer who wrote all of his SQL statements like this:

          "SELECT field1, \r\n" +
          "       field2, \r\n" + 
          "       field3 \r\n" +
          "FROM \r\n" +
          "       myTable \r\n";
          

          It still makes me shudder.

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

          T Offline
          T Offline
          TClarke
          wrote on last edited by
          #5

          what are those \r characters doing there?

          B 1 Reply Last reply
          0
          • T TClarke

            what are those \r characters doing there?

            B Offline
            B Offline
            BadKarma
            wrote on last edited by
            #6

            Isn't that the Cariage Return code Like '\n' is the new line feed code.

            codito ergo sum

            P 1 Reply Last reply
            0
            • B BadKarma

              Isn't that the Cariage Return code Like '\n' is the new line feed code.

              codito ergo sum

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

              Certainly is. He put them in to format them so they would appear nice if ever they were printed out from code.

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

              V 1 Reply Last reply
              0
              • T TClarke

                I found something that made me blink with its absurdity the other day and what was more absurd was the defense the developer used when confronted with it. while looking through countless strings storing SQL queries I noticed they were all written as so:

                private static final String SQL = ""

                • " SELECT "
                • " nvl( vss.structure_address, "
                • " ifsapp.serial_structure_template_api.get_pos(top_part_no, "
                  etc...

                When I asked him about the first empty string he looked at me as though I was suggesting replacing all hiss method calls with gotos "You can't just add a sting to nothing you know!" he snarled "you need an empty base" :laugh:

                K Offline
                K Offline
                KarstenK
                wrote on last edited by
                #8

                the coder wants readable code, so it isnt such a horror.:sigh:

                Greetings from Germany

                V 1 Reply Last reply
                0
                • L Luc Pattyn

                  TClarke wrote:

                  private static final String SQL = "" + " SELECT " + " nvl( vss.structure_address, " + " ifsapp.serial_structure_template_api.get_pos(top_part_no," etc...

                  Without the "" on the first line, you couldn't start the second line with a + hence the indentation might be at risk, i.e. the third and following lines might not align with the second one; this may become very important when the code is worthwhile and is likely be published on one or more forums. BTW: the code itself is OK, the compiler does the concatenation for you.

                  Luc Pattyn [Forum Guidelines] [My Articles]


                  this weeks tips: - make Visual display line numbers: Tools/Options/TextEditor/AllLanguages/General - show exceptions with ToString() to see all information - before you ask a question here, search CodeProject, then Google


                  V Offline
                  V Offline
                  Vasudevan Deepak Kumar
                  wrote on last edited by
                  #9

                  Luc Pattyn wrote:

                  the code itself is OK, the compiler does the concatenation for you.

                  But the string concatenation that has been used is pretty costly right?:confused:

                  Vasudevan Deepak Kumar Personal Homepage Tech Gossips

                  L 1 Reply Last reply
                  0
                  • K KarstenK

                    the coder wants readable code, so it isnt such a horror.:sigh:

                    Greetings from Germany

                    V Offline
                    V Offline
                    Vasudevan Deepak Kumar
                    wrote on last edited by
                    #10

                    But a horror for the compiler. :confused:

                    Vasudevan Deepak Kumar Personal Homepage Tech Gossips

                    C K 2 Replies Last reply
                    0
                    • P Pete OHanlon

                      Certainly is. He put them in to format them so they would appear nice if ever they were printed out from code.

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

                      V Offline
                      V Offline
                      Vasudevan Deepak Kumar
                      wrote on last edited by
                      #11

                      Environment.NewLine is rather really environment-friendly right?:)

                      Vasudevan Deepak Kumar Personal Homepage Tech Gossips

                      P 1 Reply Last reply
                      0
                      • V Vasudevan Deepak Kumar

                        Luc Pattyn wrote:

                        the code itself is OK, the compiler does the concatenation for you.

                        But the string concatenation that has been used is pretty costly right?:confused:

                        Vasudevan Deepak Kumar Personal Homepage Tech Gossips

                        L Offline
                        L Offline
                        Luc Pattyn
                        wrote on last edited by
                        #12

                        Compilers are smart enough to understand that the concatenation of two literals yields a bigger literal. They don't generate run-time code to get that done. Also -- not applicable in this case -- the CLR compilers are known to use a StringBuilder if your code is performing complex concatenation involving not just literals, even when the source does not call for a StringBuilder explicitly. :)

                        Luc Pattyn [Forum Guidelines] [My Articles]


                        this weeks tips: - make Visual display line numbers: Tools/Options/TextEditor/AllLanguages/General - show exceptions with ToString() to see all information - before you ask a question here, search CodeProject, then Google


                        R 1 Reply Last reply
                        0
                        • V Vasudevan Deepak Kumar

                          Environment.NewLine is rather really environment-friendly right?:)

                          Vasudevan Deepak Kumar Personal Homepage Tech Gossips

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

                          It is, but don't tell him that. The real WTF is formatting this out the way he did though.

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

                          1 Reply Last reply
                          0
                          • V Vasudevan Deepak Kumar

                            But a horror for the compiler. :confused:

                            Vasudevan Deepak Kumar Personal Homepage Tech Gossips

                            C Offline
                            C Offline
                            Chris Losinger
                            wrote on last edited by
                            #14

                            compilers don't have feelings. they cannot be horrified. ;)

                            image processing toolkits | batch image processing | blogging

                            L 1 Reply Last reply
                            0
                            • P Pete OHanlon

                              This reminds me of a consultancy developer who wrote all of his SQL statements like this:

                              "SELECT field1, \r\n" +
                              "       field2, \r\n" + 
                              "       field3 \r\n" +
                              "FROM \r\n" +
                              "       myTable \r\n";
                              

                              It still makes me shudder.

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

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

                              I would do that as:

                              @"
                              SELECT field1,
                              field2,
                              field3
                              FROM
                              mytable
                              ";

                              It still puts the newlines in the string for when I dump a CommandText to a log.

                              1 Reply Last reply
                              0
                              • V Vasudevan Deepak Kumar

                                But a horror for the compiler. :confused:

                                Vasudevan Deepak Kumar Personal Homepage Tech Gossips

                                K Offline
                                K Offline
                                KarstenK
                                wrote on last edited by
                                #16

                                The compiler makes one string of it all and so the empty string is "Over the hills". I like readable code so much, that I often write a little more code and comments and think about value and class names up to 10 minutes. It helps me to make a 'master architecture' for my work. It has often paid off, because I can easy reuse code. I have to maintain 6 projects in which a lot of code is reused. The changes and enhancements for Vista I wrote 1 time and use it 6 times.:cool:

                                Greetings from Germany

                                1 Reply Last reply
                                0
                                • P Pete OHanlon

                                  This reminds me of a consultancy developer who wrote all of his SQL statements like this:

                                  "SELECT field1, \r\n" +
                                  "       field2, \r\n" + 
                                  "       field3 \r\n" +
                                  "FROM \r\n" +
                                  "       myTable \r\n";
                                  

                                  It still makes me shudder.

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

                                  J Offline
                                  J Offline
                                  Jorgen Sigvardsson
                                  wrote on last edited by
                                  #17

                                  That makes sense sometimes, especially if you're debugging [or logging rather] the actual SQL code sent to the DBMS.

                                  -- Smell-o-vision users, insert nostril tubes now

                                  P 1 Reply Last reply
                                  0
                                  • J Jorgen Sigvardsson

                                    That makes sense sometimes, especially if you're debugging [or logging rather] the actual SQL code sent to the DBMS.

                                    -- Smell-o-vision users, insert nostril tubes now

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

                                    To be honest, the time it takes you to do this is wasted time - especially, as I noted in the OP, when you are a consultant and thus billing by the hour.

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

                                    1 Reply Last reply
                                    0
                                    • T TClarke

                                      I found something that made me blink with its absurdity the other day and what was more absurd was the defense the developer used when confronted with it. while looking through countless strings storing SQL queries I noticed they were all written as so:

                                      private static final String SQL = ""

                                      • " SELECT "
                                      • " nvl( vss.structure_address, "
                                      • " ifsapp.serial_structure_template_api.get_pos(top_part_no, "
                                        etc...

                                      When I asked him about the first empty string he looked at me as though I was suggesting replacing all hiss method calls with gotos "You can't just add a sting to nothing you know!" he snarled "you need an empty base" :laugh:

                                      A Offline
                                      A Offline
                                      Adam Maras
                                      wrote on last edited by
                                      #19

                                      This is why I like the @"string" literal operator in C#.

                                      private static final String SQL = @"SELECT
                                      nvl( vss.structure_address,
                                      ifsapp.serial_structure_template_api.get_pos(top_part_no, ...";

                                      1 Reply Last reply
                                      0
                                      • P Pete OHanlon

                                        This reminds me of a consultancy developer who wrote all of his SQL statements like this:

                                        "SELECT field1, \r\n" +
                                        "       field2, \r\n" + 
                                        "       field3 \r\n" +
                                        "FROM \r\n" +
                                        "       myTable \r\n";
                                        

                                        It still makes me shudder.

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

                                        J Offline
                                        J Offline
                                        joebeam
                                        wrote on last edited by
                                        #20

                                        no joke...this is from a code generator developed by an earlier employee. SQL = "INSERT INTO Orders (" & _ " OrderID, " & _ " CustomerID, " & _ " EmployeeID, " & _ " OrderDate, " & _ " RequiredDate, " & _ " ShippedDate, " & _ " ShipVia, " & _ " Freight, " & _ " ShipName, " & _ " ShipAddress, " & _ " ShipCity, " & _ " ShipRegion, " & _ " ShipPostalCode, " & _ " ShipCountry " & _ " )" & _ "VALUES (" & _ "'" & Orders.OrderID & "', " & _ "'" & Orders.CustomerID & "', " & _ "'" & Orders.EmployeeID & "', " & _ DataCommonFunctions.SQLDate(Orders.OrderDate) & ", " & _ DataCommonFunctions.SQLDate(Orders.RequiredDate) & ", " & _ DataCommonFunctions.SQLDate(Orders.ShippedDate) & ", " & _ "'" & Orders.ShipVia & "', " & _ "'" & Orders.Freight & "', " & _ "'" & Orders.ShipName & "', " & _ "'" & Orders.ShipAddress & "', " & _ "'" & Orders.ShipCity & "', " & _ "'" & Orders.ShipRegion & "', " & _ "'" & Orders.ShipPostalCode & "', " & _ "'" & Orders.ShipCountry & "') " Sql Injection anyone?!? Whenever I put sql in code it's always on one line and I'm using parameters!

                                        1 Reply Last reply
                                        0
                                        • L Luc Pattyn

                                          TClarke wrote:

                                          private static final String SQL = "" + " SELECT " + " nvl( vss.structure_address, " + " ifsapp.serial_structure_template_api.get_pos(top_part_no," etc...

                                          Without the "" on the first line, you couldn't start the second line with a + hence the indentation might be at risk, i.e. the third and following lines might not align with the second one; this may become very important when the code is worthwhile and is likely be published on one or more forums. BTW: the code itself is OK, the compiler does the concatenation for you.

                                          Luc Pattyn [Forum Guidelines] [My Articles]


                                          this weeks tips: - make Visual display line numbers: Tools/Options/TextEditor/AllLanguages/General - show exceptions with ToString() to see all information - before you ask a question here, search CodeProject, then Google


                                          D Offline
                                          D Offline
                                          dojohansen
                                          wrote on last edited by
                                          #21

                                          Indentation-wise, I find that this works well: string query = "SELECT [foo], [bar] " + "FROM [f] " + "WHERE [id] = @id";

                                          L 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