Real-World Software Development: A Project-Driven Guide to Fundamentals in Java
Book information
Description
Explore the latest Java-based software development techniques and methodologies through the project-based approach in this practical guide. Unlike books that use abstract examples and lots of theory, Real-World Software Development shows you how to develop several relevant projects while learning best practices along the way. With this engaging approach, junior developers capable of writing basic Java code will learn about state-of-the-art software development practices for building modern, robust and maintainable Java software. You’ll work with many different software development topics that are often excluded from software develop how-to references. Featuring real-world examples, this book teaches you techniques and methodologies for functional programming, automated testing, security, architecture, and distributed systems. Copyright Table of Contents Preface Why We Wrote This Book A Developer-Oriented Approach What’s in the Book? Who Should Read This Book? Conventions Used in This Book Using Code Examples O’Reilly Online Learning How to Contact Us Chapter 1. Starting the Journey Themes Java Features Software Design and Architecture SOLID Testing Chapter Summary Iterating on You Chapter 2. The Bank Statements Analyzer The Challenge The Goal Bank Statements Analyzer Requirements KISS Principle final Variables Code Maintainability and Anti-Patterns God Class Code Duplication Single Responsibility Principle Cohesion Class-Level Cohesion Method-Level Cohesion Coupling Testing Automated Testing Using JUnit Code Coverage Takeaways Iterating on You Completing the Challenge Chapter 3. Extending the Bank Statements Analyzer The Challenge The Goal Extended Bank Statements Analyzer Requirements Open/Closed Principle Creating an Instance of a Functional Interface Lambda Expressions Interfaces Gotchas God Interface Too Granular Explicit Versus Implicit API Domain Class or Primitive Value? Multiple Exporters Introducing a Domain Object Defining and Implementing the Appropriate Interface Exception Handling Why Use Exceptions? Patterns and Anti-Patterns with Exceptions Guidelines for Using Exceptions Alternatives to Exceptions Using a Build Tool Why Use a Build Tool? Using Maven Using Gradle Takeaways Iterating on You Completing the Challenge Chapter 4. The Document Management System The Challenge The Goal Document Management System Requirements Fleshing Out the Design Importers The Document Class Attributes and Hierarchical Documents Implementing and Registering Importers The Liskov Substitution Principle (LSP) Alternative Approaches Making Importer a Class Scoping and Encapsulation Choices Extending and Reusing Code Test Hygiene Test Naming Behavior Not Implementation Don’t Repeat Yourself Good Diagnostics Testing Error Cases Constants Takeaways Iterating on You Completing the Challenge Chapter 5. The Business Rules Engine The Challenge The Goal Business Rules Engine Requirements Test Driven Development Why Use TDD? The TDD Cycle Mocking Adding Conditions Modeling State Local Variable Type Inference Switch Expressions Interface Segregation Principle Designing a Fluent API What Is a Fluent API? Modeling the Domain Builder Pattern Takeaways Iterating on You Completing the Challenge Chapter 6. Twootr The Challenge The Goal Twootr Requirements Design Overview Pull-Based Push-Based From Events to Design Communication GUI Persistence The Hexagonal Architecture Where to Begin Passwords and Security Followers and Twoots Modeling Errors Twooting Creating Mocks Verifying with Mocks Mocking Libraries SenderEndPoint Positions The equals and hashcode Methods The Contract Between equals and hashCode Takeaways Iterating on You Completing the Challenge Chapter 7. Extending Twootr The Challenge The Goal Recap Persistence and the Repository Pattern Designing the Repositories Query Objects Functional Programming Lambda Expressions Method References Execute Around Streams Optional User Interface Dependency Inversion and Dependency Injection Packages and Build Systems Limitations and Simplifications Takeaways Iterating on You Completing the Challenge Chapter 8. Conclusion Project-Based Structure Iterating on You Deliberate Practice Next Steps and Additional Resources Index About the Authors Colophon
Similar books
Modern Java in Action: Lambdas, streams, functional and reactive programming
2018 · EPUB
Object-Oriented vs. Functional Programming
2015 · PDF
Modern Java in Action: Lambdas, streams, functional and reactive programming
2018 · PDF
Real-World Software Development - A Project-Driven Guide to Fundamentals in Java.
2020 · EPUB
Java 8实战
2016 · EPUB
Java 8 in Action: Lambdas, streams, and functional-style programming
2014 · EPUB
Modern Java in Action. Lambda, Streams, Functional and Reactive Programming
2019 · PDF
Modern Java in Action: Lambda, streams, functional and reactive programming
2018 · PDF