隔离注解的实例化
Isolate the instantiation of an annotation
我有一个巨大的 @OpenApi
注释(基本上它是 Javalin/Kotlin 端点的文档),它占用了很多行:
@OpenApi(
summary = "",
description = "Lists all customers",
path = "customers",
queryParams =
// ...........
// ...........
// etc
)
override fun handle(context: Context) {
// body of the REST handler
}
我必须滚动很多才能看到实际的处理程序。
因此,我想以某种方式隔离它:
@GetCustomersDoc
override fun handle(context: Context) {
// body of the REST handler
}
我同意将文档移到其他地方的其他解决方案。
这将使代码更清晰,文档也更独立。
好的,所以您想要的是 @OpenApi
文档与 REST 处理程序代码分开。您可以通过移除实现而不是移除注释来做到这一点。
因此,在所有 @OpenApi
注释与 REST 处理程序代码混合的当前文件中,您调用辅助函数,如下所示:
@OpenApi(
summary = "",
description = "Lists all customers",
path = "customers",
queryParams =
// ...........
// ...........
// etc
)
override fun handle(context: Context) {
handleGetCustomers(context)
}
然后您将所有 REST 处理程序放在该文件的顶部或另一个文件中以进行更多隔离,这使您可以在它们之间滚动而不会受到 @OpenApi
注释的干扰:
// Collected at the top of the file, or in a separate file
fun handleGetCustomers(context: Context) {
// body of the REST handler
}
然后您可以轻松地在 REST 处理程序代码之间滚动,而不会被 @OpenApi
噪音打扰。
请注意,您应该使用 Go To -> Definition 功能 Android Studio 以避免必须滚动到handleGetCustomers()
.
您可以定义单独的注释:
annotation class MyOwnApi(
val openApi: OpenApi = OpenApi(
summary = "",
description = "Lists all customers",
path = "customers",
queryParams =
// ...........
// ...........
// etc
)
)
annotation class UserOpenApi(
val openApi: OpenApi = OpenApi(
summary = "Something",
description = "Lists all users",
// ...........
// ...........
// etc
)
)
优点:
- 代码分离
- 可重用注释 classes
- 您甚至可以制作一个构建器 class 并对其进行测试
缺点:
- 令人困惑
- 注释不能继承、扩展classes 或实现接口
如果 classes/objects 直接检查 @OpenApi
,- 可能无法 实施或需要复杂的代码更改。在这种情况下,您将需要另一个反射搜索来从字段中提取注释!
我有一个巨大的 @OpenApi
注释(基本上它是 Javalin/Kotlin 端点的文档),它占用了很多行:
@OpenApi(
summary = "",
description = "Lists all customers",
path = "customers",
queryParams =
// ...........
// ...........
// etc
)
override fun handle(context: Context) {
// body of the REST handler
}
我必须滚动很多才能看到实际的处理程序。 因此,我想以某种方式隔离它:
@GetCustomersDoc
override fun handle(context: Context) {
// body of the REST handler
}
我同意将文档移到其他地方的其他解决方案。
这将使代码更清晰,文档也更独立。
好的,所以您想要的是 @OpenApi
文档与 REST 处理程序代码分开。您可以通过移除实现而不是移除注释来做到这一点。
因此,在所有 @OpenApi
注释与 REST 处理程序代码混合的当前文件中,您调用辅助函数,如下所示:
@OpenApi(
summary = "",
description = "Lists all customers",
path = "customers",
queryParams =
// ...........
// ...........
// etc
)
override fun handle(context: Context) {
handleGetCustomers(context)
}
然后您将所有 REST 处理程序放在该文件的顶部或另一个文件中以进行更多隔离,这使您可以在它们之间滚动而不会受到 @OpenApi
注释的干扰:
// Collected at the top of the file, or in a separate file
fun handleGetCustomers(context: Context) {
// body of the REST handler
}
然后您可以轻松地在 REST 处理程序代码之间滚动,而不会被 @OpenApi
噪音打扰。
请注意,您应该使用 Go To -> Definition 功能 Android Studio 以避免必须滚动到handleGetCustomers()
.
您可以定义单独的注释:
annotation class MyOwnApi(
val openApi: OpenApi = OpenApi(
summary = "",
description = "Lists all customers",
path = "customers",
queryParams =
// ...........
// ...........
// etc
)
)
annotation class UserOpenApi(
val openApi: OpenApi = OpenApi(
summary = "Something",
description = "Lists all users",
// ...........
// ...........
// etc
)
)
优点:
- 代码分离
- 可重用注释 classes
- 您甚至可以制作一个构建器 class 并对其进行测试
缺点:
- 令人困惑
- 注释不能继承、扩展classes 或实现接口 如果 classes/objects 直接检查
- 可能无法 实施或需要复杂的代码更改。在这种情况下,您将需要另一个反射搜索来从字段中提取注释!
@OpenApi
,