Clean Code
Home > Computing and Information Technology > Computer programming / software engineering > Software Engineering > Clean Code: A Handbook of Agile Software Craftsmanship(Robert C. Martin Series)
Clean Code: A Handbook of Agile Software Craftsmanship(Robert C. Martin Series)

Clean Code: A Handbook of Agile Software Craftsmanship(Robert C. Martin Series)

|
     0     
5
4
3
2
1




International Edition


About the Book

Even bad code can function. But if code isn’t clean, it can bring a development organization to its knees. Every year, countless hours and significant resources are lost because of poorly written code. But it doesn’t have to be that way. Noted software expert Robert C. Martin presents a revolutionary paradigm with Clean Code: A Handbook of Agile Software Craftsmanship. Martin has teamed up with his colleagues from Object Mentor to distill their best agile practice of cleaning code “on the fly” into a book that will instill within you the values of a software craftsman and make you a better programmer—but only if you work at it. What kind of work will you be doing? You’ll be reading code—lots of code. And you will be challenged to think about what’s right about that code, and what’s wrong with it. More importantly, you will be challenged to reassess your professional values and your commitment to your craft. Clean Code is divided into three parts. The first describes the principles, patterns, and practices of writing clean code. The second part consists of several case studies of increasing complexity. Each case study is an exercise in cleaning up code—of transforming a code base that has some problems into one that is sound and efficient. The third part is the payoff: a single chapter containing a list of heuristics and “smells” gathered while creating the case studies. The result is a knowledge base that describes the way we think when we write, read, and clean code. Readers will come away from this book understanding How to tell the difference between good and bad code How to write good code and how to transform bad code into good code How to create good names, good functions, good objects, and good classes How to format code for maximum readability How to implement complete error handling without obscuring code logic How to unit test and practice test-driven development This book is a must for any developer, software engineer, project manager, team lead, or systems analyst with an interest in producing better code.

