Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/springernature/kotlin-playbook
How we write Kotlin code
https://github.com/springernature/kotlin-playbook
kotlin playbook
Last synced: 3 months ago
JSON representation
How we write Kotlin code
- Host: GitHub
- URL: https://github.com/springernature/kotlin-playbook
- Owner: springernature
- Created: 2019-09-30T13:53:33.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2020-02-25T08:56:13.000Z (almost 5 years ago)
- Last Synced: 2024-04-14T23:01:50.997Z (10 months ago)
- Topics: kotlin, playbook
- Homepage:
- Size: 1.38 MB
- Stars: 100
- Watchers: 151
- Forks: 8
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: copying-extension-functions/README.md
Awesome Lists containing this project
README
# Kotlin Playbook
How we write (backend) Kotlin code in the Content Acquisition domain of Springer Nature Digital IT.
_A living document_
We follow the [standard Kotlin coding conventions](https://kotlinlang.org/docs/reference/coding-conventions.html), although our codebase predates these, and so may occasionaly diverge for historical reasons.
Beyond the standard coding conventions, we have the following rules of thumb:
Organising the codebase:
* [Classes, Methods, and Extension Functions](classes-methods-extension-functions/README.md)
* [Extension functions to avoid bare calls to copy](copying-extension-functions/README.md)
* [Organising code into files](organising-code/README.md)
* [Deployable and library modules](modules/README.md)
* [Tests and supporting code](test-code/README.md)Design style:
* [Immutable domain models](immutable-domain-models/README.md)
* [Pipelines of transformations](pipelines-of-transformations/README.md)
* [Reporting and handling errors (exceptions, null, monads, etc.)](error-reporting/README.md)
* [Speed bumps](speed-bumps/README.md)
* [Monitoring events, rather than static loggers](monitoring-events/README.md)Testing:
* [Testing code that parses data from the network](testing-code-that-parses-data-from-the-network/README.md)
* [Testing code that writes data to the network](testing-code-that-writes-data-to-the-network/README.md)
* [Testing multithreaded code](testing-multithreaded-code/README.md)Things we avoid (in production code):
* [Avoid `lateinit`](lateinit/README.md)
* [Avoid the `!!` operator](bang-bang/README.md)
* [Avoid reflection](reflection/README.md)