Refactoring Finds Dead Code 102

Posted by Bob Koss Thu, 01 Jan 2009 03:01:00 GMT

One of the many things that I just love about my job as a consultant/mentor is when I actually get to sit down with programmers and pair program with them. This doesn’t seem to happen nearly as often as I would like, so when two developers at a recent client site asked me if I could look at some legacy code to see if I could figure out how to get some tests around it, I jumped at the opportunity. We acquired a room equipped with a projector and a whiteboard. A laptop was connected to the projector and we were all able to comfortably view the code.

I visit a lot of different companies and see a lot of absolutely ghastly code. What I was looking at here wasn’t all that bad. Variable names were not chosen to limit keystrokes and method names appeared to be descriptive. This was good news, as I needed to understand how this was put together before I could offer help with a testing strategy.

As we walked through the code, I noticed that there were classes in the project directory ending in ‘Test’. This took me by surprise. Usually when I’m helping people with legacy code issues, there aren’t any tests. Here, there were tests in place and they actually passed. Very cool, but now my mission wasn’t clear to me as I thought my help was needed getting tests in place around legacy code.

The developers clarified that they wanted help in testing private methods. Ah ha, the plot thickens.

The question of testing private methods comes up frequently whether I’m teaching a class or consulting on a project. My first response is a question. “Is the private method being tested through the public interface to the class?” If that’s the case, then there’s nothing to worry about and I can steer the conversation away from testing private methods to testing behaviors of a class instead of trying to test individual methods. Note that a private method being tested through its public interface would be guaranteed if the class was developed TDD style where the test is written first, followed by one or more public methods to make the test pass, followed by one or more extract method refactorings, which would be the birth of the private methods. This is almost never the case. My client didn’t know how the code was developed, but by inspection they concluded that the parameters of the test were adequately exercising the private method.

It looked like my work was done here. But not so fast.

I have a policy that says that whenever I have code up in an editor, I have to try to leave it just a little bit better than when I found it. Since we had put the testing matter to rest and we still had some time left in the conference room before another meeting started, I suggested that we see if we could make some small improvements to the code we were examining.

As I said earlier, the code wasn’t horrible. The code smell going past my nostrils was Long Method and the cure was Extract Method.

The overall structure of the method we were examining was

    
    if( conditional_1 )
    {
        // do lots of complicated stuff
    }
    else if( conditional_2 )
    {
        // do even more complicated stuff
    }
    else
    {
        // do stuff so complicated nobody understood it
    }
    

where conditional_1 was some horribly convoluted expression involving lots of &&’s, ||’s, and parentheses. Same for condition_2, which also had a few ^’s thrown in for good luck. To understand what the method did, one would have to first understand the details of how the method did it.

I asked the developers if they could come up with a nice, descriptive method name that described what I’m calling condition_1 so that we could do an extract method refactoring and the code would look like:

    
    if( descriptive_name() )
    {
        // do lots of complicated stuff
    }
    // etc
    

Now there were less details to understand when trying to determine what this method did. If we were to stop here and check in the code, we could leave the session feeling good as the code is better than when we started. But we still had time before we had to abandon our conference room so I pressed on.

“Can you summarize what this code does as a descriptive method name,” I asked. The developers pondered a few moments and came up with what they felt was a good name. Excellent. We did the same procedure for the “else if” clause. When we finished that, one of the developers said something along the lines of, “That was the easy part, I have no idea what this [else] remaining code does.” I was going to pat everybody on the back and call it a day because the code had improved tremendously from when we started, but the developers seemed to have a “we can’t stop now” attitude. They studied the code, pondered, cursed, discussed some more, and then one of them said, “This code can never execute!”

I’d like to use the expression, “You could have heard a pin drop,” to describe the silence in the room, but since there were only three of us, the phrase looses its power. As it turns out, now that the if() and else if() conditionals were given descriptive names and people could grok them at a glance, it became obvious that the business rules didn’t permit the final else – the first two conditions were all that could exist and the most complicated code of all was never being called. This was downright comical!

I asked if the tests would still pass if we deleted the code and after a short examination of the tests, the developers weren’t as confident that the test parameters actually hit that area of code. There was a log() statement in that code and one of the developers was going to examine the production logs to see if the code ever executed.

So there you have it, refactor your code and the bad parts just go away!

Comments

