
Discover why high quality code matters, avoid faulty programming that frustrates users, and learn how quality makes life easier for developers and customers.
Learn from an experienced Android developer about building high quality Android applications, drawing on Java, Groovy, Python, and exploring devices from phones to Google Cardboard virtual reality.
Explore how to develop high quality android applications by selecting libraries wisely, implementing solid software design, applying static code analysis, and testing practices across the Adept Android sample app.
Choose android libraries by reading documentation, reviewing project stability and community perception, and matching your application's needs to maintainability.
Explore choosing an android image library, focusing on Volley, review documentation and stability, weigh pros and cons, and implement asynchronous loading with a singleton image loader.
Explore the Picasso image loading library by square, learn how images can be loaded in one line of code with placeholders and transformations using an adapter.
Compare image libraries like valy and Picasso across documentation, community, ease of implementation, and stability; Picasso leads in docs and ease, valy shows more activity, so choose based on needs.
Explore android domain design challenges, including activity and fragment lifecycles, callbacks, and context, and how god objects and tight coupling hinder reuse, testing, and refactoring.
Apply solid principles to Android app design to reduce rigidity, fragility, immobility, and viscosity. Embrace single responsibility, separation of concerns, and the law of dimeter for loose coupling.
Apply the single responsibility principle to Android apps by refactoring a payments manager into a book class method and a separate book service for persistence, improving maintainability.
Divide an application into distinct layers—user interface layer, business layer, and data access layer—and apply the MVP pattern to keep concerns separate, improving code organization and maintainability.
Law of Demeter guides you to minimize knowledge between classes by talking only to immediate friends and passing a book object directly, reducing coupling and improving maintainability.
Explore how to architect the presentation layer in Android apps using MVC, MVVM, or MVP patterns, to avoid god objects and improve modularity, data binding, reuse, and testability.
Explore model view presenter pattern, separating user interface concerns into data, display, and logic. See how view forwards actions to presenter, presenter retrieves data from model, and updates view.
Learn to migrate an existing Android app to the MVP pattern by restructuring into the books feature package, extracting a books presenter, and wiring data through input streams.
Explore migrating to the MVP pattern by creating a books contract and view interface, enabling the presenter to show books and improve modularity, readability, and testability.
learn how static code analysis detects potential errors without running the program, enhances testing, and provides configurable checkers that model code, analyze data flow, and address false positives.
Explore checkstyle, a configurable tool that analyzes your Android code against XML-configured checks, reports findings, and guides you to create custom rules with example checks.
Learn to set up checkstyle in an Android project by applying the plugin, configuring a Gradle task, and adjusting max lines per method and max line length.
Clean up Android code with Checkstyle using Android Studio or the command line; fix formatting and braces, reduce long methods by extracting tasks to improve readability, debugging, and maintenance.
Explore how PMD uses static analysis to detect mistakes such as unused variables, catch blocks, and unnecessary object creation across languages like Java and JavaScript, with rules documented on GitHub.
Learn to clean up Android code by running PMD checks in Android Studio, review the full report, and fix formatting, braces, and equals and hashCode handling.
Explore how FindBugs uses static analysis to identify bug patterns in Java code and prioritize issues. Browse categories like best practice, correctness, security, and performance to understand rationale behind patterns.
Set up the android find bugs plugin by applying the plugin, defining a graded find bugs task, and configuring filters and exclusions to tailor quality checks.
Learn to clean up android code by running the findbugs task in android studio or via command line, fix hashCode and unused field warnings, and apply quick fixes.