with one click
kotlin-patterns
Conventions for using Kotlin
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Conventions for using Kotlin
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
Conventions for dependency injection and mocking in Spring Boot in this project. Use this whenever writing, reviewing, or refactoring integration test classes (anything annotated @SpringBootTest, or under src/test that talks to a real Spring context), especially when deciding how to wire dependencies or mock collaborators. Also consult this before adding @Autowired, @MockBean, @MockitoBean, or field injection in any test class.
Conventions for Angular applications
Conventions for dependency injection and mocking in Spring Boot integration tests in this project. Use this whenever writing, reviewing, or refactoring integration test classes (anything annotated @SpringBootTest, or under src/test that talks to a real Spring context), especially when deciding how to wire dependencies or mock collaborators. Also consult this before adding @Autowired, @MockBean, @MockitoBean, or field injection in any test class.
| name | kotlin patterns |
| description | Conventions for using Kotlin |
!! operatorThe !! operator should be avoided in Kotlin as it can lead to NullPointerException at runtime. Instead, use safe calls (?.) or the let scope function to handle nullable values more gracefully.
?.) when possibleUsing the safe call operator (?.) is a good practice, but it should be used judiciously.
It makes no sense to use this operator when the value is guaranteed to be non-null, as it can lead to unnecessary null checks and reduce code readability.
var when possibleIn Kotlin, it is recommended to use val instead of var whenever possible. This helps to make the code more readable and maintainable, as it makes it clear that the value of a variable is not expected to change.
When using the delay function, it is recommended to use the overload that accepts a Duration parameter instead of a Long parameter. This makes the code more readable and easier to understand, as it clearly indicates the intended duration of the delay.
replace this:
delay(100)
with this:
delay(100.milliseconds)
Add import: import kotlin.time.Duration.Companion.milliseconds
Code does not need to be signed. The code signature used to have some value, but in current times, the commit already has a signature. Old code may contain signatures that look like this:
/**
* Created by joao on 28-4-16.
*/
They should all be removed, as they are not needed and add no value to the code.
When finding this:
.getForEntity("/tulips", String::class.java)
replace with:
.getForEntity<String>("/tulips")
CSVParser which is now deprecatedThis skill refers to the CSVParser from org.apache.commons.csv.*
Replace
val csvParser = CSVParser(reader, CSV_HEADER)
with
val csvParser = CSVParser.builder()
.setReader(reader)
.setFormat(CSV_HEADER).get()
Replace this
private val CSV_HEADER = DEFAULT
.withHeader(
"id",
"description",
"year",
"value",
"currency",
"type",
"diameterMM",
"internalDiameterMM",
"heightMM",
"widthMM"
)
with:
private val CSV_HEADER = CSVFormat.DEFAULT.builder()
.setHeader(
"id",
"description",
"year",
"value",
"currency",
"type",
"diameterMM",
"internalDiameterMM",
"heightMM",
"widthMM"
).get()
[ ] The code does not use the !! operator.
[ ] The code does not use the safe call operator (?.) when the value is guaranteed to be non-null.
[ ] The code uses val instead of var whenever possible.
[ ] The code uses the Duration overload when using the delay function.
[ ] The code does not contain any code signatures.
[ ] The code uses the kotlin extensions for parsing when using Kotlin code.
[ ] The code should not use the CSVParser constructuro directly