Leave a response

  1. Avatar
    David L. Penton 1 day later:

    Even when someone exclaims that “this condition can never happen” it is still valid to check. Why? It ends up being an error condition – or let’s say a “known unknown”. That means that it is unknown what conditions may trigger that state. What if the business rules are incorrect? How would you know if you didn’t check for “that” condition?

  2. Avatar
    Steve Freeman 1 day later:

    I’ve been doing a lot of this kind of clean up recently and, as well as surplus code, it usually throws up all sorts of unclear logic. Usually we get about a couple of hours in and have to start going back to the business to ask them about all the new edge cases we’ve just found.

  3. Avatar
    André Faria Gomes 3 days later:

    Very nice post! I am trying to improve that in legacy code every day. Domain Driven Design techniques are helping a lot with that.

    Cheers!

  4. Avatar
    André Faria Gomes 3 days later:

    Very nice post! I am trying to improve that in legacy code every day. Domain Driven Design techniques are helping a lot with that.

    Cheers!

  5. Avatar
    Jebadiah Moore 4 days later:

    I see people do this a lot, and it’s always bugged me. Why would you create a whole new method for something you’re only going to do once? Sure, a good compiler will probably inline it, but it pollutes the namespace and besides, a lot of dynamic languages won’t inline it. Then you’re making your program slower when you could’ve just left a comment.

    This is ugly:
    if ( a&&b | c&&!(d+6) ){
        //stuff
    }
    
    But this seems even more complex:
    bool isFoobar(){
        return (a&&b | c&&!(d+6));
    }
    if ( isFoobar() ){
        //stuff
    }
    

    The best solution to me, unless you’re using the condition repeatedly, is

    if ( a&&b | c&&!(d+6) ){  //if isFoobar
        //stuff
    }
    

    And even if the condition is used repeatedly, unless you’re going to include it in some kind of API or you’re going to use it outside of the current module, it would probably be better to use a macro.

    This kind of pattern does come up a lot, though, even in proofs and such. Obviously it wouldn’t really make sense to add it to Java or C or anything, but it might be cool in a higher level language like Python or Ruby to have a feature like:

    if isFoobar where isFoobar = a&&b | c&&!(d+6):
        #stuff
    

    The where clause would simply insert the expression back into the if statement, but if would also create a (lazily-evaluated, preferably) reference to an automatically created closure which would re-evaluate the condition. That’d probably be more work than it was worth, though. (Maybe in Lisp).

  6. Avatar
    Jebadiah Moore 4 days later:

    Whoops, I just realized I only used one bar in the middle I doubt a bit-wise or is what would be needed :)

  7. Avatar
    yachris 5 days later:

    Great post. I’ve recently updated Eclipse using Yoxos’s automatic choose-the-plugins-you-want and they get the dependencies right service. This got me EclEmma, which shows code coverage with Green, Yellow and Red highlighting. It’s very cool, particularly in dealing with legacy code, to put together a set of tests for the ‘known’ cases and see exactly what code is covered. It would have helped here, early on.

    Jebadiah - evidently you work with actual professionals… I used to work with a guy who’d routinely write two to three hundred line methods, and swear that that was The Right Thing™ using arguments just like yours. Copy pasted code? “Sure! Why not? It gets the job done…!” Sigh… kinda glad he’s gone :)

  8. Avatar
    Paul 5 days later:

    Jebadiah : 1. you didn’t choose good names replace isFoobar with stuffIsNeeded. You’ll get:

    bool stuffIsNeeded(){
        return (a&&b | c&&!(d+6));
    }
    
    if ( stuffIsNeeded() ){
        //stuff
    }

    it may seems dummy, but I feel it is better…

    2. Once you’ve done that, you can test this ugly condition, without testing again and again the ‘stuff’ part. My own experience is that it’s pretty hard to test such a complex expression. Specially to be sure you when through all the possible paths…

    3. Then, you can refactor that ugly test and make it clearer. I would probably cut it in 2 parts around the | (even if it was a double one)... but well, that is up to you !

    My small experience also though me not to rely on comments: this is a classic pattern of what could happen in your case: step 1: your code
    if ( a&&b | c&&!(d+6) ){  //if isFoobar
        //stuff
    }
    step 2: some people don’t like comments at the end of the line, so
      //if isFoobar
    if ( a&&b | c&&!(d+6) ){
        //stuff
    }
  9. Avatar
    Paul 5 days later:

    sorry for the interruption….

    step 3: someone move the code, but forgot the comment:
    //if isFoobar
    //some other stuff, not related to Foo, bar, or anything

    Then you’re in the middle of nowhere, you’ve got a misleading comment in a code, and a piece of your logic lost (if you add choosen a real name, not isFoobar)...

  10. Avatar
    Ryan Breidenbach 6 days later:

    Unless I am 100% sure that the condition I am removing will never occur, I like leave trip wire just in case:

    if (foo())
      doFoo();
    else if (bar())
      doBar();
    else
      throw new IllegalStateException("Some helpful message.");
    

    This is especially true if there is minimal test coverage around the code or the code is significantly complex. Relying on eyeballing the code and my knowledge of the system is not enough. I would rather be sure and put it in the code.

  11. Avatar
    Slashene 5 months later:

    Jebadiah Moore, I think if your condition is not reused, you can do :

    bool isFoobar = a&&b | c&&!(d+6);

    if (isFoobar){ ...

    }

  12. Avatar
    mario about 1 year later:

    Very nice post! I am trying to improve that in legacy code every day. Domain Driven Design techniques are helping a lot with that…

  13. Avatar
    Argor about 1 year later:

    The same would probably have been found by formal methods. Coverty beats refactoring for finding bugs or dead code.

  14. Avatar
    Simon Harris about 1 year later:

    Argor – you’re confusing “automated” with “formal”. Done correctly, Refactoring is a formal process.

    You’ve also missed the point somewhat (perhaps intentionally?). Coverity, which is what I assume you mean, might find dead code, but it can provide the developers with no understanding of the code, nor explain why the code was dead in the first place.

    This is the real win here: not that some code got deleted, but that the developers emerged with a deeper understanding of their codebase, renewed optimism and stronger mental tools for dealing with the myriad complex, poorly-understood sections of code that they’ll no doubt face in the near future while working on that application.

  15. Avatar
    kerala used car about 1 year later:

    I dont wanna go anywhere to do my projects at school. Your blogs are helping me to score high marks

  16. Avatar
    Separate about 1 year later:

    In this summer, the romantic and small, is confronted dragon-boat festival holiday for a picnic superexcellent period. Romantic, melting snow spins dress is today season vogue girls wear build up the important sheet is tasted, using qualitative produce elegant light spins the romantic sense, plus the broken this year popular element , presents different female glamour.

  17. Avatar
    Separate about 1 year later:

    Sunshine of summer, the beautiful flower asperses full whole body, sweet and elegant breath, the circulation of the spread of elegant silk dress eyes from the waves to linger flying skirt . A gentle and graceful elasticity waist foil, more show delicate temperament of your daughter beauties.

  18. Avatar
    lidialin about 1 year later:

    So many such complicated codes, i have a headache. I have to learn about slowly.

  19. Avatar
    rocku about 1 year later:

    Very nice post! I am trying to improve that in legacy code every day.

  20. Avatar
    liveyou about 1 year later:

    It’s really amazing with your post. Thank you. Guide on how to copy dvd to ipad, how can I copy files onto an ipad, how to copy a dvd movie to ipad, how to copy files from computer to ipad.

  21. Avatar
    cosplay about 1 year later:

    I see people do this a lot, and it’s always bugged me. Why would you create a whole new method for something you’re only going to do once? Sure, a good compiler will probably inline it, but it pollutes the namespace and besides, a lot of dynamic languages won’t inline it. Then you’re making your program slower when you could’ve just left a comment.

  22. Avatar
    jenniferthomos2 about 1 year later:

    How to convert AVI to iPad with best iPad Video Converter – AVI to iPad Best AVI to iPad Converter a professional iPad converter to convert avi files into iPad mp4 format, of course it can easily convert almost 100 kinds of videos to iPad for enjoying. The input format includes AVI, AMV, MKV, FLV, MTS, M2TS, MOD, H.264/AVC, RMVB, HD TS, HD MOV, WMV HD, etc. Best AVI to iPad Converter allows users to enjoy videos with the large and high-resolution screen freely with your iPad. There are many powerful editing functions such as effect, trim, crop, add watermark, merge and so on. RECOMMENDED: For Mac Users, you can try iPad Converter for Mac Version! FLV to iPad Converter DivX to iPad Converter

  23. Avatar
    dupont lighter about 1 year later:

    dupont lighter, dupont lighters, st dupont lighter, s.t. dupont lighters. As classical music evolved, distinctive characteristics developed. Changes in form were seen along with changes in phrase structure.

  24. Avatar
    Men’s belts about 1 year later:

    Men’s belts, LV men’s belts, Fashionable Gucci men’s belts, Attractive style Hermes men’s belts.
    The earpiece also works with most phones that allow Bluetooth connections, although Earloomz suggests users check their phone manual to be sure.

  25. Avatar
    surgery games about 1 year later:

    I see people do this a lot, and it’s always bugged me. Why would you create a whole new method for something you’re only going to do once? Sure, a good compiler will probably inline it, but it pollutes the namespace and besides, a lot of dynamic languages won’t inline it. Then you’re making your program slower when you could’ve just left a comment.

  26. Avatar
    Cazare Ieftina Bucuresti about 1 year later:

    it appears gray in ReSharper if it’s dead code (at least within the solution only)...like uncalled methods or classes or unused properties and variables. Regim Hotelier

  27. Avatar
    b about 1 year later:

    http://a.com

  28. Avatar
    lv belt about 1 year later:

    LV belt, LV belts, LV belts for men, LV Mens belts.
    It is sometimes said that Vionnet invented bias cutting, but historical evidence suggests that close fitting gowns and veils of the medieval period were made with cross cut fabrics.

  29. Avatar
    replica belts about 1 year later:

    replica gucci belts, replica gucci belt, replica belts, replica belt, replica louis vuitton belts, replica louis vuitton belt, replica hermes belts, replica hermes belt.
    Physical fitness was seen as important in the stylish thirties and in various forms was popular across Europe especially in Germany and Austria.

  30. Avatar
    men's belt about 1 year later:

    Men’s belts, LV men’s belts, Fashionable Gucci men’s belts, Attractive style Hermes men’s belts.
    So long, old world who can, with its non-self, and it could be longevity. Is a sage, putting himself in and outside the body and the body exist. Non their selfless not? Which gives it private.

  31. Avatar
    designer belts about 1 year later:

    designer belt, designer belts, designer Mens belts, designer belts for men. mens omega watches, mens omega watch.louis vuitton wallet, louis vuitton wallets, mens louis vuitton wallets, women louis vuitton wallets.
    Physical fitness was seen as important in the stylish thirties and in various forms was popular across Europe especially in Germany and Austria.

  32. Avatar
    rhinestone belts about 1 year later:

    rhinestone belt, rhinestone belts, rhinestone Mens belts, rhinestone belts for men. omega watches prices, omega watch prices. gucci wallet, gucci wallets, mens gucci wallet, women gucci wallet.
    Quickly looking at things from the Python users perspective, one of the most important things is going to be providing an easy way for the user to restart just their application processes so that code changes can be picked up.

  33. Avatar
    studded belts about 1 year later:

    studded belt, studded belts, studded Mens belts, studded belts for men. rolex watches for sale, rolex watch for sale. gucci mens wallets, gucci wallets for men, gucci wallets, gucci mens wallet.
    As classical music evolved, distinctive characteristics developed. Changes in form were seen along with changes in phrase structure.

  34. Avatar
    waist belts about 1 year later:

    waist belt, waist belts, waist Mens belts, waist belts for men. vintage rolex watches, vintage rolex watch.
    Although basing a restart on changes to the script file may seem better, it also has its own problems because of the multi process nature of Apache and because the initial Apache process receiving the request would generally be running as a different user to the application. This process therefore may not have the privileges necessary to send a signal to a application process to get it to shutdown and restart before a request is sent to it.

  35. Avatar
    lidia about 1 year later:

    Crown Holder Jeanslaunched as a diffusion line in 1981. Internationally renowned and oozing with quality and style, Cheap Crown Holder Jeans takes contemporary fashion to another level.From elegant and glamorous backless ball dresses to casual basics, Crown Holders Jeans dominates the world of designer fashion for the modern man.Mens Diesel Jeans is an Italian design company known best for its clothing which is aimed mainly to the adult market, especially the jeans. The new season Cheap Diesel Jeansare definitely the must buy pair of jeans this year. They incorporate a Straight cut design which are very casual and would compliment a smooth shirt and a pair of your favourite shoes tremendously well.Dolce Gabbana Jeans can be categorized under designer or casual wears and people of all age are overtly crazy about them. Color, texture, cut or wash- everything blends enormously well with the new-age fashion trend as well as the comfort quotient of a working man or woman. Teenagers and youngsters too can die for the Dolce And Gabbana MensJeans.

  36. Avatar
    Moncler4u about 1 year later:

    Moncler jackets are not ordinary.

  37. Avatar
    Pandora about 1 year later:

    the Earth is superimposed onto the motion of the rest of the planets. In this simulation you are riding on the Sun, and large planets make the Sun wobble.

  38. Avatar
    sexe about 1 year later:

    I don’t say how to say thanks.

  39. Avatar
    Cincinnati Mold removal expert about 1 year later:

    Interesting post! thanks for sharing. cincinnati mold removal s

  40. Avatar
    Alix about 1 year later:

    By the Grace of Almighty God, our braindumps are broadly acclimated by the IT able common and humans like to acquirement braindumps and convenance analysis from testking. You will not alone canyon your acceptance assay but, enhance your ability and abilities about the assay artefact you are traveling to pursue testking 70-291|testking 650-393|testking 646-230|testking 650-568|testking 156-215.70|testking 1Y0-A17|testking E20-001

  41. Avatar
    para kazanma yollar? - Anatolia G?da about 1 year later:

    Good post,I think so! Dear Admin, I thank you for this informative article.

    Risk almadan Sermayesiz Evinizden yönetebilece?iniz Kendi i?inizin sahibi olmak istermisiniz ?

  42. Avatar
    Silicone Molding about 1 year later:

    Mold making is the core business of Intertech (Taiwan). With world level technology, Intertech enjoys a very good reputation for making Injection Mold and Plastic Moldsfor their worldwide customers.

  43. Avatar
    puma over 2 years later:

    Shopping for Mens puma speed cat Big Yellow,These matter can be found in many sources. Department supplies may keep them as well as operation shoe locations. Different operation shoed chains will tender a few different shoes from each category of shoe fray. They may hold a line of soccer Puma shoes, operation abrasion and basketball styles. This ideal is a form right shoe that looks great with casual pants. Puma shoes onlinesale Mens Puma Speed Cat Big Yellow Shoes hot sale in Ottawa will give somebody the gamble to attire something that is classy and lively. The panache on the leather and the influence will bestow somebody with an excellent looking Puma shoes. This entry could be tattered with shorts, pants and jeans. Small ankle socks in red or colorless may help to produce a balanced look. A purchaser may find this sort in a footwear store or through an online retailer. In the sell for an open evaluate of the Mens Puma Speed Cat Big Gold Black Shoes? Get the absolute inside scrape and attrition now in our manual to the great puma eminent cat lo.

  44. Avatar
    Alloggio Bucarest over 2 years later:

    As surplus code, it usually throws up all sorts of unclear logic. Usually we get about a couple of hours in and have to start going back to the business

  45. Avatar
    Pittsburgh events over 2 years later:

    Sunshine of summer, the beautiful flower asperses full whole body, sweet and elegant breath, the circulation of the spread of elegant silk dress eyes from the waves to linger flying skirt . A gentle and graceful elasticity waist foil, more show delicate temperament of your daughter beautie

  46. Avatar
    cable ties over 2 years later:

    beautiful!

  47. Avatar
    dswehfhh over 2 years later:

    We are the professional coats manufacturer, coats supplier, coats factory, custom coats.

  48. Avatar
    cheap true religion los angeles over 2 years later:

    hni

    Method of washing and maintenance of True Religion Jeans for cheapjeans 1,
  49. Avatar
    Bartender's Guide over 2 years later:

    As surplus code, it usually throws up all sorts of unclear logic. Usually we get about a couple of hours in and have to start going back to the business

  50. Avatar
    t?umaczenia symultaniczne over 2 years later:

    Awesome website layout, even better page.

  51. Avatar
    dory over 2 years later:

    This is a good post. This post give truly quality information.I’m definitely going to look into it. Really very useful tips are provided here.thank you so much.Keep up the good works. Social Network

  52. Avatar
    http://www.pandora-uksale.com over 2 years later:

    Great sources for fashion news and fashion articles. It’s offered many details about the relevant information. I enjoy this post greatly and i’m planning to recommend it to my buddies. Brief and practical methods within the post save your time and inside searching process. It can be this type of awesome source or technique i can’t wait to use it. The post is totally incredible. Appreciate your all you posted and all you present to us!

  53. Avatar
    Big pony over 2 years later:

    Thank you for this, very helpful.big pony from http://www.ralphlauren-poloshirts.co.uk .

  54. Avatar
    Seobaglyak over 2 years later:

    Seobaglyak - Verseny

  55. Avatar
    web solutions in kerala over 2 years later:

    some codes are very easy to work.

  56. Avatar
    okey oyunu oyna over 2 years later:

    yes i agree it.

    Dunyanin en büyük online okey oyunu bu sitede sizleri bekliyor. Gerçek kisilerle sohbet ederek okey oyunu oyna ve internette online oyun oynamanin zevkini çikar.

  57. Avatar
    Hermes belts over 2 years later:

    Strongly recommended for shopping at Hermes belts store.

  58. Avatar
    Top Niche Keyword over 2 years later:

    Ohh!! argggggss! There all spammer here!! bull shit!!

  59. Avatar
    dentist in plano over 2 years later:

    Really impressed! Everything is very open and very clear explanation of issues. It contains truly information. Your website is very useful. I completely agree with you.

  60. Avatar
    lakeway dentist over 2 years later:

    Thanks for sharing your thoughts and ideas on this one. Please keep posting about such articles as they really spread useful information. Thanks for this particular sharing. I hope it stays updated, take care.

  61. Avatar
    ford leveling kit over 2 years later:

    I love reading your article its very useful Thank you :-)

  62. Avatar
    leveling kit ford over 2 years later:

    I love reading your article its very useful Thank you :-)

  63. Avatar
    leveling kit f250 over 2 years later:

    love reading your article its very useful Thank you :-)

  64. Avatar
    f350 leveling kit over 2 years later:

    love reading your article its very useful Thank you :-)

  65. Avatar
    External TV Tuner over 2 years later:

    The post is very informative. The way of your instruction is good enough. I like to visit such kind of blogs as I get a lot of information for them

  66. Avatar
    beats by dr dre headphones over 2 years later:

    Some beats by dr dre solo purple training routines that will improve Your Voice instantly when you exercise Them!These training routines are extremely effective at erasing bad habits, and replacing them using a “successful”, fabulous sounding voice. The headphone’s exterior is produced from an ultra glossy complete that’s particular to garner some attention in monster beats dr dre headphones.

  67. Avatar
    austin bail bonds over 3 years later:

    Thanks Bob Koss for shearing this outstanding blog .I really appreciate your blog because it is very informative. I think it is the best blog i have read.I like your blog very much.

  68. Avatar
    xiaoqiao over 3 years later:

    What most human beings really want to attain is not Oils paintings, but certainty. Gaining real handmade oil paintings requires taking risks and keeping the mind open-but most people prefer to be reassured rather than to learn the complex and often unsettling truth about anything."

     

    Is it human nature that prefers to attain certainty rather than true oil paintings? If so, how human society develops to nowadays level? The certainty or reassured feeling, in my opinion, is a relative concept, which can use for explaining the declining not to acquire the complex and unsettling truth. At the same time, it can be responsible for human society’s development. Everyone has the appearance in their mind that people always prefer the easy way to meet what they need. It is common in people’s daily life, called mental laziness in psychology that affects people’s behaviors and minds almost in every area. Reflecting its influence on study or cognitive area, people always prefer to attain the conclusions that has settled by the precursors rather than spending time on the unsettled problems, which need perspective and observation ability to discover the connections between different phenomena. In my college, for an instance, professors always complaint that students usually only " remembering" the landscape oil painting rather that " exploring" or "discovering"  them, which require more thinking by students themselves and digging ideas from their own imagination. If one satisfies the present situation, it is no necessary to bother him to find where the handmade oil paintings deprives from. However, there is another character that human beings own—the curiosity, which guides people and points out the developing direction, including science and other areas. For one that has a strong curiosities mind, it won’t be the end for him that just understand the settled handmade oil paintings and doesn’t concern where they come from. Once they enter the unknown fields, he/she will endeavor by taking risks and keeping minds sensitive to every tiny problem to discover truth on that field for satisfying their curiosities and obtaining the reassured feeling for the comprehension on this field. On the nature science, curiosity is the impetus of many discoveries. The discovery of relative theory is from the question (as I paraphrase) "If one runs as fast as light, what he can see?" Universal gravitation law is from Newton’s curiosity about why an apple will fall to the ground. Even the discovering of cell deprived from people’s desire that want to see tinier creature, forced by curiosities. Consider if everyone in society only want to acquire certainty by unconcern the real truth, what human society will be. Perhaps people still stop at waiting for the thunder from sky to make fire, or using simple tools to hunt. Obviously, it is the desiring to acquire certainty from attainment of real custom oil painting drive people to learn the complex and unsettling truth about anything and boost the society to new level of a civilization. It is true that many people prefer to the unknown certainty, as a result of human nature, or just because they don’t own the abilities to think and observe the problems, which are complex and puzzled. In the other hand, not everyone can bear the starvation of Oil paintings. Those people can obtain the certainty from discovering and observation on new problems, who are incited by the curiosity about anything, who help to develop human society.

  69. Avatar
    MartinddDavis over 3 years later:

    The important thing in life is to have a great aim, and the determination to attain it.-luxury Versace scarf

  70. Avatar
    chaussureslouboutin over 3 years later:
    At some time extensive most effective low-priced MBT Kafala Boots and shoes discounted design all these cycles boots and shoes, Jimmy Choo Pompesyou may the radical the answers.Jimmy Choo Sandales Quite a few job opportunities have to have you actually often be humiliated with you, fully to the specific shape, ankles,

    North Face Apex Bionic Kvinder Jakker

    plus thighs and leg,

    the north face

    plus improved during losing fat laden calories might move barefoot in the inclusion. In that case keep account.

    December 2012 will be to can comecanada goose jakke, lots of believers live 2012 is just about the most important issue with discourse. mbt internet profit internationally renowned students will be guessing devastating incidents which is nearly anything. Let’ vertisements evaluate ways to live 2012canada goose , principally around the best way far better create you actually for any predictable.

  71. Avatar
    wedding planners kent over 3 years later:

    wow- that is honeslty just to hard to understand- dreanweaver i get but this…. :|(

  72. Avatar
    sweet display over 3 years later:

    lol- i agree with the above- coding is hard takes a special person really

  73. Avatar
    canada goose coat over 3 years later:

    Canada Goose Outlet is Marmot 8000M Parka. The Marmot 8000M Parka is really a waterproof, breathable jacket with 800 fill canada goose jacket feathers. It truly is design and light colored shell is produced for trendy, but uncomplicated, protection from cold temperatures. Reinforced shoulders, elbows and adjustable waist and hem make the Marmot a perfect alternate for skiing and other outdoor sports that want fairly a bit of arm motion. The 8000M Parka weighs three lbs., comes in bonfire and black colours and might be stuffed and stored like a sleeping bag to your convenience.This is one of well-know and prime down jacket brands.Hope our friends like its!Like canada goose womens and Canada Goose Expedition Parka.There are wholesale canada goose.

  74. Avatar
    kouer over 3 years later:

    I just came by your blog and wanted to say that I’ve really liked browsing your blog posts. omega seamaster planet ocean

  75. Avatar
    ??? over 3 years later:

    Good article makes constant progress, thank you share, the accumulation of knowledge is to keep learning, attention is the beginning of wealth.???

  76. Avatar
    Ashley Bowling over 3 years later:

    Great post, and I want to tell you that your site is simply a pleasure. I definitely come back again. “You can’t control the wind, but you can adjust your sails”

  77. Avatar
    UGG ????? over 3 years later:

    http://www.ugg6.com ?????????,?????????,?

  78. Avatar
    www.replicapwatches.com over 3 years later:

    All I can state is, I’m not sure what to really say! mens cartier watches Except certainly, for the wonderful tips that happen to be shared with this blog. I am able to think of a zillion fun ways to read the articles on this site. I believe I will finally take a step employing your tips on that matter I could never have been able to take care of alone. You were so innovative to allow me to be one of those to benefit from your handy information. Please know how much I enjoy the whole thing.

  79. Avatar
    christian louboutin over 3 years later:

    Great post, and I want to tell you that your site is simply a pleasure. I definitely come back again. “You can’t control the wind, but you can adjust your sails”

  80. Avatar
    tv guide over 3 years later:

    thanks a lot for the post

  81. Avatar
    http://www.cheaphatscaps.org over 3 years later:

    Thousands wholesale snapback hatswholesale, wholesale cheap hats ,Monster Energy Hats,NewYork Yankees Hats,cheap wholesale snapbacks on sale,Dc Hats at discount price for you

  82. Avatar
    graduate school personal statement over 3 years later:

    Nicely explained. It’s indeed an art to stop new visitors with your attractive writing style. Truly impressive and nice information. Thanks for sharing.

  83. Avatar
    iPad to Mac Transfer over 3 years later:

    Users are complain about the data lose on the tablet. why not backup to Mac before lose them? yeah! a regularly backup of the file can be a good idea!

  84. Avatar
    iPhone contacts backup over 3 years later:

    You can explain more about this topic. I think most of us would like to see what’t going on next. thx. guys.

  85. Avatar
    bodybuilding over 3 years later:

    Articles are not something I usually take time to read, but I am glad I took the time to read this one. Your views are well-said, very informative and I shared your article with friends.

  86. Avatar
    cool tattoo over 3 years later:

    If I were to pick my article of the year, it would be yours. Is there an award for that? Anyway, I enjoy reading your kind of writing. You’re interesting and intelligent. Thanks for sharing.

  87. Avatar
    iPad to Mac Transfer over 3 years later:

    Well. You are right. If we don’t pay we can’t get what we need. It is the say for programming. We need understand what exactly they mean. so, if you need to backup or export all stuff to PC for a safe copy. try it and do it now.

  88. Avatar
    mbtshoe over 3 years later:

    Australia Beats By Dre Studio dr dre beats headphones beats studio beats pro beats solo hd pro headphones music Official store Monster Beats By Dre Pro

  89. Avatar
    monster beats store over 3 years later:

    Now by means of cool and modern design,cheap beats by dr dre Monster Beats By Dr Dre Pro High Performance Professional Headphones Black has become more and more popular among people,<a href=”http://www.cheapmonsterbeatsstore.org/monster-beats-by-drdre-beats-pro-high-performance-professional-black-headphone-p-1.html ”>monster beats by dre pro especially the young.beats pro vs beats studio Monster Beats By Dr Dre Pro High Performance Professional Headphones Black not only can bring you amazing sound but also.

  90. Avatar
    youngbrown over 3 years later:

    Thanks for the information, I’ll visit the site again to get update information online shopping

  91. Avatar
    cheap air shoes over 3 years later:

    April activity curve wrote about Jane for the annual that has become the across for an online Jane now contends, by a cavalcade on her weblog, that this adduce added facts in my piece were blatantly bogus.

  92. Avatar
    air mens shoes over 3 years later:

    emphasis does not crave, although the bark across accept be broke with acid two times every day with Betadine one time.The complete cossack allows added circulation, able aspect the development of muscles.

  93. Avatar
    bladeless fans over 3 years later:

    Refactoring Finds Dead Code 92 good post41

  94. Avatar
    louboutin sales over 3 years later:

    Refactoring Finds Dead Code 93 hoo,good article!!I like the post!100

  95. Avatar
    http://www.taiwanmoldmaker.com/ over 3 years later:

    Intertech Machinery Inc. provides the most precise Plastic Injection Mold and Rubber Molds from Taiwan. With applying excellent unscrewing device in molds,

    Intertech is also very professional for making flip top Cap Molds in the world. Mold making is the core business of Intertech (Taiwan). With world level technology, Intertech enjoys a very good reputation for making Injection Mold and Plastic Molds for their worldwide customers.

  96. Avatar
    Plastic Injection Mold (100% made in Taiwan) over 3 years later:

    With more than 20 years of experience, Intertech provides an extensive integrated operational ability from design to production of molds 100% made in Taiwan. Additional to our own mold making factory, we also cooperate with our team vendors to form a very strong working force in Taiwan.

    For the overseas market, we work very closely with local representatives in order to take care of the technical communication and after-sales service to our customers. We also participate in the EUROMOLD & FAKUMA exhibitions and meet our customers every year in Europe. By concentrating on mold “niche markets”, we play a very useful mold maker role from the Far East whenever customers want to develop their new projects. We provide services from A to Z to our customers on a very economic cost and effect basis.

  97. Avatar
    cheap snapback hats over 4 years later:

    Wind looks in you can put in several ways and you’ll also make your own style, straw about the key they centered on bolt or alike added of abounding which can be abode so pay it is possible to

  98. Avatar
    cheap snapbacks free shipping over 4 years later:

    match it with and blouses too. assimilation to them first. baldheaded this, that all our acidity you could invariably pair them and a couple brogues and create a apperceive complete able

  99. Avatar
    air mens shoes over 4 years later:

    transform a typical outfit into a fascinating one. females and men accepting abounding added to do with adeptness than with any Those can be present in accession designs that can bulk

  100. Avatar
    cheap air shoes over 4 years later:

    hundred dollars The girls can make an effort to wear a having a silk skirt with strong colors, bottomward to as low for. The bulk will adapt depending on ty he popularitof the design.

  101. Avatar
    heap soccer jerseys over 4 years later:

    Furthermore fashion from a statement. architectonics or added friends accustomed styles for babies. Coming in a adjustment the for will abuttals in cost bottomward to dollars. are alike

  102. Avatar
    Plastic injection moldings over 4 years later:

    Intertech Machinery Inc.

    With more than 25 years of experience, Intertech provides an extensive integrated operational ability from design to production of molds 100% made in Taiwan. Additional to our own mold making factory, we also cooperate with our team vendors to form a very strong working force in Taiwan.

    Main Products:

    Injection Mold, Silicone Molding, Rubber Mold, Silicone molding, PC High-Gloss Plastic Mold, Die Casting Mold, Silicone Mold, Silicone Rubber Mold, Liquid Silicone Rubber , Cosmetic Packaging Mold, Medical Products Mold, Engineering Plastic Molds, Home Appliances Mold, etc…

Comments