ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Android Studio 实时代码模板可节省您的编码时间

2023-07-06 19:31:48  阅读:164  来源: 互联网

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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有