语义:状态或依存关系,不是两者

我编写的越多,越容易获得。 但是,关于编程的问题更多。

本周,我的想法是关于面向对象的编程。 有人告诉我OOP是关于封装状态的,而行为是一个孤立的单元。

在我所知道的语言中,状态转化为属性,行为转化为方法。

publicclassCat{

    privateColorcolor;

    publicvoidmew(){...}
}

这就是说,单元测试要求在隔离的能力进行测试:这已经通过依赖注入启用(无论是手动或框架为基础的)。 依赖关系也转换为属性,尽管大多数(如果不是全部)在实例生命周期中始终不变。

publicclassMechanicalCat{

    privatefinalRepairmentManagerrepairmentMgr;

    publicMechanicalCat(RepairmentManagerrepairmentMgr){
        this.repairmentMgr=repairmentMgr;
    }
}

现在,我们将状态和依赖项都当作属性来处理。 对于Java来说,这是有道理的,因为依赖注入比语言早得多地成为主流。 更现代的JVM语言引入了val的概念,该概念使属性不可变。 这是上面代码的Kotlin端口:

classCat(varcolor:Color){

    funvoidmew(){...}
}

classMechanicalCat(valrepairmentMgr:RepairmentManager)

但是,这种语义仅涉及可变性/不变性。 Java当时已经有了一个不同的语法相同semnantics -的final关键字。

我想知道我们是否可以对状态和依赖项使用不同的语义? 是否有任何语言创建者阅读此博客并认为将它们分开可能是一个好主意?

翻译自: https://blog.frankel.ch/semantics-state-or-dependency-not-both/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值