Table of Contents:
Foreword                      xix Introduction              xxv On the Cover                     xxix Chapter 1: Clean Code                    1 There Will Be Code                        2 Bad Code                           3 The Total Cost of Owning a Mess                 4 Schools of Thought                        12 We Are Authors                      13 The Boy Scout Rule                     14 Prequel and Principles                   15 Conclusion                        15 Bibliography                  15 Chapter 2: Meaningful Names                     17 Introduction               17 Use Intention-Revealing Names                     18 Avoid Disinformation                         19 Make Meaningful Distinctions                20 Use Pronounceable Names                            21 Use Searchable Names                                22 Avoid Encodings                          23 Avoid Mental Mapping                    25 Class Names                    25 Method Names                              25 Don’t Be Cute                    26 Pick One Word per Concept                 26 Don’t Pun                    26 Use Solution Domain Names                    27 Use Problem Domain Names                   27 Add Meaningful Context                       27 Don’t Add Gratuitous Context                    29 Final Words                        30 Chapter 3: Functions                                           31 Small!                               34 Do One Thing                         35 One Level of Abstraction per Function                           36 Switch Statements                     37 Use Descriptive Names                      39 Function Arguments                          40 Have No Side Effects                          44 Command Query Separation                           45 Prefer Exceptions to Returning Error Codes              46 Don’t Repeat Yourself                          48 Structured Programming                   48 How Do You Write Functions Like This?                49 Conclusion                          49 SetupTeardownIncluder                        50 Bibliography                                       52 Chapter 4: Comments                                                  53 Comments Do Not Make Up for Bad Code                   55 Explain Yourself in Code                        55 Good Comments                              55 Bad Comments                          59 Bibliography                          74 Chapter 5: Formatting                                           75 The Purpose of Formatting                     76 Vertical Formatting                         76 Horizontal Formatting                         85 Team Rules                      90 Uncle Bob’s Formatting Rules                  90 Chapter 6: Objects and Data Structures                      93 Data Abstraction                     93 Data/Object Anti-Symmetry                        95 The Law of Demeter                         97 Data Transfer Objects                     100 Conclusion                       101 Bibliography                           101 Chapter 7: Error Handling                           103 Use Exceptions Rather Than Return Codes                  104 Write Your Try-Catch-Finally Statement First                    105 Use Unchecked Exceptions                         106 Provide Context with Exceptions                      107 Define Exception Classes in Terms of a Caller’s Needs                107 Define the Normal Flow                  109 Don’t Return Null                        110 Don’t Pass Null                       111 Conclusion                           112 Bibliography                                 112 Chapter 8: Boundaries                                                            113 Using Third-Party Code                               114 Exploring and Learning Boundaries                      116 Learning log4j                         116 Learning Tests Are Better Than Free                      118 Using Code That Does Not Yet Exist                     118 Clean Boundaries                           120 Bibliography                           120 Chapter 9: Unit Tests                                    121 The Three Laws of TDD                   122 Keeping Tests Clean                          123 Clean Tests                        124 One Assert per Test                        130 F.I.R.S.T.                      132 Conclusion                       133 Bibliography                        133 Chapter 10: Classes                         135 Class Organization                  136 Classes Should Be Small!                 136 Organizing for Change                   147 Bibliography                     151 Chapter 11: Systems                                                  153 How Would You Build a City?                     154 Separate Constructing a System from Using It                      154 Scaling Up                            157 Java Proxies                        161 Pure Java AOP Frameworks                     163 AspectJ Aspects                     166 Test Drive the System Architecture                      166 Optimize Decision Making                       167 Use Standards Wisely, When They Add Demonstrable Value                168 Systems Need Domain-Specific Languages                   168 Conclusion                    169 Bibliography                      169 Chapter 12: Emergence                        171 Getting Clean via Emergent Design                171 Simple Design Rule 1: Runs All the Tests                  172 Simple Design Rules 2–4: Refactoring                        172 No Duplication                      173 Expressive                        175 Minimal Classes and Methods               176 Conclusion                   176 Bibliography                     176 Chapter 13: Concurrency                         177 Why Concurrency?                    178 Challenges                        180 Concurrency Defense Principles                   180 Know Your Library                    182 Know Your Execution Models                       183 Beware Dependencies Between Synchronized Methods            185 Keep Synchronized Sections Small                  185 Writing Correct Shut-Down Code Is Hard                 186 Testing Threaded Code                     186 Conclusion                      190 Bibliography                         191 Chapter 14: Successive Refinement                     193 Args Implementation                          194 Args: The Rough Draft                       201 String Arguments                   214 Conclusion                       250 Chapter 15: JUnit Internals                                    251 The JUnit Framework                    252 Conclusion                 265 Chapter 16: Refactoring SerialDate                         267 First, Make It Work                     268 Then Make It Right                    270 Conclusion                      284 Bibliography                     284 Chapter 17: Smells and Heuristics                         285 Comments                           286 Environment                       287 Functions                            288 General                               288 Java                                     307 Names                                 309 Tests                                    313 Conclusion                         314 Bibliography                      315 Appendix A: Concurrency II                              317 Client/Server Example                           317 Possible Paths of Execution                    321 Knowing Your Library                      326 Dependencies Between Methods Can Break Concurrent Code         329 Increasing Throughput                  333 Deadlock                    335 Testing Multithreaded Code                   339 Tool Support for Testing Thread-Based Code                    342 Conclusion                    342 Tutorial: Full Code Examples                    343 Appendix B: org.jfree.date.SerialDate                             349 Appendix C: Cross References of Heuristics                  409 Epilogue                           411 Index                                  413


Best Sellers


Product Details
  • ISBN-13: 9780132350884
  • Publisher: Pearson Education (US)
  • Publisher Imprint: Pearson
  • Height: 231 mm
  • No of Pages: 464
  • Series Title: Robert C. Martin Series
  • Sub Title: A Handbook of Agile Software Craftsmanship
  • Width: 177 mm
  • ISBN-10: 0132350882
  • Publisher Date: 21 Aug 2008
  • Binding: Paperback
  • Language: English
  • Returnable: Y
  • Spine Width: 18 mm
  • Weight: 800 gr


Similar Products

Add Photo
Add Photo

Customer Reviews

