对象:方法 vs 函数

方法 vs 函数

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

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

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

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

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

订单实际上是由购物车转换过来的,它们都用来存储商品。购物车有几个问题,第一购物车未必需要用户登录,第二购物车可能跨多个设备,购物车的设计纯粹是围绕商品进行,它对于用户的身份并不关心ÿ

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值