Skip to content

Instantly share code, notes, and snippets.

@chalup
Last active October 3, 2016 16:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save chalup/a2a3d20eed5582c1ad0a7a52d09aaca3 to your computer and use it in GitHub Desktop.
Save chalup/a2a3d20eed5582c1ad0a7a52d09aaca3 to your computer and use it in GitHub Desktop.
Kotlin use checklist

[✓] Proguard - nothing blows up spectacularly during assemble gradle task

[✓] Proguard - make sure the primary dex file does not become bloated because of Kotlin

[✓] Proguard - stacktraces from Kotlin code can be easily deobfuscated

[✓] Proguard - stacktraces from Java code which is called from Kotlin code can be easily deobfuscated

[✓] compilation time - app can be built in finite amount of time (sidenote: this is quite tricky to assess - the compilation time might be a non-linear function of Kotlin code size; think hard if we can somehow make sure we won't have this issue in few months)

[✓] make sure the incremental builds are fast

[✓] Dagger 2 - you can have Kotlin components & modules

[✓] Dagger 2 - you can have mix of Kotlin & Java components & modules

[✓] Dagger 2 - you can use @Import annotation in Kotlin classes

[✓] Dagger 2 - you can @Provide Kotlin classes in Java modules

[✓] apt - you can use Kotlin with other annotation processors

[✓] apt - you can use the same annotation processor with regular Java apt and with Kotlin kapt

[✓] reflection - you can have a Kotlin POJO (POKO?) using Gson annotations

[✗] codestyle settings - prepare and commit IntelliJ/AndroidStudio formatter configuration

Some formatter I'd like to have are missing (e.g. https://youtrack.jetbrains.com/issue/KT-14126)

[✗] Lint - standard Android checks are performed on Kotlin

Only the ones that operate on .class files

[✗] Lint - there are no false positives because of Kotlin code

You get the UnusedResources false positive, because Kotlin sources are not processed. (https://youtrack.jetbrains.com/issue/KT-12499)

[✗] Lint - our custom lint checks are performed on Kotlin code

Only the ones that operate on .class files

[✗] Instant Run - works with Kotlin

JRebel works fine.

[✓] Custom Android Views in Kotlin - there is no bunch of boxing/unboxing in onDraw calls

[✓] AOP - check if code weaving works with Kotlin code

[✗] Find a mindblowing example of Kotlin code that would look like shit when written in plain old Java Nothing mindblowing, but I like sealed classes + when expressions instead of Visitor pattern; I also like the fact that for (val (k, v) in map) is based on language mechanisms and is not some special built-in syntax sugar.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment