Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Modern, maintainable and coRRRect project

Igor Wojda
November 06, 2020

Modern, maintainable and coRRRect project

Each day our software projects become more and more complex. It may because of changes introduced into the Android platform, some external ecosystem change, or the developer community that just discovered a better solution for an existing problem. On top of that our application is constantly evolving driven by a stream of new business requirements. In this dynamic environment, we have to guarantee not only protection about regressions but also high code quality. Let's take a look at various ways of improving and verifying the Android projects and ways to integrate these tools into the modern software development life cycle.

Igor Wojda

November 06, 2020
Tweet

More Decks by Igor Wojda

Other Decks in Technology

Transcript

  1. BECOMING A DEVELOPER Day 0: ◦First “Hello, World” program ◦First

    variable ◦First method ◦First class ◦First module ◦... 3
  2. INPUT COMBINATIONS 7 72 characters ◦ a-z - 26 characters

    ◦ A-Z - 26 characters ◦ 0-9 - 10 characters ◦ !&# - 10 characters
  3. BIG PICTURE 14 Correctness Code style Accessibility Frameworks & libraries

    Programming languages Build scripts Data Storage Version control Networking Documentation UI/UX Android versions Devices Architecture Issue trackers Code quality Terminal IDE & Plugins Soft Skills Releases Security
  4. CONTINUOUS INTEGRATION (CI) 37 Change code Run CI checks on

    each code change in the PR branch Push to repository
  5. BUG FIX FLOW 42 Checkout the code Fix the bug

    Create new branch Push changes and create PR Run CI
  6. CI STEPS 43 Checkout source code Build Release Build Debug

    Release to test channel Unit test Detect Ktlint Android lint Notify testers Step 1 Step 2 Step 3 Step 4 Step 5
  7. BUG FIX FLOW 44 Checkout the code Fix the bug

    Create new branch Push changes and create PR Run CI Review Merge Production Release
  8. TAKEAWAYS ◦ Maintain codebase to have consistent code ◦ Create

    simple, human-readable tests ◦ Use linters ◦ Good architecture will allow you to scale ◦ Use CI to automate releases and PR checks 45
  9. RESSOURCES ◦ Android-showcase https://github.com/igorwojda/android-showcase ◦ ktlint https://github.com/pinterest/ktlint ◦ ktlint-gradle https://github.com/JLLeitschuh/ktlint-gradle

    ◦ detekt https://github.com/detekt/detekt ◦ Android lint https://developer.android.com/studio/write/lint ◦ ArchUnit https://www.archunit.org/ ◦ Semver https://semver.org/ ◦ Github Actions https://github.com/features/actions ◦ Gradle Play Publisher https://github.com/Triple-T/gradle-play-publisher ◦ Gradle Dependency Lock Plugin https://github.com/nebula-plugins/ gradle-dependency-lock-plugin 46
  10. 48 Special thanks to SlidesCarnival who made and released these

    awesome presentation template for free. Credits