Cargando…

Seriously Good Software /

Seriously Good Software is a handbook for any professional developer serious about improving application quality. It explores fundamental dimensions of code quality by enhancing a simple implementation into a robust, professional-quality application. Questions, exercises, and Java-based examples ens...

Descripción completa

Detalles Bibliográficos
Autor principal: Faella, Marco (Autor)
Autor Corporativo: Safari, an O'Reilly Media Company
Formato: Electrónico eBook
Idioma:Inglés
Publicado: Manning Publications, 2020.
Edición:1st edition.
Temas:
Acceso en línea:Texto completo (Requiere registro previo con correo institucional)
Tabla de Contenidos:
  • Intro
  • Copyright
  • Brief Table of Contents
  • Table of Contents
  • Foreword
  • Preface
  • Acknowledgments
  • About This Book
  • About the Author
  • About the Cover
  • Part 1. Preliminaries
  • Chapter 1. Software qualities and a problem to solve
  • 1.1. Software qualities
  • 1.2. Mostly external software qualities
  • 1.3. Mostly internal software qualities
  • 1.4. Interactions between software qualities
  • 1.5. Special qualities
  • 1.6. The recurring example: A system of water containers
  • 1.7. Data model and representations
  • 1.8. Hello containers! [Novice]
  • Summary
  • Further reading
  • Chapter 2. Reference implementation
  • 2.1. The code [Reference]
  • 2.2. Memory requirements
  • 2.3. Time complexity
  • 2.4. Applying what you learned
  • Summary
  • Answers to quizzes and exercises
  • Further reading
  • Part 2. Software Qualities
  • Chapter 3. Need for speed: Time efficiency
  • 3.1. Adding water in constant time [Speed1]
  • 3.2. Adding connections in constant time [Speed2]
  • 3.3. The best balance: Union-find algorithms [Speed3]
  • 3.4. Comparing implementations
  • 3.5. And now for something completely different
  • 3.6. Real-world use cases
  • 3.7. Applying what you learned
  • Summary
  • Answers to quizzes and exercises
  • Further reading
  • Chapter 4. Precious memory: Space efficiency
  • 4.1. Gently squeezing [Memory1]
  • 4.2. Plain arrays [Memory2]
  • 4.3. Forgoing objects [Memory3]
  • 4.4. The black hole [Memory4]
  • 4.5. Space-time trade-offs
  • 4.6. And now for something completely different
  • 4.7. Real-world use cases
  • 4.8. Applying what you learned
  • Summary
  • Answers to quizzes and exercises
  • Further reading
  • Chapter 5. Self-conscious code: Reliability through monitoring
  • 5.1. Design by contract
  • 5.2. Designing containers by contract
  • 5.3. Containers that check their contracts [Contracts].
  • 5.4. Containers that check their invariants [Invariants]
  • 5.5. And now for something completely different
  • 5.6. Real-world use cases
  • 5.7. Applying what you learned
  • Summary
  • Answers to quizzes and exercises
  • Further reading
  • Chapter 6. Lie to me: Reliability through testing
  • 6.1. Basic testing notions
  • 6.2. Testing containers [UnitTests]
  • 6.3. Testability [Testable]
  • 6.4. And now for something completely different
  • 6.5. Real-world use cases
  • 6.6. Applying what you learned
  • Summary
  • Answers to quizzes and exercises
  • Further reading
  • Chapter 7. Coding aloud: Readability
  • 7.1. Points of view on readability
  • 7.2. Structural readability features
  • 7.3. Exterior readability features
  • 7.4. Readable containers [Readable]
  • 7.5. Final thoughts on readability
  • 7.6. And now for something completely different
  • 7.7. Real-world use cases
  • 7.8. Applying what you learned
  • Summary
  • Answers to quizzes and exercises
  • Further reading
  • Chapter 8. Many cooks in the kitchen: Thread safety
  • 8.1. Challenges to thread safety
  • 8.2. Dealing with deadlocks
  • 8.3. Thread-safe containers [ThreadSafe]
  • 8.4. Immutability [Immutable]
  • 8.5. And now for something completely different
  • 8.6. Real-world use cases
  • 8.7. Applying what you learned
  • Summary
  • Answers to quizzes and exercises
  • Further reading
  • Chapter 9. Please recycle: Reusability
  • 9.1. Establishing boundaries
  • 9.2. The general framework
  • 9.3. A generic container implementation
  • 9.4. General considerations
  • 9.5. Recovering water containers [Generic]
  • 9.6. Social network posts
  • 9.7. And now for something completely different
  • 9.8. Real-world use cases
  • 9.9. Applying what you learned
  • Summary
  • Answers to quizzes and exercises
  • Further reading
  • Appendix A. Code golf: Succinctness
  • A.1. The shortest I came up with [Golfing].
  • Further reading
  • Appendix B. The ultimate water container class
  • B.1. Readability enhancements
  • B.2. Reliability enhancements
  • The programmer's journey
  • A list of the main classes from each chapter
  • Index
  • List of Figures
  • List of Tables
  • List of Listings.