Android Studio 实时代码模板可节省您的编码时间
作者:互联网
Android Studio(以及 JetBrains 开发的任何其他 IDE)提供了多个方便的自动完成快捷方式来填充声明、方法调用等。其中一些是针对 Kotlin / Android 特定的关键字。避免仅仅因为避免在 IDE 中使用上下文帮助器而重复某些操作。IDE 可以帮助您提高工作效率。
内置模板:
一些纯 Kotlin 模板:
const—const val
void, fun0, fun1, fun2— 创建一个具有所需参数数量的函数
ifn/ inn—— if ( … == null)/if ( … != null)
todo— // TODO:
fixme—// FIXME:
一些特定于 Jetpack Compose 的 Android:
comp— 创建撰写功能
paddp—Modifier.padding(.dp)
weight—Modifier.weight()
prev— 预览撰写功能
prevCol— 创建撰写预览的集合
Container要使用、Column或围绕可组合项Row,请将指针放在可组合项上,按 Alt+Enter,选择“用小组件环绕”。您可以根据需要设置自己的快捷方式。我将其设置为 Alt+i,但这完全取决于您。
您可以使用ctrl + alt + t实现类似的功能,它甚至可以将代码包装到 if-else 或 try-catch 中。
还有更多模板,但如果您开始编写代码,它们会自动弹出,因为它们通常很明显。如果您开始编写类、接口、for 循环和许多其他内容,您将获得上下文帮助器来完成关键字。
然而,还有更多的改进空间。
自定义模板
如何添加新模板
程序员都是懒惰的,我也不例外。我看到很多程序员试图在他们的代码、互联网或一些业余爱好项目中的某个地方找到代码片段。如果它有重复模式,请花一两分钟创建一个模板,并且不要每次都从头开始重复编写该代码块。
打开 Android Studio 并转到File → Settings → Editor → Live Template。通过单击右上角的加号,您可以将模板组或模板添加到现有类别。
我鼓励您探索所有可用的模板,因为除了我上面提到的模板之外,您还会发现其他有用的模板,或者您会获得如何进一步简化工作的灵感。
如果添加新的实时模板,则必须在左下角使用黄色警告标志定义上下文。随意创建一个模板,不仅仅是 Kotlin 的模板。它可以是 Java、Dart、Gradle 或其他任何东西。
实时模板示例
缩写是代码中用于调用模板的文本。它可以是任何对您来说方便且难忘的事情。我喜欢用大写开头字母来保持简单,因为 Kotlin 的大部分变量都是用驼峰命名法编写的。
模板文本是您输入模板的字段。自定义输入可以通过 定义$…$。如果您将它们命名为相同,则第一个输入将在其他实例之间共享。$STATE$因此,如果您像上面的示例一样首先开始编写,它将在整个模板中复制。
高级行为
通过单击编辑变量,您将获得一个包含模板中的自定义输入的表格。要声明默认值,您可以在输入中使用引号,例如"defaultValue"。
表达式用于快速向自定义字段添加更多功能。您可以添加班级名称、日期、用户、建议输入或任何内容。请注意,它不能用于修改您当前的输入,但它可以从已定义的其他字段获取输入。
$END$是一个特殊的占位符,完成模板后光标将跳转到该占位符。
表达式中的一些亮点:
块注释开始 / 块注释停止
大写/驼峰式
className — 引入类名
日期— 设置评论内日期的格式
fileName — 放置模板的文件的名称
methodName — 使用实时模板的方法
suggestVariableName — 根据输入,它将建议一个变量名称
还有很多
可以在此处找到更多内容以及解释和示例。
实时模板变量 | 智能IDEA
了解实时模板中的变量
www.jetbrains.com
模板创意
以下是我在编程过程中经常使用的一些想法,因为它们在整个代码中重复出现。代码可以直接作为实时模板放入 Android Studio 的设置中。您可以随意创建自定义版本和缩写来调用它们。
MutableStateFlow 和 StateFlow
私有 val _$StateFlow$: MutableStateFlow<$StateType$> = MutableStateFlow($StateDefault$)
val $StateFlow$ = _$StateFlow.asStateFlow()
希尔特视图模型
StateName 可以使用 MVI 架构的 ViewModel 的小写名称。
@HiltViewModel
类$VmName$ViewModel @Inject 构造函数($Parameters$) : ViewModel() {
private val _$StateName$State: MutableStateFlow<$StateType$> = MutableStateFlow($StateDefault$)
val $StateName$State = _$StateName $State.asStateFlow()
}
ViewModel 的作用域协程函数
方法,其作用域为调度程序定义的协程上下文。调度程序作为变量使用completeSmart表达式向您显示可用的调度程序,如 Main、IO 或 Default。
private fun $MethodName$ () = viewModelScope.launch(Dispatchers.$Dispatcher$) {
Log.i(TAG, " $MethodName $: 调用" )
$END$
}
在 Hilt 中绑定的模块类
在我的代码中,我将接口作为模板引用,因此当前的实现和接口通常有一个共同的名称。该模块被创建为参数的驼峰命名法表达式版本。
@Module
@InstallIn($Component$::class)
抽象 类$Module$DI {
@Binds
@$Injector$
抽象 乐趣提供$Module$ ($ModuleCamelCase$: $ Module $) : $Module$Template
}
绑定在希尔特
与以前相同,但仅针对一个依赖项。
@Binds
@$Injector$
抽象 乐趣提供$Module$ ($ModuleCamelCase$: $ Module $) : $Module$Template
Hilt 中提供的模块类
与之前的绑定实现类似,但现在提供提供。
@Module
@InstallIn($Component$::class)
对象$Module$DI {
@Provides
@$Injector$
fun提供$Module$ ($ModuleCamelCase$: $ Module $) : $Module$Template = $END$
}
在希尔特提供
@Provides
@$Injector$
乐趣提供$Module$ ($ModuleCamelCase$: $ Module $) : $Module$Template = $END$
@ApplicationContext context: ContextApplicationContext 快捷方式对于 Hilt 的使用很有用。
Room 数据库 Dao 的定义
我实现了所有基本信息,但有时不需要所有这些。
@Dao
接口 $Type$Dao {
@Query ( "SELECT * FROM $Type$" )
fun getAll (): List<$Type$>
@Query ( "SELECT * FROM $Type$ WHERE id = :id" )
fun getById(id:Int):$Type$?
@Insert (onConflict = OnConflictStrategy.REPLACE)
fun addItem ( item : $Type$)
@Update (onConflict = OnConflictStrategy.REPLACE)
fun updateItem ( item : $Type$)
@Delete
fun deleteItem ( item : $Type$)
}
单元测试的测试类
使用mockito规则对测试类进行整体初始化,以供将来的模拟实现。第一个测试只是为了确保被测试的单元被正确实例化,第二个测试被放置用于测试。
@RunWith(JUnit4::class)
class $TestClassName$Test {
@get:Rule
val mockitoRule: MockitoRule = MockitoJUnit.rule()
@Before
fun setUp () {
}
@After
fun TeaDown () {
}
@Test
fun `初始测试` () {
val sut: $TestModule$ = $TestModule$($Parameters$)
}
@Test
fun `$TestDescription$` () {
// 排列
val sut: $TestModule$ = $TestModule$($Parameters$)
$ END$
// 操作
// 检查
}
}
单机测试
@Test
fun `$TestDescription$` () {
// 排列
val sut: $TestModule$ = $TestModule$($Parameters$)
$END$
// 操作
// 检查
}
模拟创建
@Mock
private var $variable $: $variableType $
结论
要导出模板并将其保留在其他计算机上或与其他人共享,您可以转到“文件”→“管理 IDE 设置”→“导出设置”。进口也是如此。
可能需要一段时间才能习惯某些快捷方式。设置也需要一些时间。然而,它可以成为一种新的习惯,这将为你节省大量的时间。
标签:Android Studio,模板,安卓 来源: