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. A rant

A rant

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

    Looking at bad code makes me cringe. When I look at something like a simple function that returns a string and the compiler warns about unreachable code detected and the code itself has multiple return points, I can't help but wonder, if simple code like this is so poorly implemented, warnings aren't fixed, and there's not comment to explain what the if statements and switch statements are even doing, what can I expect in complicated code? I have this visceral emotional reaction to bad code, it makes me not even want to touch the whole project, even if I'm working on an isolated part of it. I'm still associated with the bad code. Do you ever feel that way? Or am I letting my emotions get in the way here? And then I hear the "we need to get something out, and we'll refactor it later". Refactoring is abused, IMO. How much refactoring could be eliminated if you just wrote the code right to begin with? And come now, does refactoring really happen? It's more like a meditation than a practice. What's the sound of one programmer refactoring? Yeah, exactly. Shouldn't code get reviewed frequently, even in the midst of a the continuous fire drill? I mean, after all, if you acknowledge that the fire alarm is always sounding, then you might as well figure out how to do the programming better and smarter, rather than take the McGyver approach and hope the ducttape lasts to end of the episode. Does your team ducttape (I always thought it was duck tape) the code and promise each other to refactor later? About that lying questionnaire below, good intents are almost like lies, but you're never actually caught at the lie because you can always say "it'll happen soon." So, is there some truth my conception that bad, uncommented simple code is a portent of bad, uncommented complicated code? And is there some merit to the conclusion that the bad, uncommented, complicated code will also be really buggy? Is there some merit to the attitude that refactoring should be minimized? What are your thoughts? Marc

    Thyme In The Country

    Some people believe what the bible says. Literally. At least [with Wikipedia] you have the chance to correct the wiki -- Jörgen Sigvardsson
    People are just notoriously impossible. --DavidCrow
    There's NO excuse for not commenting your code. -- John Simmons / outlaw programmer

    C Offline
    C Offline
    charlieg
    wrote on last edited by
    #33

    I call it code slamming - generally. Then there is the code clearly written by someone who has no passion for the quality of their product.

    Charlie Gilley Will program for food... Whoever said children were cheaper by the dozen... lied. My son's PDA is an M249 SAW. My other son commutes in an M1A2 Abrams

    M 1 Reply Last reply
    0
    • J Josh Smith

      Refactoring is about altering the structure of code/designs to accomodate new requirements (aka features, performance, etc.) It is not about making code "good." Code should always be good, if not fantastic. People who say that they will refactor their code later to make it "good" don't understand refactoring, nor the art and craft of programming.

      :josh: My WPF Blog[^]

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

      Josh Smith wrote:

      People who say that they will refactor their code later to make it "good" don't understand refactoring, nor the art and craft of programming.

      Quoted! (poor Jorgen, I had to bump his quote off). Marc

      Thyme In The Country

      People are just notoriously impossible. --DavidCrow
      There's NO excuse for not commenting your code. -- John Simmons / outlaw programmer
      People who say that they will refactor their code later to make it "good" don't understand refactoring, nor the art and craft of programming. -- Josh Smith

      1 Reply Last reply
      0
      • J Josh Smith

        Cotter wrote:

        A systemic lack of comments and indicators like multiple return points

        What do you have against multiple return points? What's wrong with this?

        public int Foo
        {
        get
        {
        if( muck )
        return 0;
        return 42;
        }
        }

        :josh: My WPF Blog[^]

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

        Josh Smith wrote:

        What do you have against multiple return points?

        Multiple return points when the logic is simple makes code more difficult to understand at a glance and to maintain. All too often I've added some functionality only to discover that there's a return statement I didn't notice earlier in the logic. This is not to say that I'm religious about it, I'm just conscious about the issue and make the decision based on code complexity. Here's the code that started this thread (obfuscated to protect the guilty):

            public string Foo
            {
                get
                {
                    switch (SomeType)
                    {
                        case TypeA:
                            if (bar == null)
                            {
                                return null;
                            }
                            else
                            {
                                return bar.MyId.ToString();
                            }
                            break;
                        case TypeB:
                            if (snafu == null)
                            {
                                return null;
                            }
                            else
                            {
                                return snafu.MyId.ToString();
                            }
                            break;
                    }
                    return null;
                }
                set { q = value; }
            }
        

        There are so many things wrong with code, it's a perfect case study of bad programming. 1: the setter is setting something different than the getter. Since this is unusual practice, put a comment as to why 2: the getter is testing for null objects. Shouldn't this rather throw an exception if the object isn't initialized, but the object type is? 3: shouldn't there have been a flag raised when implementing that the object type is being decoupled from the object itself (see #6) 4: breaks never occur because of the returns 5: returns instead of a single return point 6: Since both types convert an ID to a string, why not create an abstract class or an interface so that container class maintains the interfaced instance and you can get the ID without the switch statement? 7: use to the ToString() method or have the object convert the ID itself to string, ie. GetIDAsString(), which is more flexible if later on, you want to do something different with the ID, like hash it, or whatever. So in these very few

        1 Reply Last reply
        0
        • C Chris S Kaiser

          if(!connect()) return false; //continue with processing return true; That's a lot cleaner than bool ret = connect(); if(ret) { //continue with processing } return ret; And it saves a level of indenting. Maybe with 1280 x 1028 resolution this isn't such a big deal, but I still say there's nothing wrong with this style. Its just that, style.

          This statement is false.

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

          Chris S Kaiser wrote:

          That's a lot cleaner than

          Actually, I'll disagree. Ironically, you'll see exactly your example of "not cleaner" in my code. And the reason is because at some point, I actually needed to code an else statement when connection failed, which didn't require my having to check if there's a return statement earlier. Trivial example, but still. Marc

          Thyme In The Country

          People are just notoriously impossible. --DavidCrow
          There's NO excuse for not commenting your code. -- John Simmons / outlaw programmer
          People who say that they will refactor their code later to make it "good" don't understand refactoring, nor the art and craft of programming. -- Josh Smith

          C 1 Reply Last reply
          0
          • J Judah Gabriel Himango

            IMO, refactoring has to happen. Even if you wrote code the right way to begin with, requirements change. When requirements change, your code architecture has to change to reflect that. Often times, that's where refactoring comes in for us.

            Marc Clifton wrote:

            And come now, does refactoring really happen?

            Absolutely. I do a little everyday at work.

            Marc Clifton wrote:

            Does your team ducttape (I always thought it was duck tape) the code and promise each other to refactor later?

            We refactor when it's needed. I think the only exception is large refactors that would takes many, many months to complete. For example, after working in the same codebase for 2 years, we've recently started using test driven development. Much of our code up to this point wasn't designed with testing in mind, so if we really want to test a piece of code, it often has to be refactored. UI code is a big example here: I now see that most of the logic in our UI code simply cannot be tested because it's too intertwined with the UI code. So we've started to use the MVP pattern to seperate the logic and the UI code, thus allowing us to test the logic of the UI without getting entangled in UI code. But to take a timeout and refactor our hundreds of controls and forms to use the MVP pattern with unit testing would just be too huge a refactor. We simply don't have time to spend a couple months to do this. Instead, I'm migrating pieces at a time. Also, all new pieces use the MVP pattern with unit testing. So the code migrates over time. Besides the rare huge refactoring like that (maybe refactor isn't even the right word in that scenario), we do smaller refactors often, every day. Pulling interfaces out of classes, having consuming classes use interfaces (which can be mocked in unit testing) instead of concrete classes, renaming classes and namespaces to better reflect their usage (again, things evolve), making things simpler, the list goes on. In that sense, we refactor all the time. p.s. By the way Marc, [happy birthday](http://judahhimango.com/music/the beatles - birthday.mp3)[[^](http://judahhimango.com/music/the beatles - birthday.mp3)] man! Have a great, happy birthday weekend. :cool:

            Tech, life, family, faith: Give me a visit. I

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

            Judah Himango wrote:

            Much of our code up to this point wasn't designed with testing in mind, so if we really want to test a piece of code, it often has to be refactored.

            That kind of refactoring, sure I'm fine with that. But the "I'll refactor the compiler warnings later" problem, hmmm. And I can understand refactoring architecture to add features, improve testing, etc. I don't agree with putting off even minimal thinking about architecture and "we'll refactor that later". Some things ought be done more or less right, with the knowledge available at the time, and not just "coded".

            Judah Himango wrote:

            Have a great, happy birthday weekend.

            :-D Thanks! Marc

            Thyme In The Country

            People are just notoriously impossible. --DavidCrow
            There's NO excuse for not commenting your code. -- John Simmons / outlaw programmer
            People who say that they will refactor their code later to make it "good" don't understand refactoring, nor the art and craft of programming. -- Josh Smith

            1 Reply Last reply
            0
            • L led mike

              Yes crap code happens every day. Why... lots of reasons, like crap developers (spend some time in the forums) and crap managers and crap companies.

              Marc Clifton wrote:

              And then I hear the "we need to get something out, and we'll refactor it later". Refactoring is abused, IMO.

              Refactoring "should" occur when the design must change due to an analysis error or requirement change, not as an excuse to do crap work originally. And all of this is under the guise of "it's faster", which in my experience has never proven to be true, it's all bullshit. Anyway you don't need to believe me, see the web for Technical Debt[^]

              led mike

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

              led mike wrote:

              Refactoring "should" occur when the design must change due to an analysis error or requirement change, not as an excuse to do crap work originally. And all of this is under the guise of "it's faster", which in my experience has never proven to be true, it's all bullsh*t. Anyway you don't need to believe me, see the web for Technical Debt[^]

              Oh I believe you. And thank you for the link. It's great writeup. Short and to the point. Marc

              Thyme In The Country

              People are just notoriously impossible. --DavidCrow
              There's NO excuse for not commenting your code. -- John Simmons / outlaw programmer
              People who say that they will refactor their code later to make it "good" don't understand refactoring, nor the art and craft of programming. -- Josh Smith

              1 Reply Last reply
              0
              • G Graham Shanks

                The similar circumstances that I see all too often is "we'll skip unit testing because of time pressure and catch all the errors in integration". Firstly the project will never catch up and second the integration will take longer without unit tests. I once did a phase review on a project where the manager had just decreed that no more unit testing or code reviews would happen in order to keep on schedule. My report stated that I considered that too risky. However, the project manager asked if it were certain that integration would take longer than scheduled and I had to say no, but it was high risk. He went ahead anyway. Guess what - integration took much, much longer than scheduled because of all the bugs they had to fix. :sigh: I didn't get much satisfaction from being proved right. I did the analysis and the extra time spent in integration was more than the time saved in unit testing and code reviews. So yes, code should be reviewed frequently even in the midst of the continuous fire drill. Bad code will bite you (or someone else) in the end. As for refactoring, my initial reaction was yes I do it all the time. But reading other replies I realised that I do it as part of the natural development process when writing the code in the first place or because I'm changing a piece of old code because it now needs to meet new requirements and it's architecture is no longer sufficient. I cannot think of any time when the code has been refactored just because it is messy.

                Graham My signature is not black, just a very, very dark blue

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

                Graham Shanks wrote:

                The similar circumstances that I see all too often is "we'll skip unit testing because of time pressure and catch all the errors in integration". Firstly the project will never catch up and second the integration will take longer without unit tests.

                Yup. I've got a situation where the following has been said: "we'll refactor in the unit tests when we've shipped the first version of the product." :laugh: :(( :laugh: :(( Marc

                Thyme In The Country

                People are just notoriously impossible. --DavidCrow
                There's NO excuse for not commenting your code. -- John Simmons / outlaw programmer
                People who say that they will refactor their code later to make it "good" don't understand refactoring, nor the art and craft of programming. -- Josh Smith

                G 1 Reply Last reply
                0
                • C charlieg

                  I call it code slamming - generally. Then there is the code clearly written by someone who has no passion for the quality of their product.

                  Charlie Gilley Will program for food... Whoever said children were cheaper by the dozen... lied. My son's PDA is an M249 SAW. My other son commutes in an M1A2 Abrams

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

                  charlieg wrote:

                  I call it code slamming

                  That's a great phrase! Marc

                  Thyme In The Country

                  People are just notoriously impossible. --DavidCrow
                  There's NO excuse for not commenting your code. -- John Simmons / outlaw programmer
                  People who say that they will refactor their code later to make it "good" don't understand refactoring, nor the art and craft of programming. -- Josh Smith

                  C 1 Reply Last reply
                  0
                  • M Marc Clifton

                    Kevin McFarlane wrote:

                    Only the first is an undesirable situation. However, I think that's what you mean?

                    Yes, that's what I mean. Because #2 doesn't happen, even when the compiler screams warnings. Marc

                    Thyme In The Country

                    Some people believe what the bible says. Literally. At least [with Wikipedia] you have the chance to correct the wiki -- Jörgen Sigvardsson
                    People are just notoriously impossible. --DavidCrow
                    There's NO excuse for not commenting your code. -- John Simmons / outlaw programmer

                    K Offline
                    K Offline
                    Kevin McFarlane
                    wrote on last edited by
                    #41

                    Surely 2 does happen? Don't you ever write a method, get it working then go back and tidy it up - rename, extract methods, etc? Or do you mean that you do this yourself but most others don't?

                    Kevin

                    M 1 Reply Last reply
                    0
                    • C Chris S Kaiser

                      if(!connect()) return false; //continue with processing return true; That's a lot cleaner than bool ret = connect(); if(ret) { //continue with processing } return ret; And it saves a level of indenting. Maybe with 1280 x 1028 resolution this isn't such a big deal, but I still say there's nothing wrong with this style. Its just that, style.

                      This statement is false.

                      K Offline
                      K Offline
                      Kevin McFarlane
                      wrote on last edited by
                      #42

                      I generally aim for the single return but not religiously. I think in the case you mention where you have a return false at the top and then a single return at the bottom that's fine. Any other multiple return sceanrio is to be avoided. It's not such a big issue when methods are short, which they're supposed to be in good OO. But most programmers seem unable to write sufficiently short methods. Then multiple returns become a menace.

                      Kevin

                      C 1 Reply Last reply
                      0
                      • M Marc Clifton

                        charlieg wrote:

                        I call it code slamming

                        That's a great phrase! Marc

                        Thyme In The Country

                        People are just notoriously impossible. --DavidCrow
                        There's NO excuse for not commenting your code. -- John Simmons / outlaw programmer
                        People who say that they will refactor their code later to make it "good" don't understand refactoring, nor the art and craft of programming. -- Josh Smith

                        C Offline
                        C Offline
                        charlieg
                        wrote on last edited by
                        #43

                        Yeah, it tends to fit too. Analogy is "mule marks" in carpentry. This is where you miss the nail and leave a dent in the wood. Why mule marks? Because only an ass would make them... Geeze, I'm feisty today. I posted a rant in Dell's support forums, and they deleted it. Seems I put too much #$%#$^%$^ in the forum for their taste (it was all directed at Dell). Mistakes I can handle but making part of your process, pisses me off. Anyway, back to the code - the problem with code slamming, errr, it isn't good, everyone forgets the schedule pressures, so don't be *too* hard on the developer. There is usually more than enough blame to sling even though I would argue that one should get better at code slamming with more practice :mad:

                        Charlie Gilley Will program for food... Whoever said children were cheaper by the dozen... lied. My son's PDA is an M249 SAW. My other son commutes in an M1A2 Abrams

                        M 1 Reply Last reply
                        0
                        • K Kevin McFarlane

                          Surely 2 does happen? Don't you ever write a method, get it working then go back and tidy it up - rename, extract methods, etc? Or do you mean that you do this yourself but most others don't?

                          Kevin

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

                          Kevin McFarlane wrote:

                          Don't you ever write a method, get it working then go back and tidy it up - rename, extract methods, etc? Or do you mean that you do this yourself but most others don't?

                          Sure I do, but yes, it seems that on this project I'm helping out on, others are not doing that. Marc

                          Thyme In The Country

                          People are just notoriously impossible. --DavidCrow
                          There's NO excuse for not commenting your code. -- John Simmons / outlaw programmer
                          People who say that they will refactor their code later to make it "good" don't understand refactoring, nor the art and craft of programming. -- Josh Smith

                          K 1 Reply Last reply
                          0
                          • M Marc Clifton

                            Kevin McFarlane wrote:

                            Don't you ever write a method, get it working then go back and tidy it up - rename, extract methods, etc? Or do you mean that you do this yourself but most others don't?

                            Sure I do, but yes, it seems that on this project I'm helping out on, others are not doing that. Marc

                            Thyme In The Country

                            People are just notoriously impossible. --DavidCrow
                            There's NO excuse for not commenting your code. -- John Simmons / outlaw programmer
                            People who say that they will refactor their code later to make it "good" don't understand refactoring, nor the art and craft of programming. -- Josh Smith

                            K Offline
                            K Offline
                            Kevin McFarlane
                            wrote on last edited by
                            #45

                            Marc Clifton wrote:

                            Sure I do, but yes, it seems that on this project I'm helping out on, others are not doing that.

                            Seems to be the norm I'm afraid. It's rare that I maintain code that shows any courtesy to the maintenance programmer. :mad:

                            Kevin

                            1 Reply Last reply
                            0
                            • C charlieg

                              Yeah, it tends to fit too. Analogy is "mule marks" in carpentry. This is where you miss the nail and leave a dent in the wood. Why mule marks? Because only an ass would make them... Geeze, I'm feisty today. I posted a rant in Dell's support forums, and they deleted it. Seems I put too much #$%#$^%$^ in the forum for their taste (it was all directed at Dell). Mistakes I can handle but making part of your process, pisses me off. Anyway, back to the code - the problem with code slamming, errr, it isn't good, everyone forgets the schedule pressures, so don't be *too* hard on the developer. There is usually more than enough blame to sling even though I would argue that one should get better at code slamming with more practice :mad:

                              Charlie Gilley Will program for food... Whoever said children were cheaper by the dozen... lied. My son's PDA is an M249 SAW. My other son commutes in an M1A2 Abrams

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

                              charlieg wrote:

                              the problem with code slamming,

                              LOL! I thought you meant that as a phrase for how coding is done, not how code is criticized.

                              charlieg wrote:

                              everyone forgets the schedule pressures, so don't be *too* hard on the developer.

                              True, but somewhere there's the line between doing something to save time and doing something, erm, dumb. Marc

                              Thyme In The Country

                              People are just notoriously impossible. --DavidCrow
                              There's NO excuse for not commenting your code. -- John Simmons / outlaw programmer
                              People who say that they will refactor their code later to make it "good" don't understand refactoring, nor the art and craft of programming. -- Josh Smith

                              C 1 Reply Last reply
                              0
                              • M Marc Clifton

                                charlieg wrote:

                                the problem with code slamming,

                                LOL! I thought you meant that as a phrase for how coding is done, not how code is criticized.

                                charlieg wrote:

                                everyone forgets the schedule pressures, so don't be *too* hard on the developer.

                                True, but somewhere there's the line between doing something to save time and doing something, erm, dumb. Marc

                                Thyme In The Country

                                People are just notoriously impossible. --DavidCrow
                                There's NO excuse for not commenting your code. -- John Simmons / outlaw programmer
                                People who say that they will refactor their code later to make it "good" don't understand refactoring, nor the art and craft of programming. -- Josh Smith

                                C Offline
                                C Offline
                                charlieg
                                wrote on last edited by
                                #47

                                oh this is priceless :) I *do* mean how coding is done :doh: the fact that it might be interpreted either way makes it that much funnier...

                                Charlie Gilley Will program for food... Whoever said children were cheaper by the dozen... lied. My son's PDA is an M249 SAW. My other son commutes in an M1A2 Abrams

                                1 Reply Last reply
                                0
                                • M Marc Clifton

                                  Chris S Kaiser wrote:

                                  That's a lot cleaner than

                                  Actually, I'll disagree. Ironically, you'll see exactly your example of "not cleaner" in my code. And the reason is because at some point, I actually needed to code an else statement when connection failed, which didn't require my having to check if there's a return statement earlier. Trivial example, but still. Marc

                                  Thyme In The Country

                                  People are just notoriously impossible. --DavidCrow
                                  There's NO excuse for not commenting your code. -- John Simmons / outlaw programmer
                                  People who say that they will refactor their code later to make it "good" don't understand refactoring, nor the art and craft of programming. -- Josh Smith

                                  C Offline
                                  C Offline
                                  Chris S Kaiser
                                  wrote on last edited by
                                  #48

                                  Yeah, it was a trivial example. I've had to work on code where the method isn't broken out into multiple methods, and the ret val has to be checked again and again for validity for further processing. Which could get deep with regard to if blocks. So really I use it in the case where I didn't use exception handling. So the "correct" method in my case would be to throw an exception, but for some stuff I just return instead. But I don't think its a valid representation of a senior developer that doesn't care enough. Its situational.

                                  This statement is false.

                                  1 Reply Last reply
                                  0
                                  • K Kevin McFarlane

                                    I generally aim for the single return but not religiously. I think in the case you mention where you have a return false at the top and then a single return at the bottom that's fine. Any other multiple return sceanrio is to be avoided. It's not such a big issue when methods are short, which they're supposed to be in good OO. But most programmers seem unable to write sufficiently short methods. Then multiple returns become a menace.

                                    Kevin

                                    C Offline
                                    C Offline
                                    Chris S Kaiser
                                    wrote on last edited by
                                    #49

                                    Yeah, I won't disagree with that. Mostly though in a case where if block indentation goes more than three levels deep I'll use this mechanism if possible. But really as I said in my reply to Marc, I probably should be using exceptions in the extreme cases. I think this is bad if its not responsibly done. Blanket statements tend to grate on me. I don't write them but I still see the occaisonal goto used this way, and its argued that for errors that need to be further processing regardless of where they occured its "ok". Well, I guess we have the finally block to argue with now. ;)

                                    This statement is false.

                                    K 1 Reply Last reply
                                    0
                                    • M Marc Clifton

                                      Graham Shanks wrote:

                                      The similar circumstances that I see all too often is "we'll skip unit testing because of time pressure and catch all the errors in integration". Firstly the project will never catch up and second the integration will take longer without unit tests.

                                      Yup. I've got a situation where the following has been said: "we'll refactor in the unit tests when we've shipped the first version of the product." :laugh: :(( :laugh: :(( Marc

                                      Thyme In The Country

                                      People are just notoriously impossible. --DavidCrow
                                      There's NO excuse for not commenting your code. -- John Simmons / outlaw programmer
                                      People who say that they will refactor their code later to make it "good" don't understand refactoring, nor the art and craft of programming. -- Josh Smith

                                      G Offline
                                      G Offline
                                      Graham Shanks
                                      wrote on last edited by
                                      #50

                                      Marc Clifton wrote:

                                      I've got a situation where the following has been said: "we'll refactor in the unit tests when we've shipped the first version of the product."

                                      Let me guess - it never happened :)

                                      Graham My signature is not black, just a very, very dark blue

                                      1 Reply Last reply
                                      0
                                      • C Chris S Kaiser

                                        Yeah, I won't disagree with that. Mostly though in a case where if block indentation goes more than three levels deep I'll use this mechanism if possible. But really as I said in my reply to Marc, I probably should be using exceptions in the extreme cases. I think this is bad if its not responsibly done. Blanket statements tend to grate on me. I don't write them but I still see the occaisonal goto used this way, and its argued that for errors that need to be further processing regardless of where they occured its "ok". Well, I guess we have the finally block to argue with now. ;)

                                        This statement is false.

                                        K Offline
                                        K Offline
                                        Kevin McFarlane
                                        wrote on last edited by
                                        #51

                                        Yes, a lot of these rules are guidelines which you should follow unless you have a reasonable reason not to. There are often good exceptions. Also a comment explaining why you've violated the guideline is often worthwhile, e.g., a typical case might be a swallowed exception. At least this tells the code maintainer that you've thought about what you were doing. Re: goto, there's an example in Steve McConnell's Code Complete 1st edition (dunno whether it's in the 2nd ed) where there's some code with a goto in it and virtually everyoe who tries to rewrite it without the goto does so incorrectly!

                                        Kevin

                                        C 1 Reply Last reply
                                        0
                                        • K Kevin McFarlane

                                          Yes, a lot of these rules are guidelines which you should follow unless you have a reasonable reason not to. There are often good exceptions. Also a comment explaining why you've violated the guideline is often worthwhile, e.g., a typical case might be a swallowed exception. At least this tells the code maintainer that you've thought about what you were doing. Re: goto, there's an example in Steve McConnell's Code Complete 1st edition (dunno whether it's in the 2nd ed) where there's some code with a goto in it and virtually everyoe who tries to rewrite it without the goto does so incorrectly!

                                          Kevin

                                          C Offline
                                          C Offline
                                          Chris S Kaiser
                                          wrote on last edited by
                                          #52

                                          Another example would be in an assignment operator in C++:

                                          SomeObject &operator=(const SomeObject &rhs)
                                          {
                                          if(&rhs == this)
                                          return *this;

                                             //assign other members
                                             return \*this;
                                          

                                          }

                                          This is recommended by Scott Meyers. So I still say its a matter of intelligent use and style. I worked with people from both camps. Some prefer one, as it makes it more readable, and others prefer the second as its safer as a habit. But that's what I'm getting at. People consider it bad style because of irresponsible usage. And this brings up another point. For greenhorns this might be a good rule. But to say that a senior developer doesn't care about his code because of multiple returns, is a bit brash and not qualified as a blanket statement. -- modified at 13:10 Saturday 19th August, 2006 ~Added pre tag to code section.

                                          This statement is false.

                                          K 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