240 发简信
IP属地:河南
  • 高效的Kotlin——属性表示状态而不是行为

    属性表示状态而不是行为(Properties should represent state, not behavior) Kotlin中的属性(property)不同于Jav...

  • 高效的Kotlin——异常与类型安全结果

    异常与类型安全结果(Prefer null or Failure result when the lack of result is possible) 你可能觉得,这一条的...

  • 高效的Kotlin——明确参数和状态的约束条件

    明确参数和状态的约束条件(Specify your expectations on arguments and state) 这条的意思是说,对于函数传入的参数我们应该进行必...

  • 120
    高效的Kotlin——为可读性设计

    为可读性设计(Design for readability) 可读性是一种半玄学的话题,它的评价标准常常取决于上下文环境和你对一门语言的了解程度。来看一个具体的例子: 以上两...

  • 120
    高效的Kotlin——限制可变性

    限制可变性(Limit mutability) 只读属性 val 只读属性val可以改变,但是只读属性并没有提供修改的切入点,而修改切入点才是引起同步或者其他问题的主要原因。...

  • 高效的Kotlin

    最近在看一本书——Effective Kotlin[https://leanpub.com/effectivekotlin/],听名字就知道是Effective Java的K...

  • 120
    SM2国密算法/椭圆曲线密码学ECC之数学原理

    0. 前言 最近加入了一家做安全领域的公司,接触到了一些密码学的东西,尤其是国密算法,可能国内做这个方向的公司并不多,我发现国内关于国密算法的介绍都很浅,对于其背后数学及密码...

  • 120
    给人看的Kotlin设计模式——单例模式

    单例设计模式就不用多介绍了,说是大家最熟悉的设计模式也不为过,在Effective Java中有两条与之相关:第3条用私有构造器或者枚举类型强化 Singleton 属性,第...

  • @MycroftWong 官方之前承认过,dagger.android是失败的,这个就是替代方案

    Dagger小技巧之私有依赖

    前言 偶然间看到了这个关于Dagger小技巧的系列,很实用,也不复杂,在此我搬运转述一下。本文并非翻译,只是概述,想要更详细地了解,请查看原文:Dagger Party Tr...

  • 120
    给人看的Kotlin设计模式——原型模式

    原型设计模式是一种很简单的设计模式,其实就是通过clone方法去复制一个对象,也就是Java中的Cloneable接口。原型模式是很多语言的特性之一,包括Java和Kotli...

  • @MycroftWong 千层饼警告,一层更比一层深,话说Dagger就是这样,稀烂的文档,失败的dagger.android,明明是简单的DI,整的学习曲线无比陡峭,但是这种生成代码式的DI在性能上无人能及。现在情况已经不太一样了,因为Kotlin Multi-Platform来了,像是Kodein已经实现了KMP,Koin也在向KMP靠拢,Dagger这种Java特定平台的东西,扩展性肯定要差一些,如果Kotlin有多平台下的注解处理器,那还是可能实现类Dagger的DI框架,不过目前来看还不太可能,推荐你关注一下Koin,或许会有不一样的思路。

    Dagger小技巧之私有依赖

    前言 偶然间看到了这个关于Dagger小技巧的系列,很实用,也不复杂,在此我搬运转述一下。本文并非翻译,只是概述,想要更详细地了解,请查看原文:Dagger Party Tr...

  • @MycroftWong 使用Module注入User并不一定只在Module中使用,不然也不会有私有依赖这一说,Component之间的关系决定了User的使用范围。虽然这四种方式本质上可以看作一样的,但是能使用1的肯定推荐使用1,因为简洁,能使用3,4的也不推荐使用2,还是因为简洁,性能也稍好。

    Dagger小技巧之私有依赖

    前言 偶然间看到了这个关于Dagger小技巧的系列,很实用,也不复杂,在此我搬运转述一下。本文并非翻译,只是概述,想要更详细地了解,请查看原文:Dagger Party Tr...

  • @MycroftWong correct

    Dagger小技巧之私有依赖

    前言 偶然间看到了这个关于Dagger小技巧的系列,很实用,也不复杂,在此我搬运转述一下。本文并非翻译,只是概述,想要更详细地了解,请查看原文:Dagger Party Tr...

  • 更常见的可能是这个例子,AppComponent 常常需要Application Context,可以通过Module的方式注入,但是更推荐使用Builder的方式:
    @Component
    interface AppComponent {
    @Component.Builder
    interface Builder {
    @BindsInstance
    fun application(application: Application): Builder
    fun build(): AppComponent
    }
    }

    Dagger小技巧之私有依赖

    前言 偶然间看到了这个关于Dagger小技巧的系列,很实用,也不复杂,在此我搬运转述一下。本文并非翻译,只是概述,想要更详细地了解,请查看原文:Dagger Party Tr...

  • 然后,向Component添加依赖对象有几种方式,1.构造函数@Inject 2.传统Module方式 3.Component Builder 4.Component Factory。方式4是Dagger后来添加的,本质上跟方式3是一样的,你可以忽略。像你这种问题,使用方式3最合适。大致如此:
    @SubComponent
    interface UserComponent {
    @Subcomponent.Builder
    interface Builder {
    @BindsInstance
    fun user(user: User): Builder
    fun build(): UserComponent
    }
    }
    这个User在你创建UserComponent的时候必须动态的传进Component中,这就省着通过创建一个Module传输了。

    Dagger小技巧之私有依赖

    前言 偶然间看到了这个关于Dagger小技巧的系列,很实用,也不复杂,在此我搬运转述一下。本文并非翻译,只是概述,想要更详细地了解,请查看原文:Dagger Party Tr...

个人介绍
头顶的星空以及心中的道德定律