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. Long Lines

Long Lines

Scheduled Pinned Locked Moved The Lounge
questiondiscussion
52 Posts 34 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.
  • P PeejayAdams

    Sometimes you find yourself writing a stupidly long line of code, in my case:

    OutputImage(file, allFaces.Where(f => f.Proportion > double.Parse(ConfigurationManager.AppSettings["LowerBound"].ToString()) && f.Proportion < double.Parse(ConfigurationManager.AppSettings["UpperBound"].ToString())).ToList().OrderBy(f => f.Proportion).ThenByDescending(f => f.Rectangle.Height).FirstOrDefault());

    That will auto-wrap on here but you get the idea. Well, obviously I can shorten that line (but lengthen the code slightly) by splitting out the config setting retrievals:

    double lowerBound = double.Parse(ConfigurationManager.AppSettings["LowerBound"].ToString());
    double upperBound = double.Parse(ConfigurationManager.AppSettings["UpperBound"].ToString());

    reducing the "offending" line to:

    OutputImage(file, allFaces.Where(f => f.Proportion > lowerBound && f.Proportion < upperBound).ToList().OrderBy(f => f.Proportion).ThenByDescending(f => f.Rectangle.Height).FirstOrDefault());

    But given that I'm not using those settings more than once, should I really be doing that? Two short-lived variables aren't going to make too much difference but I'm still doing it for cosmetic reasons and that can't be good ... Either way, it's easy enough to split a method call where there are half a ton of arguments over several lines of text but what about when it's just one of the arguments that's causing the thing to scroll for miles? (Lambdas being a common cause of this). Hardly a matter of life and death but I'd be interested to hear the thoughts of others on this.

    Whenever you find yourself on the side of the majority, it is time to pause and reflect. - Mark Twain

    J Offline
    J Offline
    jsc42
    wrote on last edited by
    #4

    My personal style (which I suspect will not agree with anyone else's ideas) is ...

    OutputImage(
    file,
    allFaces
    .Where(
    f =>
    f.Proportion > double.Parse(ConfigurationManager.AppSettings["LowerBound"].ToString())
    && f.Proportion < double.Parse(ConfigurationManager.AppSettings["UpperBound"].ToString())
    )
    .List()
    .OrderBy(f => f.Proportion)
    .ThenByDescending(f => f.Rectangle.Height)
    .FirstOrDefault()
    );

    A P B 3 Replies Last reply
    0
    • P PeejayAdams

      Sometimes you find yourself writing a stupidly long line of code, in my case:

      OutputImage(file, allFaces.Where(f => f.Proportion > double.Parse(ConfigurationManager.AppSettings["LowerBound"].ToString()) && f.Proportion < double.Parse(ConfigurationManager.AppSettings["UpperBound"].ToString())).ToList().OrderBy(f => f.Proportion).ThenByDescending(f => f.Rectangle.Height).FirstOrDefault());

      That will auto-wrap on here but you get the idea. Well, obviously I can shorten that line (but lengthen the code slightly) by splitting out the config setting retrievals:

      double lowerBound = double.Parse(ConfigurationManager.AppSettings["LowerBound"].ToString());
      double upperBound = double.Parse(ConfigurationManager.AppSettings["UpperBound"].ToString());

      reducing the "offending" line to:

      OutputImage(file, allFaces.Where(f => f.Proportion > lowerBound && f.Proportion < upperBound).ToList().OrderBy(f => f.Proportion).ThenByDescending(f => f.Rectangle.Height).FirstOrDefault());

      But given that I'm not using those settings more than once, should I really be doing that? Two short-lived variables aren't going to make too much difference but I'm still doing it for cosmetic reasons and that can't be good ... Either way, it's easy enough to split a method call where there are half a ton of arguments over several lines of text but what about when it's just one of the arguments that's causing the thing to scroll for miles? (Lambdas being a common cause of this). Hardly a matter of life and death but I'd be interested to hear the thoughts of others on this.

      Whenever you find yourself on the side of the majority, it is time to pause and reflect. - Mark Twain

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

      I'd just throw some newlines in there:

      OutputImage(file,
      allFaces.Where(f => f.Proportion > lowerBound &&
      f.Proportion < upperBound).
      ToList().
      OrderBy(f => f.Proportion).
      ThenByDescending(f => f.Rectangle.Height).
      FirstOrDefault());

      OriginalGriffO 1 Reply Last reply
      0
      • P PeejayAdams

        Sometimes you find yourself writing a stupidly long line of code, in my case:

        OutputImage(file, allFaces.Where(f => f.Proportion > double.Parse(ConfigurationManager.AppSettings["LowerBound"].ToString()) && f.Proportion < double.Parse(ConfigurationManager.AppSettings["UpperBound"].ToString())).ToList().OrderBy(f => f.Proportion).ThenByDescending(f => f.Rectangle.Height).FirstOrDefault());

        That will auto-wrap on here but you get the idea. Well, obviously I can shorten that line (but lengthen the code slightly) by splitting out the config setting retrievals:

        double lowerBound = double.Parse(ConfigurationManager.AppSettings["LowerBound"].ToString());
        double upperBound = double.Parse(ConfigurationManager.AppSettings["UpperBound"].ToString());

        reducing the "offending" line to:

        OutputImage(file, allFaces.Where(f => f.Proportion > lowerBound && f.Proportion < upperBound).ToList().OrderBy(f => f.Proportion).ThenByDescending(f => f.Rectangle.Height).FirstOrDefault());

        But given that I'm not using those settings more than once, should I really be doing that? Two short-lived variables aren't going to make too much difference but I'm still doing it for cosmetic reasons and that can't be good ... Either way, it's easy enough to split a method call where there are half a ton of arguments over several lines of text but what about when it's just one of the arguments that's causing the thing to scroll for miles? (Lambdas being a common cause of this). Hardly a matter of life and death but I'd be interested to hear the thoughts of others on this.

        Whenever you find yourself on the side of the majority, it is time to pause and reflect. - Mark Twain

        M Offline
        M Offline
        Maximilien
        wrote on last edited by
        #6

        Remember that the person who's doing the code review is a psychopath. :rolleyes: I'd split that bugger.

        I'd rather be phishing!

        P 1 Reply Last reply
        0
        • J jsc42

          My personal style (which I suspect will not agree with anyone else's ideas) is ...

          OutputImage(
          file,
          allFaces
          .Where(
          f =>
          f.Proportion > double.Parse(ConfigurationManager.AppSettings["LowerBound"].ToString())
          && f.Proportion < double.Parse(ConfigurationManager.AppSettings["UpperBound"].ToString())
          )
          .List()
          .OrderBy(f => f.Proportion)
          .ThenByDescending(f => f.Rectangle.Height)
          .FirstOrDefault()
          );

          A Offline
          A Offline
          AFell2
          wrote on last edited by
          #7

          My style too. Sometimes it gets a bit too indented, but it is far preferable to side-scrolling to make sense of what you are doing with LINQ extensions and Lambda expressions.

          1 Reply Last reply
          0
          • C Chris Losinger

            I'd just throw some newlines in there:

            OutputImage(file,
            allFaces.Where(f => f.Proportion > lowerBound &&
            f.Proportion < upperBound).
            ToList().
            OrderBy(f => f.Proportion).
            ThenByDescending(f => f.Rectangle.Height).
            FirstOrDefault());

            OriginalGriffO Offline
            OriginalGriffO Offline
            OriginalGriff
            wrote on last edited by
            #8

            That's the one I'd go with too. Except I'd put the dots on the new line:

            OutputImage(file,
            allFaces.Where(f => f.Proportion > lowerBound &&
            f.Proportion < upperBound)
            .ToList()
            .OrderBy(f => f.Proportion)
            .ThenByDescending(f => f.Rectangle.Height)
            .FirstOrDefault());

            "I have no idea what I did, but I'm taking full credit for it." - ThisOldTony AntiTwitter: @DalekDave is now a follower!

            "I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
            "Common sense is so rare these days, it should be classified as a super power" - Random T-shirt

            F D A 3 Replies Last reply
            0
            • P PeejayAdams

              Sometimes you find yourself writing a stupidly long line of code, in my case:

              OutputImage(file, allFaces.Where(f => f.Proportion > double.Parse(ConfigurationManager.AppSettings["LowerBound"].ToString()) && f.Proportion < double.Parse(ConfigurationManager.AppSettings["UpperBound"].ToString())).ToList().OrderBy(f => f.Proportion).ThenByDescending(f => f.Rectangle.Height).FirstOrDefault());

              That will auto-wrap on here but you get the idea. Well, obviously I can shorten that line (but lengthen the code slightly) by splitting out the config setting retrievals:

              double lowerBound = double.Parse(ConfigurationManager.AppSettings["LowerBound"].ToString());
              double upperBound = double.Parse(ConfigurationManager.AppSettings["UpperBound"].ToString());

              reducing the "offending" line to:

              OutputImage(file, allFaces.Where(f => f.Proportion > lowerBound && f.Proportion < upperBound).ToList().OrderBy(f => f.Proportion).ThenByDescending(f => f.Rectangle.Height).FirstOrDefault());

              But given that I'm not using those settings more than once, should I really be doing that? Two short-lived variables aren't going to make too much difference but I'm still doing it for cosmetic reasons and that can't be good ... Either way, it's easy enough to split a method call where there are half a ton of arguments over several lines of text but what about when it's just one of the arguments that's causing the thing to scroll for miles? (Lambdas being a common cause of this). Hardly a matter of life and death but I'd be interested to hear the thoughts of others on this.

              Whenever you find yourself on the side of the majority, it is time to pause and reflect. - Mark Twain

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

              I'd do nothing of the sort. Long-ass lines like that make the code harder to read, maintain, and debug. I'd bust the individual components out to their own variables and combine them in the final statement. When you compile for Release, all that gets optimized out in most cases. You're really not saving yourself anything by piling it all into a single statement.

              Asking questions is a skill CodeProject Forum Guidelines Google: C# How to debug code Seriously, go read these articles.
              Dave Kreskowiak

              pkfoxP P B 3 Replies Last reply
              0
              • P PeejayAdams

                Sometimes you find yourself writing a stupidly long line of code, in my case:

                OutputImage(file, allFaces.Where(f => f.Proportion > double.Parse(ConfigurationManager.AppSettings["LowerBound"].ToString()) && f.Proportion < double.Parse(ConfigurationManager.AppSettings["UpperBound"].ToString())).ToList().OrderBy(f => f.Proportion).ThenByDescending(f => f.Rectangle.Height).FirstOrDefault());

                That will auto-wrap on here but you get the idea. Well, obviously I can shorten that line (but lengthen the code slightly) by splitting out the config setting retrievals:

                double lowerBound = double.Parse(ConfigurationManager.AppSettings["LowerBound"].ToString());
                double upperBound = double.Parse(ConfigurationManager.AppSettings["UpperBound"].ToString());

                reducing the "offending" line to:

                OutputImage(file, allFaces.Where(f => f.Proportion > lowerBound && f.Proportion < upperBound).ToList().OrderBy(f => f.Proportion).ThenByDescending(f => f.Rectangle.Height).FirstOrDefault());

                But given that I'm not using those settings more than once, should I really be doing that? Two short-lived variables aren't going to make too much difference but I'm still doing it for cosmetic reasons and that can't be good ... Either way, it's easy enough to split a method call where there are half a ton of arguments over several lines of text but what about when it's just one of the arguments that's causing the thing to scroll for miles? (Lambdas being a common cause of this). Hardly a matter of life and death but I'd be interested to hear the thoughts of others on this.

                Whenever you find yourself on the side of the majority, it is time to pause and reflect. - Mark Twain

                R Offline
                R Offline
                Ravi Bhavnani
                wrote on last edited by
                #10

                PeejayAdams wrote:

                Two short-lived variables aren't going to make too much difference but I'm still doing it for cosmetic reasons and that can't be good

                You're not doing it for cosmetic reasons.  You're doing it to improve code clarity.  And that, IMHO, has huge value. /ravi

                My new year resolution: 2048 x 1536 Home | Articles | My .NET bits | Freeware ravib(at)ravib(dot)com

                P 1 Reply Last reply
                0
                • P PeejayAdams

                  Sometimes you find yourself writing a stupidly long line of code, in my case:

                  OutputImage(file, allFaces.Where(f => f.Proportion > double.Parse(ConfigurationManager.AppSettings["LowerBound"].ToString()) && f.Proportion < double.Parse(ConfigurationManager.AppSettings["UpperBound"].ToString())).ToList().OrderBy(f => f.Proportion).ThenByDescending(f => f.Rectangle.Height).FirstOrDefault());

                  That will auto-wrap on here but you get the idea. Well, obviously I can shorten that line (but lengthen the code slightly) by splitting out the config setting retrievals:

                  double lowerBound = double.Parse(ConfigurationManager.AppSettings["LowerBound"].ToString());
                  double upperBound = double.Parse(ConfigurationManager.AppSettings["UpperBound"].ToString());

                  reducing the "offending" line to:

                  OutputImage(file, allFaces.Where(f => f.Proportion > lowerBound && f.Proportion < upperBound).ToList().OrderBy(f => f.Proportion).ThenByDescending(f => f.Rectangle.Height).FirstOrDefault());

                  But given that I'm not using those settings more than once, should I really be doing that? Two short-lived variables aren't going to make too much difference but I'm still doing it for cosmetic reasons and that can't be good ... Either way, it's easy enough to split a method call where there are half a ton of arguments over several lines of text but what about when it's just one of the arguments that's causing the thing to scroll for miles? (Lambdas being a common cause of this). Hardly a matter of life and death but I'd be interested to hear the thoughts of others on this.

                  Whenever you find yourself on the side of the majority, it is time to pause and reflect. - Mark Twain

                  F Offline
                  F Offline
                  Forogar
                  wrote on last edited by
                  #11

                  I never used to worry about long lines but since I now use a wide screen monitor in portrait mode for editing I find scrolling right so annoying! In addition we used side by side code display for comparison during code reviews so shorter lines are better. Splitting after "(", ",", ".", "=>" and occasionally "=" really helps but keeps the code easily readable. I even adopted this style at home where there are no code reviewers beyond me.

                  - I would love to change the world, but they won’t give me the source code.

                  P 1 Reply Last reply
                  0
                  • OriginalGriffO OriginalGriff

                    That's the one I'd go with too. Except I'd put the dots on the new line:

                    OutputImage(file,
                    allFaces.Where(f => f.Proportion > lowerBound &&
                    f.Proportion < upperBound)
                    .ToList()
                    .OrderBy(f => f.Proportion)
                    .ThenByDescending(f => f.Rectangle.Height)
                    .FirstOrDefault());

                    "I have no idea what I did, but I'm taking full credit for it." - ThisOldTony AntiTwitter: @DalekDave is now a follower!

                    F Offline
                    F Offline
                    Forogar
                    wrote on last edited by
                    #12

                    That's the way I do it. Except I move the && (or ||) to the start of the next line instead of leaving it trailing - it often helps when I want to comment out an option or two temporarily while testing.

                    - I would love to change the world, but they won’t give me the source code.

                    1 Reply Last reply
                    0
                    • P PeejayAdams

                      Sometimes you find yourself writing a stupidly long line of code, in my case:

                      OutputImage(file, allFaces.Where(f => f.Proportion > double.Parse(ConfigurationManager.AppSettings["LowerBound"].ToString()) && f.Proportion < double.Parse(ConfigurationManager.AppSettings["UpperBound"].ToString())).ToList().OrderBy(f => f.Proportion).ThenByDescending(f => f.Rectangle.Height).FirstOrDefault());

                      That will auto-wrap on here but you get the idea. Well, obviously I can shorten that line (but lengthen the code slightly) by splitting out the config setting retrievals:

                      double lowerBound = double.Parse(ConfigurationManager.AppSettings["LowerBound"].ToString());
                      double upperBound = double.Parse(ConfigurationManager.AppSettings["UpperBound"].ToString());

                      reducing the "offending" line to:

                      OutputImage(file, allFaces.Where(f => f.Proportion > lowerBound && f.Proportion < upperBound).ToList().OrderBy(f => f.Proportion).ThenByDescending(f => f.Rectangle.Height).FirstOrDefault());

                      But given that I'm not using those settings more than once, should I really be doing that? Two short-lived variables aren't going to make too much difference but I'm still doing it for cosmetic reasons and that can't be good ... Either way, it's easy enough to split a method call where there are half a ton of arguments over several lines of text but what about when it's just one of the arguments that's causing the thing to scroll for miles? (Lambdas being a common cause of this). Hardly a matter of life and death but I'd be interested to hear the thoughts of others on this.

                      Whenever you find yourself on the side of the majority, it is time to pause and reflect. - Mark Twain

                      Z Offline
                      Z Offline
                      ZurdoDev
                      wrote on last edited by
                      #13

                      double lowerBound = double.Parse(ConfigurationManager.AppSettings["LowerBound"].ToString());
                      double upperBound = double.Parse(ConfigurationManager.AppSettings["UpperBound"].ToString());

                      In my opinion this way would be better so that you can have error checking on it and provide a meaningful error message if one of the Appsettings is invalid.

                      Social Media - A platform that makes it easier for the crazies to find each other. Everyone is born right handed. Only the strongest overcome it. Fight for left-handed rights and hand equality.

                      P 1 Reply Last reply
                      0
                      • C CodeWraith

                        Strange. Much of my code looks like this:

                        Quote:

                        SEX R6 BN4 LOOP INP 04 OUT 04 B4 LOOP LDA R6 SDI 0F BNE LOOP NOP

                        The lines don't get too long, even if I use the old 64 x 64 pixel screen resolution. :-)

                        I have lived with several Zen masters - all of them were cats. His last invention was an evil Lasagna. It didn't kill anyone, and it actually tasted pretty good.

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

                        CodeWraith wrote:

                        SEX R6

                        Writing a porn app then?

                        C 1 Reply Last reply
                        0
                        • P PeejayAdams

                          Sometimes you find yourself writing a stupidly long line of code, in my case:

                          OutputImage(file, allFaces.Where(f => f.Proportion > double.Parse(ConfigurationManager.AppSettings["LowerBound"].ToString()) && f.Proportion < double.Parse(ConfigurationManager.AppSettings["UpperBound"].ToString())).ToList().OrderBy(f => f.Proportion).ThenByDescending(f => f.Rectangle.Height).FirstOrDefault());

                          That will auto-wrap on here but you get the idea. Well, obviously I can shorten that line (but lengthen the code slightly) by splitting out the config setting retrievals:

                          double lowerBound = double.Parse(ConfigurationManager.AppSettings["LowerBound"].ToString());
                          double upperBound = double.Parse(ConfigurationManager.AppSettings["UpperBound"].ToString());

                          reducing the "offending" line to:

                          OutputImage(file, allFaces.Where(f => f.Proportion > lowerBound && f.Proportion < upperBound).ToList().OrderBy(f => f.Proportion).ThenByDescending(f => f.Rectangle.Height).FirstOrDefault());

                          But given that I'm not using those settings more than once, should I really be doing that? Two short-lived variables aren't going to make too much difference but I'm still doing it for cosmetic reasons and that can't be good ... Either way, it's easy enough to split a method call where there are half a ton of arguments over several lines of text but what about when it's just one of the arguments that's causing the thing to scroll for miles? (Lambdas being a common cause of this). Hardly a matter of life and death but I'd be interested to hear the thoughts of others on this.

                          Whenever you find yourself on the side of the majority, it is time to pause and reflect. - Mark Twain

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

                          Macros for the win. :cool:

                          G 1 Reply Last reply
                          0
                          • P PeejayAdams

                            Sometimes you find yourself writing a stupidly long line of code, in my case:

                            OutputImage(file, allFaces.Where(f => f.Proportion > double.Parse(ConfigurationManager.AppSettings["LowerBound"].ToString()) && f.Proportion < double.Parse(ConfigurationManager.AppSettings["UpperBound"].ToString())).ToList().OrderBy(f => f.Proportion).ThenByDescending(f => f.Rectangle.Height).FirstOrDefault());

                            That will auto-wrap on here but you get the idea. Well, obviously I can shorten that line (but lengthen the code slightly) by splitting out the config setting retrievals:

                            double lowerBound = double.Parse(ConfigurationManager.AppSettings["LowerBound"].ToString());
                            double upperBound = double.Parse(ConfigurationManager.AppSettings["UpperBound"].ToString());

                            reducing the "offending" line to:

                            OutputImage(file, allFaces.Where(f => f.Proportion > lowerBound && f.Proportion < upperBound).ToList().OrderBy(f => f.Proportion).ThenByDescending(f => f.Rectangle.Height).FirstOrDefault());

                            But given that I'm not using those settings more than once, should I really be doing that? Two short-lived variables aren't going to make too much difference but I'm still doing it for cosmetic reasons and that can't be good ... Either way, it's easy enough to split a method call where there are half a ton of arguments over several lines of text but what about when it's just one of the arguments that's causing the thing to scroll for miles? (Lambdas being a common cause of this). Hardly a matter of life and death but I'd be interested to hear the thoughts of others on this.

                            Whenever you find yourself on the side of the majority, it is time to pause and reflect. - Mark Twain

                            K Offline
                            K Offline
                            Kevin Marois
                            wrote on last edited by
                            #16

                            Create an arguments class and pass that it. Then, when arguments changes (not 'if', but 'when'), then the method's signature stays the same.

                            If it's not broken, fix it until it is. Everything makes sense in someone's mind. Ya can't fix stupid.

                            1 Reply Last reply
                            0
                            • F Forogar

                              I never used to worry about long lines but since I now use a wide screen monitor in portrait mode for editing I find scrolling right so annoying! In addition we used side by side code display for comparison during code reviews so shorter lines are better. Splitting after "(", ",", ".", "=>" and occasionally "=" really helps but keeps the code easily readable. I even adopted this style at home where there are no code reviewers beyond me.

                              - I would love to change the world, but they won’t give me the source code.

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

                              Splitting _before_ operators tends to help them stand out.

                              F 1 Reply Last reply
                              0
                              • P PIEBALDconsult

                                Splitting _before_ operators tends to help them stand out.

                                F Offline
                                F Offline
                                Forogar
                                wrote on last edited by
                                #18

                                Actually I split before dots and most operators, but after equals, etc.

                                - I would love to change the world, but they won’t give me the source code.

                                1 Reply Last reply
                                0
                                • L Lost User

                                  CodeWraith wrote:

                                  SEX R6

                                  Writing a porn app then?

                                  C Offline
                                  C Offline
                                  CodeWraith
                                  wrote on last edited by
                                  #19

                                  Just setting the X register to a new value. This means that the value in register 6 is now the new stack pointer.

                                  I have lived with several Zen masters - all of them were cats. His last invention was an evil Lasagna. It didn't kill anyone, and it actually tasted pretty good.

                                  B 1 Reply Last reply
                                  0
                                  • P PeejayAdams

                                    Sometimes you find yourself writing a stupidly long line of code, in my case:

                                    OutputImage(file, allFaces.Where(f => f.Proportion > double.Parse(ConfigurationManager.AppSettings["LowerBound"].ToString()) && f.Proportion < double.Parse(ConfigurationManager.AppSettings["UpperBound"].ToString())).ToList().OrderBy(f => f.Proportion).ThenByDescending(f => f.Rectangle.Height).FirstOrDefault());

                                    That will auto-wrap on here but you get the idea. Well, obviously I can shorten that line (but lengthen the code slightly) by splitting out the config setting retrievals:

                                    double lowerBound = double.Parse(ConfigurationManager.AppSettings["LowerBound"].ToString());
                                    double upperBound = double.Parse(ConfigurationManager.AppSettings["UpperBound"].ToString());

                                    reducing the "offending" line to:

                                    OutputImage(file, allFaces.Where(f => f.Proportion > lowerBound && f.Proportion < upperBound).ToList().OrderBy(f => f.Proportion).ThenByDescending(f => f.Rectangle.Height).FirstOrDefault());

                                    But given that I'm not using those settings more than once, should I really be doing that? Two short-lived variables aren't going to make too much difference but I'm still doing it for cosmetic reasons and that can't be good ... Either way, it's easy enough to split a method call where there are half a ton of arguments over several lines of text but what about when it's just one of the arguments that's causing the thing to scroll for miles? (Lambdas being a common cause of this). Hardly a matter of life and death but I'd be interested to hear the thoughts of others on this.

                                    Whenever you find yourself on the side of the majority, it is time to pause and reflect. - Mark Twain

                                    M Offline
                                    M Offline
                                    Marc Clifton
                                    wrote on last edited by
                                    #20

                                    PeejayAdams wrote:

                                    Two short-lived variables

                                    Lifetime should not influence readability. I almost always put things into variables not just for readability but that it makes it easier to debug. Given:

                                    OutputImage(file, allFaces.Where(f => f.Proportion > double.Parse(ConfigurationManager.AppSettings["LowerBound"].ToString()) && f.Proportion < double.Parse(ConfigurationManager.AppSettings["UpperBound"].ToString())).ToList().OrderBy(f => f.Proportion).ThenByDescending(f => f.Rectangle.Height).FirstOrDefault());

                                    I do have a penchant for extension methods. As in:

                                    var face = allFaces
                                    .AnyBetween(f => f.Proportion, "LowerBound".AppSetting().to_f(), "UpperBound".AppSetting().to_f())
                                    .OrderBy(f => f.Proportion)
                                    .ThenByDescending(f => f.Rectangle.Height)
                                    .FirstOrDefault();
                                    OutputImage(file, face);

                                    As bizarre as it is to extend string, I find it a lot more readable. The ToList() seems superfluous. Not sure you want to output an image if no images meet the selection criteria. I might move FirstOrDefault into OutputImage(file, face.FirstOrDefault()); as well, who knows, the way you get the faces might be re-usable. I leave it to the reader to figure out to_f, AnyBetween, and AppSettings Should be obvious.

                                    Latest Articles:
                                    Client-Side TypeScript without ASP.NET, Angular, etc.

                                    P P 2 Replies Last reply
                                    0
                                    • OriginalGriffO OriginalGriff

                                      That's the one I'd go with too. Except I'd put the dots on the new line:

                                      OutputImage(file,
                                      allFaces.Where(f => f.Proportion > lowerBound &&
                                      f.Proportion < upperBound)
                                      .ToList()
                                      .OrderBy(f => f.Proportion)
                                      .ThenByDescending(f => f.Rectangle.Height)
                                      .FirstOrDefault());

                                      "I have no idea what I did, but I'm taking full credit for it." - ThisOldTony AntiTwitter: @DalekDave is now a follower!

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

                                      That's my preference as well, unless I'm still debugging the code, and I want to verify the output of one of the chained calls. Otherwise setting a breakpoint, say, on line 6 sets a breakpoint on the entire thing. But once I'm confident I won't have to revisit it, it all goes back to a single statement split among multiple lines.

                                      B 1 Reply Last reply
                                      0
                                      • D Dave Kreskowiak

                                        I'd do nothing of the sort. Long-ass lines like that make the code harder to read, maintain, and debug. I'd bust the individual components out to their own variables and combine them in the final statement. When you compile for Release, all that gets optimized out in most cases. You're really not saving yourself anything by piling it all into a single statement.

                                        Asking questions is a skill CodeProject Forum Guidelines Google: C# How to debug code Seriously, go read these articles.
                                        Dave Kreskowiak

                                        pkfoxP Offline
                                        pkfoxP Offline
                                        pkfox
                                        wrote on last edited by
                                        #22

                                        Hear hear Dave - I hate chained statements / method calls - set class properties and call the method - no need for parameters

                                        "We can't stop here - this is bat country" - Hunter S Thompson - RIP

                                        1 Reply Last reply
                                        0
                                        • C CodeWraith

                                          Just setting the X register to a new value. This means that the value in register 6 is now the new stack pointer.

                                          I have lived with several Zen masters - all of them were cats. His last invention was an evil Lasagna. It didn't kill anyone, and it actually tasted pretty good.

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

                                          I think Richard was making a joke.

                                          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???

                                          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