编程语言
首页 > 编程语言> > Android Studio 实时代码模板可节省您的编码时间

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,模板,安卓
来源: