Lua-使用lua实现面向对象弊大于利吗

Lua-使用lua实现面向对象弊大于利吗

浮生未歇 发布于 2017-07-18 字数 215 浏览 1411 回复 4

用惯了OOP的开发人员,使用Lua开发服务器端的逻辑的时候,很自然的就将Lua封装一套面向对象的实现。这样的做法是否有必要? 我个人更倾向于用Lua实现过程式或者函数式的编程,将数据与方法隔离开,这样更有利于代码的热更新。

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

夜无邪 2017-10-31 4 楼

有了很多lua代码后,很明显就想把这些代码利用起来,最基本的用途就是重用。如果不需要重用,我觉得就没有必要进行OO的处理。原因是:
1.按照OO的方式对代码的结构和实现进行重构,其实是按照问题解决的逻辑进行处理的,主要的标准是解决问题的逻辑和思路。如果在其中发现了可以重用的部分,可能按照OO的方式来处理,也可能是按照面向过程的方式来处理。
2.一定的情况下可以在lua中引入OO的思想,如同用C来写面向对象的代码一样,但是有一定的程度,不要引入OO的高级部分,不仅实现起来难,而且可维护性也不好,难以理解。

浮生未歇 2017-09-04 3 楼

我觉得是否采用OO并不是一个很恰当的问题,从代码结构的角度来看一个程序是否优秀主要是看它的适应性,也就是它应对变化的能力,像Java这样的OO语言提供了很优秀的机制(接口、抽象类)来帮助你做好核心设计的抽象工作,高层可以借助这些抽象做好核心逻辑的处理或变化工作,而细节去实现这些抽象达到独立变化的目的,也就是隔离变化,但是OO绝不是增强适应性的唯一方式,Lua作为嵌入式语言,其优势就是对变化的快速响应能力,高层由C++实现,Lua来实现变化的部分,如果你认为Lua部分仍然有很多可抽象的设计,那么首先考虑去完善C++的部分,如果条件不允许,那对比一下采用Lua的OO是否能够达到提高适应性的目的,毕竟Lua不是为面向对象设计的,其机制决定其抽象能力是有限的,还有一点就是团队对OO的接受能力。
总而言之,OO只是手段而非最终目的,是否采用也看对你的最终目的是否能够带来便利。说句题外话,有时候忽视习惯性规则可以让我们自身有更好的“适应性”

灵芸 2017-08-24 2 楼

如果要写大量的Lua代码,肯定要用比较好的模式,那么OO应该是必选吧。
但是不一定非要C++那种OO,Lua和JS类似,是基于原型的OO,采用语言支持的OO模型应该是更方便的。

晚风撩人 2017-08-06 1 楼

若是使用lua开发大型应用,面向对象适合,实际面向接口(interface)更适合。因为OO的核心思想是尽量降低、封装变化。
若只是为了使用lua作为处理逻辑的脚本,不使用OO设计思想更适合。开发服务器端使用lua而不使用C++,就是考虑到lua的快速开发以及对开发人员的低要求(非开发人员都能使用)。对于业务变化,直接修改代码,不使用OO隔离变化。