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. Programming Question

Programming Question

Scheduled Pinned Locked Moved The Lounge
wpfcsharpcombusinessarchitecture
88 Posts 42 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.
  • L Lost User

    "My code doesn't need comments because it is self documenting, all methods are small and have single functionality, and any business documentation should be provided by the specification and not the code." Discuss.

    MVVM# - See how I did MVVM my way ___________________________________________ Man, you're a god. - walterhevedeich 26/05/2011 .\\axxx (That's an 'M')

    _ Offline
    _ Offline
    _Damian S_
    wrote on last edited by
    #14

    I initial and date all my code changes in a comment near the change - you have no idea how many times I have been able to point to that in code for a client and say "No, noone has changed this since..." which is particularly handy if something strange goes on...

    Silence is golden... but duct tape is silver!! Booger Mobile - My bright green 1964 Ford Falcon - check out the blog here!! | If you feel generous - make a donation to Camp Quality!!

    A J 2 Replies Last reply
    0
    • _ _Damian S_

      I initial and date all my code changes in a comment near the change - you have no idea how many times I have been able to point to that in code for a client and say "No, noone has changed this since..." which is particularly handy if something strange goes on...

      Silence is golden... but duct tape is silver!! Booger Mobile - My bright green 1964 Ford Falcon - check out the blog here!! | If you feel generous - make a donation to Camp Quality!!

      A Offline
      A Offline
      AspDotNetDev
      wrote on last edited by
      #15

      So you aren't using source control? :((

      Thou mewling ill-breeding pignut!

      _ 1 Reply Last reply
      0
      • L Lost User

        I wasn't clear - this was a quote from a cow-worker. My comments, unfortunately, were not KSS so I couldn't post them here.

        MVVM# - See how I did MVVM my way ___________________________________________ Man, you're a god. - walterhevedeich 26/05/2011 .\\axxx (That's an 'M')

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

        _Maxxx_ wrote:

        cow-worker

        Someone who works the cow?

        K E 2 Replies Last reply
        0
        • L Lost User

          "My code doesn't need comments because it is self documenting, all methods are small and have single functionality, and any business documentation should be provided by the specification and not the code." Discuss.

          MVVM# - See how I did MVVM my way ___________________________________________ Man, you're a god. - walterhevedeich 26/05/2011 .\\axxx (That's an 'M')

          M Offline
          M Offline
          Mark_Wallace
          wrote on last edited by
          #17

          Bollocks.

          I wanna be a eunuchs developer! Pass me a bread knife!

          1 Reply Last reply
          0
          • L Lost User

            I think comments are worth their weight so ling as they are written well - describing the business reasons not the technology (unless the tech is crafty, unusual or complex) when I sit down to write a method, I start by calling it something

            public double CalculateTax(double fine)
            {
            }

            Then I comment it

            ///
            /// Calculate the tax, taking into account the fine passed.
            /// Requires that the tax rate is retrievable from the TaxService
            ///

            Then I might write some test code just to get it building

            ///
            /// Calculate the tax, taking into account the fine passed.
            /// Requires that the tax rate is retrievable from the TaxService
            ///
            public double CalculateTax(double fine)
            {
            // TODO: Perform the tax calculation
            return 34567.89;
            }

            Then I start to flesh out the method by way of comments

            ///
            /// Calculate the tax, taking into account the fine passed.
            /// Requires that the tax rate is retrievable from the TaxService
            ///
            public double CalculateTax(double fine)
            {
            // Get the tax rate using the appropriate service
            // calculate the fine (I think it is just fine * tax rate but need to check with spec!)
            }

            Then, finally, I write the code

            ///
            /// Calculate the tax, taking into account the fine passed.
            /// Requires that the tax rate is retrievable from the TaxService
            ///
            public double CalculateTax(double fine)
            {
            // Get the tax rate using the appropriate service
            double taxRate = GetTaxRate();
            // calculate the fine
            tax = taxRate * fine;

            return tax ;
            

            }

            That way, I can remember where I was if I get interrupted, the comments aren't an afterthought, they are a part of the process and, if I get hit by the Programmer bus, someone else should be able to see what I was doing. Obv. the example is small and trivial, but that's how I work and I fail to understand the 'don't need comments' brigade. What I do hate is/...

            // Multiply the rate by the amount
            return rate * amount;

            which is simply a case of bad commenting in my book - it is not necessary to comment every step

            MVVM# - See how I did MVVM my way ___________________________________________ Man, you're a god. - walterhevedeich 26/05/2011 .\\axxx (That's an 'M')

            M Offline
            M Offline
            Mark_Wallace
            wrote on last edited by
            #18

            _Maxxx_ wrote:

            What I do hate is/...

            // Multiply the rate by the amount
            return rate * amount;

            which is simply a case of bad commenting in my book

            I agree. It's far too much typing, and excludes reuse of the function. It should be:

            // Multiply
            return a * b;

            At least, that's what I'm used to seeing.

            I wanna be a eunuchs developer! Pass me a bread knife!

            1 Reply Last reply
            0
            • L Lost User

              "My code doesn't need comments because it is self documenting, all methods are small and have single functionality, and any business documentation should be provided by the specification and not the code." Discuss.

              MVVM# - See how I did MVVM my way ___________________________________________ Man, you're a god. - walterhevedeich 26/05/2011 .\\axxx (That's an 'M')

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

              That's obviously a lie. Self documenting functions are nice, but you can't do anything nontrivial that way. Then again, maybe his code only does trivial things? :)

              1 Reply Last reply
              0
              • L Lost User

                "My code doesn't need comments because it is self documenting, all methods are small and have single functionality, and any business documentation should be provided by the specification and not the code." Discuss.

                MVVM# - See how I did MVVM my way ___________________________________________ Man, you're a god. - walterhevedeich 26/05/2011 .\\axxx (That's an 'M')

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

                Round flying thing. Discus.

                *pre-emptive celebratory nipple tassle jiggle* - Sean Ewington

                "Mind bleach! Send me mind bleach!" - Nagy Vilmos

                CodeStash - Online Snippet Management | My blog | MoXAML PowerToys | Mole 2010 - debugging made easier

                L 1 Reply Last reply
                0
                • L Lost User

                  "My code doesn't need comments because it is self documenting, all methods are small and have single functionality, and any business documentation should be provided by the specification and not the code." Discuss.

                  MVVM# - See how I did MVVM my way ___________________________________________ Man, you're a god. - walterhevedeich 26/05/2011 .\\axxx (That's an 'M')

                  N Offline
                  N Offline
                  Nagy Vilmos
                  wrote on last edited by
                  #21

                  The correct response to such a statement is:

                  "Just because your mother slept with her brother doesn't mean the rest of us will agree it's a good idea."


                  Panic, Chaos, Destruction. My work here is done. Drink. Get drunk. Fall over - P O'H OK, I will win to day or my name isn't Ethel Crudacre! - DD Ethel Crudacre I cannot live by bread alone. Bacon and ketchup are needed as well. - Trollslayer Have a bit more patience with newbies. Of course some of them act dumb - they're often *students*, for heaven's sake - Terry Pratchett

                  1 Reply Last reply
                  0
                  • L Lost User

                    I think comments are worth their weight so ling as they are written well - describing the business reasons not the technology (unless the tech is crafty, unusual or complex) when I sit down to write a method, I start by calling it something

                    public double CalculateTax(double fine)
                    {
                    }

                    Then I comment it

                    ///
                    /// Calculate the tax, taking into account the fine passed.
                    /// Requires that the tax rate is retrievable from the TaxService
                    ///

                    Then I might write some test code just to get it building

                    ///
                    /// Calculate the tax, taking into account the fine passed.
                    /// Requires that the tax rate is retrievable from the TaxService
                    ///
                    public double CalculateTax(double fine)
                    {
                    // TODO: Perform the tax calculation
                    return 34567.89;
                    }

                    Then I start to flesh out the method by way of comments

                    ///
                    /// Calculate the tax, taking into account the fine passed.
                    /// Requires that the tax rate is retrievable from the TaxService
                    ///
                    public double CalculateTax(double fine)
                    {
                    // Get the tax rate using the appropriate service
                    // calculate the fine (I think it is just fine * tax rate but need to check with spec!)
                    }

                    Then, finally, I write the code

                    ///
                    /// Calculate the tax, taking into account the fine passed.
                    /// Requires that the tax rate is retrievable from the TaxService
                    ///
                    public double CalculateTax(double fine)
                    {
                    // Get the tax rate using the appropriate service
                    double taxRate = GetTaxRate();
                    // calculate the fine
                    tax = taxRate * fine;

                    return tax ;
                    

                    }

                    That way, I can remember where I was if I get interrupted, the comments aren't an afterthought, they are a part of the process and, if I get hit by the Programmer bus, someone else should be able to see what I was doing. Obv. the example is small and trivial, but that's how I work and I fail to understand the 'don't need comments' brigade. What I do hate is/...

                    // Multiply the rate by the amount
                    return rate * amount;

                    which is simply a case of bad commenting in my book - it is not necessary to comment every step

                    MVVM# - See how I did MVVM my way ___________________________________________ Man, you're a god. - walterhevedeich 26/05/2011 .\\axxx (That's an 'M')

                    N Offline
                    N Offline
                    Nagy Vilmos
                    wrote on last edited by
                    #22

                    I so agree with that. When I worked, I tried to impart the huge value of Comment First Development. It is always easier to describe what you want to do then it is to write the code. In the trivial cases it can be annoying, especially on accessor methods [properties to you C# boys], but even when you get to something as simple as your tax calc having the comments in place makes a great difference. The second, and not to be ignored, advantage of CFD is that it is very easy to leave off the comment once you've finished the code.


                    Panic, Chaos, Destruction. My work here is done. Drink. Get drunk. Fall over - P O'H OK, I will win to day or my name isn't Ethel Crudacre! - DD Ethel Crudacre I cannot live by bread alone. Bacon and ketchup are needed as well. - Trollslayer Have a bit more patience with newbies. Of course some of them act dumb - they're often *students*, for heaven's sake - Terry Pratchett

                    1 Reply Last reply
                    0
                    • P Pete OHanlon

                      Round flying thing. Discus.

                      *pre-emptive celebratory nipple tassle jiggle* - Sean Ewington

                      "Mind bleach! Send me mind bleach!" - Nagy Vilmos

                      CodeStash - Online Snippet Management | My blog | MoXAML PowerToys | Mole 2010 - debugging made easier

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

                      80's dance clubs Discos

                      MVVM# - See how I did MVVM my way ___________________________________________ Man, you're a god. - walterhevedeich 26/05/2011 .\\axxx (That's an 'M')

                      1 Reply Last reply
                      0
                      • L Lost User

                        "My code doesn't need comments because it is self documenting, all methods are small and have single functionality, and any business documentation should be provided by the specification and not the code." Discuss.

                        MVVM# - See how I did MVVM my way ___________________________________________ Man, you're a god. - walterhevedeich 26/05/2011 .\\axxx (That's an 'M')

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

                        (c++ centric answer) Stupid/Verbose/Out of sync comments are worse than no comments. All functions and parameter names should be self-descriptive; use proper user defined types instead of POD (if you have a student ID, let the type be a StudentID instead of a int) All functions should be as simple as possible; they should do 1 thing only; methods should be const if they do not modify the data, Special cases should be fixed by proper code design than by adding a comment in the code (i.e. parameter can be NULL or not, or sometimes ... ), if a method cannot receive a NULL pointer, just change the type to a reference; let the client of that function clean up its own code to not have a null pointer. When there are good coding practice, comments are not "that" necessary, needed in some instances, but not always necessary.

                        Nihil obstat

                        L J 2 Replies Last reply
                        0
                        • C Chris Maunder

                          I already have[^]. I'm no longer willing to even entertain the discussion anymore. Every "good" example I've seen where commenting isn't needed is contrived. The real world is messy. Use comments.

                          cheers, Chris Maunder The Code Project | Co-founder Microsoft C++ MVP

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

                          I agree, and I like to use comments. I actually often have more comments than code sometimes (mostly XML documentation comments, those can get quite long, and if they get so long (~35 lines) due to a function that does a number of things, I split that function up to make it manageable). I like comments. They help me when I go back to something and think 'WTF was I thinking there'. Sometimes.

                          Bob Dole

                          The internet is a great way to get on the net.

                          :doh: 2.0.82.7292 SP6a

                          J 1 Reply Last reply
                          0
                          • M Maximilien

                            (c++ centric answer) Stupid/Verbose/Out of sync comments are worse than no comments. All functions and parameter names should be self-descriptive; use proper user defined types instead of POD (if you have a student ID, let the type be a StudentID instead of a int) All functions should be as simple as possible; they should do 1 thing only; methods should be const if they do not modify the data, Special cases should be fixed by proper code design than by adding a comment in the code (i.e. parameter can be NULL or not, or sometimes ... ), if a method cannot receive a NULL pointer, just change the type to a reference; let the client of that function clean up its own code to not have a null pointer. When there are good coding practice, comments are not "that" necessary, needed in some instances, but not always necessary.

                            Nihil obstat

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

                            Maximilien wrote:

                            Stupid/Verbose/Out of sync comments are worse than no comments.

                            This is similar to the many many dev. arguments where the adage is something done badly is bad - well, of course bad comments are bad - so is bad code! Ill maintained comments can be bad - so can ill maintained code. CODE and COMMENTS are all part of the code base - i don't think they should be thought of as something separate and they should be included in code reviews. A comment that says // Update the Customer for a method public void UpdateCustomer() is obviously a waste of time, and is often the sort of comment that people who don't think they should be made to comment code put in - in a sort of "see, i told you commenting was a waste of time!" But what does UpdateCustomer() do? Does it update the local customer object, persist it to the database, change some properties? Evidently UpdateCustomer is an insufficient comment and an insufficient method name - but ... I think in a sense there are two types of comment... 1. Code comments. This is the sort of comment you are talking about, I think. 2. Business comments - this explains to the programmer the business of the function or code block. A method name of

                            public StockItem FindTheStockItemWithTheEarliestSellByDateThatIsEitherOfTheTypePassedOrOneOfTheGenericTypesSimilarToThatTypeThatIsAcceptableByTheCustomer(StockType stockType, Customer customer, Date dateToCheck)
                            {
                            }

                            Is simply less legible than the equivalent

                            /*
                            Find the stock item with the earliest sel by date that is either of the type passed, or one of the generic types, similar to that type, that is acceptable by the customer
                            */
                            public StockItem FindStock((StockType stockType, Customer customer, Date dateToCheck)
                            {

                            }

                            MVVM# - See how I did MVVM my way ___________________________________________ Man, you're a god. - walterhevedeich 26/05/2011 .\\axxx (That's an 'M')

                            1 Reply Last reply
                            0
                            • L Lost User

                              "My code doesn't need comments because it is self documenting, all methods are small and have single functionality, and any business documentation should be provided by the specification and not the code." Discuss.

                              MVVM# - See how I did MVVM my way ___________________________________________ Man, you're a god. - walterhevedeich 26/05/2011 .\\axxx (That's an 'M')

                              G Offline
                              G Offline
                              Gary R Wheeler
                              wrote on last edited by
                              #27

                              ... and that's when the fight started.

                              Software Zen: delete this;

                              1 Reply Last reply
                              0
                              • A AspDotNetDev

                                Simples:

                                double CalculateTax(double fine) {
                                var notAComment1 = "Calculate the tax based on the rate from the database.";
                                return fine * GetTaxRate();
                                }

                                Seriously, though, I like comments, even for private members. And I like everything (except for constants and member variables, which typically have a corresponding property) to have a comment. I mostly read the comments rather than the code when I'm quickly navigating through code. I don't want a funky looking uncommented section to slow me down. I also write XML comments so intellisense helps me avoid having to go to the definition to find more info.

                                Thou mewling ill-breeding pignut!

                                T Offline
                                T Offline
                                TheGreatAndPowerfulOz
                                wrote on last edited by
                                #28

                                AspDotNetDev wrote:

                                even for private members

                                So you tatoo your privates?

                                If your actions inspire others to dream more, learn more, do more and become more, you are a leader.-John Q. Adams
                                You must accept one of two basic premises: Either we are alone in the universe, or we are not alone in the universe. And either way, the implications are staggering.-Wernher von Braun
                                Only two things are infinite, the universe and human stupidity, and I'm not sure about the former.-Albert Einstein

                                H 1 Reply Last reply
                                0
                                • L Lost User

                                  "My code doesn't need comments because it is self documenting, all methods are small and have single functionality, and any business documentation should be provided by the specification and not the code." Discuss.

                                  MVVM# - See how I did MVVM my way ___________________________________________ Man, you're a god. - walterhevedeich 26/05/2011 .\\axxx (That's an 'M')

                                  T Offline
                                  T Offline
                                  TheGreatAndPowerfulOz
                                  wrote on last edited by
                                  #29

                                  In general I agree with the goal of having self-documenting code. However, that's not always possible or feasible. Judicious, and appropriate commenting is as important as well architected and well implemented code. The comments should inform me why you're doing what you're doing, not what you're doing. For that, I can read the code. If it's not immediately obvious from the code why something is being done, then a comment, as short as possible, is necessary. Finally, when the code is updated, please, please update the comments. I've seen too much code where the comments no longer apply.

                                  If your actions inspire others to dream more, learn more, do more and become more, you are a leader.-John Q. Adams
                                  You must accept one of two basic premises: Either we are alone in the universe, or we are not alone in the universe. And either way, the implications are staggering.-Wernher von Braun
                                  Only two things are infinite, the universe and human stupidity, and I'm not sure about the former.-Albert Einstein

                                  J 1 Reply Last reply
                                  0
                                  • L Lost User

                                    "My code doesn't need comments because it is self documenting, all methods are small and have single functionality, and any business documentation should be provided by the specification and not the code." Discuss.

                                    MVVM# - See how I did MVVM my way ___________________________________________ Man, you're a god. - walterhevedeich 26/05/2011 .\\axxx (That's an 'M')

                                    J Offline
                                    J Offline
                                    jschell
                                    wrote on last edited by
                                    #30

                                    _Maxxx_ wrote:

                                    because it is self documenting, all methods are small and have single functionality

                                    All of those are opinions.

                                    _Maxxx_ wrote:

                                    and any business documentation should be provided by the specification and not the code.

                                    If in fact the business specification is a technical specification and well done it is possible that is true. But since most business specifications are not technical specifications the first part of the assertion becomes questionable. And since many are not kept completely up to date throughout a project the second part assertion is also questionable. Not to mention of course that the second part is...again...an opinion.

                                    T 1 Reply Last reply
                                    0
                                    • _ _Damian S_

                                      I initial and date all my code changes in a comment near the change - you have no idea how many times I have been able to point to that in code for a client and say "No, noone has changed this since..." which is particularly handy if something strange goes on...

                                      Silence is golden... but duct tape is silver!! Booger Mobile - My bright green 1964 Ford Falcon - check out the blog here!! | If you feel generous - make a donation to Camp Quality!!

                                      J Offline
                                      J Offline
                                      jschell
                                      wrote on last edited by
                                      #31

                                      I use source control and check in with relevent comments - you have no idea how many times I have been able to point to that in code for a client and say "No, noone has changed this since..." which is particularly handy if something strange goes on.

                                      1 Reply Last reply
                                      0
                                      • M Maximilien

                                        (c++ centric answer) Stupid/Verbose/Out of sync comments are worse than no comments. All functions and parameter names should be self-descriptive; use proper user defined types instead of POD (if you have a student ID, let the type be a StudentID instead of a int) All functions should be as simple as possible; they should do 1 thing only; methods should be const if they do not modify the data, Special cases should be fixed by proper code design than by adding a comment in the code (i.e. parameter can be NULL or not, or sometimes ... ), if a method cannot receive a NULL pointer, just change the type to a reference; let the client of that function clean up its own code to not have a null pointer. When there are good coding practice, comments are not "that" necessary, needed in some instances, but not always necessary.

                                        Nihil obstat

                                        J Offline
                                        J Offline
                                        jschell
                                        wrote on last edited by
                                        #32

                                        Maximilien wrote:

                                        Stupid/Verbose/Out of sync comments are worse than no comments.

                                        However that is also a good indication that code reviews are not occurring or at least they are not being done correctly.

                                        T 1 Reply Last reply
                                        0
                                        • T TheGreatAndPowerfulOz

                                          In general I agree with the goal of having self-documenting code. However, that's not always possible or feasible. Judicious, and appropriate commenting is as important as well architected and well implemented code. The comments should inform me why you're doing what you're doing, not what you're doing. For that, I can read the code. If it's not immediately obvious from the code why something is being done, then a comment, as short as possible, is necessary. Finally, when the code is updated, please, please update the comments. I've seen too much code where the comments no longer apply.

                                          If your actions inspire others to dream more, learn more, do more and become more, you are a leader.-John Q. Adams
                                          You must accept one of two basic premises: Either we are alone in the universe, or we are not alone in the universe. And either way, the implications are staggering.-Wernher von Braun
                                          Only two things are infinite, the universe and human stupidity, and I'm not sure about the former.-Albert Einstein

                                          J Offline
                                          J Offline
                                          jschell
                                          wrote on last edited by
                                          #33

                                          ahmed zahmed wrote:

                                          ...is as important as well architected and well implemented code.

                                          Yes but that there is probably the reason comments are needed because after all how many developers do you come across who are willing to say that they are creating code that is poorly architected and poorly implemented? Excluding some (but far from all) beginning programmers I have very seldom come across anyone that felt that they were producing poor code. So one might then conclude that no one should comment code because everyone is producing great code. And then there is also the implicit problem that presumes that that good is the only possible solution that many people would come up with. Thus everyone should understant it in the first place because it is the only possible solution. Rather than one of ten or even one of 100.

                                          T 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