对象:方法 vs 函数

本文探讨了方法与函数在编程中的差异。方法面向数据,关注数据的状态和操作,而函数是无状态的,专注于算法流程。设计方法时应考虑是否与数据紧密相关,而函数则更适合无状态的计算。在并发编程中,方法由于涉及共享状态,可能导致数据竞争,而函数则避免了这个问题。此外,Go语言中方法的定义有一些特殊限制,如不能为指针类型直接定义方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

方法 vs 函数

正确使用函数和方法,对于编码十分重要。

  • 函数是数据加工流程蓝图。
  • 引起函数变化的应该(最好)只有参数。
  • 方法面向数据,维护和展现其状态。
  • 多次调用或不同调用次序导致不同输出结果。
  • 多个方法共同维护状态,存在耦合和关联性。

方法带来很多设计层面上的概念,方法可以看成是函数的一种包装,在实现层面方法是函数的语法糖。

在汇编角度来看,方法和函数没多大区别,方法是高级语言语法糖。在设计角度或者思想层面看,方法和函数有很大不同。函数实际上描述的是一个加工流程蓝图,它在程序运行期创建堆栈帧用于存储状态,把数据或者参数加入工艺流程里得到结果,它更注重算法过程。函数最好的设计是函数本身是固定的,相对来说容易通过单元测试把代码固化或者冻结起来,它本身变化只有一种,传递什么参数得到什么结果,所有的变化只和参数有关系。

方法面向数据,当方法和某一个数据绑定的时候,这个方法的生命周期和这个数据有关系。方法的核心是数据,修改数据和展现数据,方法的内容围绕着数据进行不应该超出数据之外。例如增加计数器每次调用都会导致结果不一样,调用次数和次序不同导致结果也不同。设计一个算法最好的方式是设计成一个函数,它本身是无状态的,选择函数还是选择方法关键在于设计一个加工算法还是围绕着数据。设计方

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值