REVIEWS      0     
Click Here To Be The First to Review this Product
Clean Code: A Handbook of Agile Software Craftsmanship(Robert C. Martin Series)
Pearson Education (US) -
Clean Code: A Handbook of Agile Software Craftsmanship(Robert C. Martin Series)
Writing guidlines
We want to publish your review, so please:
  • keep your review on the product. Review's that defame author's character will be rejected.
  • Keep your review focused on the product.
  • Avoid writing about customer service. contact us instead if you have issue requiring immediate attention.
  • Refrain from mentioning competitors or the specific price you paid for the product.
  • Do not include any personally identifiable information, such as full names.

Clean Code: A Handbook of Agile Software Craftsmanship(Robert C. Martin Series)

Required fields are marked with *

Review Title*
Review
    Add Photo Add up to 6 photos
    Would you recommend this product to a friend?
    Tag this Book Read more
    Does your review contain spoilers?
    What type of reader best describes you?
    I agree to the terms & conditions
    You may receive emails regarding this submission. Any emails will include the ability to opt-out of future communications.

    CUSTOMER RATINGS AND REVIEWS AND QUESTIONS AND ANSWERS TERMS OF USE

    These Terms of Use govern your conduct associated with the Customer Ratings and Reviews and/or Questions and Answers service offered by Bookswagon (the "CRR Service").


    By submitting any content to Bookswagon, you guarantee that:
    • You are the sole author and owner of the intellectual property rights in the content;
    • All "moral rights" that you may have in such content have been voluntarily waived by you;
    • All content that you post is accurate;
    • You are at least 13 years old;
    • Use of the content you supply does not violate these Terms of Use and will not cause injury to any person or entity.
    You further agree that you may not submit any content:
    • That is known by you to be false, inaccurate or misleading;
    • That infringes any third party's copyright, patent, trademark, trade secret or other proprietary rights or rights of publicity or privacy;
    • That violates any law, statute, ordinance or regulation (including, but not limited to, those governing, consumer protection, unfair competition, anti-discrimination or false advertising);
    • That is, or may reasonably be considered to be, defamatory, libelous, hateful, racially or religiously biased or offensive, unlawfully threatening or unlawfully harassing to any individual, partnership or corporation;
    • For which you were compensated or granted any consideration by any unapproved third party;
    • That includes any information that references other websites, addresses, email addresses, contact information or phone numbers;
    • That contains any computer viruses, worms or other potentially damaging computer programs or files.
    You agree to indemnify and hold Bookswagon (and its officers, directors, agents, subsidiaries, joint ventures, employees and third-party service providers, including but not limited to Bazaarvoice, Inc.), harmless from all claims, demands, and damages (actual and consequential) of every kind and nature, known and unknown including reasonable attorneys' fees, arising out of a breach of your representations and warranties set forth above, or your violation of any law or the rights of a third party.


    For any content that you submit, you grant Bookswagon a perpetual, irrevocable, royalty-free, transferable right and license to use, copy, modify, delete in its entirety, adapt, publish, translate, create derivative works from and/or sell, transfer, and/or distribute such content and/or incorporate such content into any form, medium or technology throughout the world without compensation to you. Additionally,  Bookswagon may transfer or share any personal information that you submit with its third-party service providers, including but not limited to Bazaarvoice, Inc. in accordance with  Privacy Policy


    All content that you submit may be used at Bookswagon's sole discretion. Bookswagon reserves the right to change, condense, withhold publication, remove or delete any content on Bookswagon's website that Bookswagon deems, in its sole discretion, to violate the content guidelines or any other provision of these Terms of Use.  Bookswagon does not guarantee that you will have any recourse through Bookswagon to edit or delete any content you have submitted. Ratings and written comments are generally posted within two to four business days. However, Bookswagon reserves the right to remove or to refuse to post any submission to the extent authorized by law. You acknowledge that you, not Bookswagon, are responsible for the contents of your submission. None of the content that you submit shall be subject to any obligation of confidence on the part of Bookswagon, its agents, subsidiaries, affiliates, partners or third party service providers (including but not limited to Bazaarvoice, Inc.)and their respective directors, officers and employees.

    Accept

    New Arrivals

    Inspired by your browsing history


    Your review has been submitted!

    You've already reviewed this product!