面向对象中传属性为方法参数是否合理?二叉树中序遍历写法对比
问题解答
问题1:面向对象编程中传递对象属性作为方法参数是否合理?
- 如果是当前对象自身的属性,完全没必要作为参数传递——类的方法可以直接通过
self(Python)/this(Java等)访问自身属性,额外传递属于冗余写法,还会降低代码可读性。 - 如果是其他对象的属性,可以传递,但更推荐的做法是:要么直接传递属性的取值,要么调用该对象的公开方法获取对应值,而不是直接暴露其内部属性,这更符合OOP的封装原则。
问题2:二叉搜索树中序遍历的两种写法哪种更规范?
第二种拆分写法(对外in_order2+内部辅助inner_inorder)更规范,原因如下:
- 符合封装原则:
root是二叉搜索树的内部私有状态,不应该暴露给外部用户直接访问,避免用户误操作或依赖内部实现细节。 - 提升易用性:用户调用时无需关心树的内部结构,只需要调用
in_order2()即可完成遍历,降低了使用成本。 - 代码可维护性更强:后续如果调整树的内部结构(比如修改root的存储方式),只需要修改内部辅助方法,对外的
in_order2接口可以保持不变,不会影响调用方代码。
内容的提问来源于stack exchange,提问作者Nat lin
相关产品推荐
相关产品推荐

