Sale!

Clean Code: A Handbook of Agile Software Craftsmanship by Robert C. Martin, ISBN-13: 978-0132350884

Original price was: $50.00.Current price is: $9.99.

Description

Clean Code: A Handbook of Agile Software Craftsmanship by Robert C. Martin, ISBN-13: 978-0132350884

[PDF eBook eTextbook] – Available Instantly

  • Publisher: ‎ Pearson; 1st edition (August 1, 2008)
  • Language: ‎ English
  • 464 pages
  • ISBN-10: 0132350882
  • ISBN-13: ‎ 978-0132350884

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, who has helped bring agile principles from a practitioner’s point of view to tens of thousands of programmers, 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 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
  • What “smells” and heuristics can help you identify bad code

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:

Cover Page
Series Page
Title Page
Copyright Page
Dedication
Contents
Foreword
Introduction
On the Cover
Chapter 1: Clean Code
There Will Be Code
Bad Code
The Total Cost of Owning a Mess
Schools of Thought
We Are Authors
The Boy Scout Rule
Prequel and Principles
Conclusion
Bibliography
Chapter 2: Meaningful Names
Introduction
Use Intention-Revealing Names
Avoid Disinformation
Make Meaningful Distinctions
Use Pronounceable Names
Use Searchable Names
Avoid Encodings
Avoid Mental Mapping
Class Names
Method Names
Don’t Be Cute
Pick One Word per Concept
Don’t Pun
Use Solution Domain Names
Use Problem Domain Names
Add Meaningful Context
Don’t Add Gratuitous Context
Final Words
Chapter 3: Functions
Small!
Do One Thing
One Level of Abstraction per Function
Switch Statements
Use Descriptive Names
Function Arguments
Have No Side Effects
Command Query Separation
Prefer Exceptions to Returning Error Codes
Don’t Repeat Yourself
Structured Programming
How Do You Write Functions Like This?
Conclusion
SetupTeardownIncluder
Bibliography
Chapter 4: Comments
Comments Do Not Make Up for Bad Code
Explain Yourself in Code
Good Comments
Bad Comments
Bibliography
Chapter 5: Formatting
The Purpose of Formatting
Vertical Formatting
Horizontal Formatting
Team Rules
Uncle Bob’s Formatting Rules
Chapter 6: Objects and Data Structures
Data Abstraction
Data/Object Anti-Symmetry
The Law of Demeter
Data Transfer Objects
Conclusion
Bibliography
Chapter 7: Error Handling
Use Exceptions Rather Than Return Codes
Write Your Try-Catch-Finally Statement First
Use Unchecked Exceptions
Provide Context with Exceptions
Define Exception Classes in Terms of a Caller’s Needs
Define the Normal Flow
Don’t Return Null
Don’t Pass Null
Conclusion
Bibliography
Chapter 8: Boundaries
Using Third-Party Code
Exploring and Learning Boundaries
Learning log4j
Learning Tests Are Better Than Free
Using Code That Does Not Yet Exist
Clean Boundaries
Bibliography
Chapter 9: Unit Tests
The Three Laws of TDD
Keeping Tests Clean
Clean Tests
One Assert per Test
F.I.R.S.T.
Conclusion
Bibliography
Chapter 10: Classes
Class Organization
Classes Should Be Small!
Organizing for Change
Bibliography
Chapter 11: Systems
How Would You Build a City?
Separate Constructing a System from Using It
Scaling Up
Java Proxies
Pure Java AOP Frameworks
AspectJ Aspects
Test Drive the System Architecture
Optimize Decision Making
Use Standards Wisely, When They Add Demonstrable Value
Systems Need Domain-Specific Languages
Conclusion
Bibliography
Chapter 12: Emergence
Getting Clean via Emergent Design
Simple Design Rule 1: Runs All the Tests
Simple Design Rules 2–4: Refactoring
No Duplication
Expressive
Minimal Classes and Methods
Conclusion
Bibliography
Chapter 13: Concurrency
Why Concurrency?
Challenges
Concurrency Defense Principles
Know Your Library
Know Your Execution Models
Beware Dependencies Between Synchronized Methods
Keep Synchronized Sections Small
Writing Correct Shut-Down Code Is Hard
Testing Threaded Code
Conclusion
Bibliography
Chapter 14: Successive Refinement
Args Implementation
Args: The Rough Draft
String Arguments
Conclusion
Chapter 15: JUnit Internals
The JUnit Framework
Conclusion
Chapter 16: Refactoring SerialDate
First, Make It Work
Then Make It Right
Conclusion
Bibliography
Chapter 17: Smells and Heuristics
Comments
Environment
Functions
General
Java
Names
Tests
Conclusion
Bibliography
Appendix A: Concurrency II
Client/Server Example
Possible Paths of Execution
Knowing Your Library
Dependencies Between Methods Can Break Concurrent Code
Increasing Throughput
Deadlock
Testing Multithreaded Code
Tool Support for Testing Thread-Based Code
Conclusion
Tutorial: Full Code Examples
Appendix B: org.jfree.date.SerialDate
Appendix C: Cross References of Heuristics
Epilogue
Index

Robert C. Martin has been a software professional since 1970 and an international software consultant since 1990. He is founder and president of Object Mentor, Inc., a team of experienced consultants who mentor their clients worldwide in the fields of C++, Java, C#, Ruby, OO, Design Patterns, UML, Agile Methodologies, and eXtreme programming.

What makes us different?

• Instant Download

• Always Competitive Pricing

• 100% Privacy

• FREE Sample Available

• 24-7 LIVE Customer Support