博客
关于我
基于自己项目的 lua 代码规范和一些书写的注意事项总结
阅读量:491 次
发布时间:2019-03-06

本文共 1681 字,大约阅读时间需要 5 分钟。

编程实践:从Data到Logic——代码优化与重构指南

一、逻辑与数据分离的优势

将逻辑与数据分离,使其成为现代程序设计的基础原则。简单理解可以认为,函数(function)即为逻辑,表(table)则为数据。两者的分离不仅能够提升代码的可维护性,还能显著增强代码的可扩展性和复用性。

1.修改数据时逻辑不变之优点

通过建立专门的数据表,将品质与对应的ID映射存储其中。例如,武学的品质映射可以通过填写品质表的替代物品ID字段来实现。这种设计方式让修改数据时专注于数据方便无误地维护,逻辑无需变动,帮助开发者避免因数据修改导致的逻辑错误。

2.避免过度拆分函数

函数的复用性与调用消耗之间存在权衡。对于嵌套调用次数多的逻辑,建议合理控制函数的拆分程度,避免过度层叠。通过将逻辑细节抽象为数据表(如品质表),可以显著减少函数调用层级,提升整体效能。

3.逻辑复用与数据驱动

复杂逻辑可以通过数据的扩展来实现多样化功能。例如,针对不同的掉落类型,可以增加相应的数据项,而无需修改现有逻辑。此外,将触发剧情的条件存储在数据中,使得逻辑变得更加灵活和可控。

4.高效处理大规模数据

将地名存储到全局数据或表中,可以避免每次调用函数时生成新的数据结构,节省内存分配和CPU消耗。例如,高频调用的地名函数优化后,仅需0.07秒完成,而未优化版本在10万次调用下耗时4.2秒。

二、逻辑的清晰性提升

代码的可读性直接影响开发效率和代码质量。通过适当换行、增加注释等方式,可以极大提升逻辑的可读性。

1.增加注释

代码的复杂性决定了注释的必要性。大块注释用于解释复杂逻辑,同步修改注释与代码可维护性更大。

2.避免代码冗余

重复逻辑应通过抽象接口或函数复用机制避免。例如,将通用的逻辑封装为接口,供其他模块反复使用。同时,确保每个逻辑单元(如模块、函数)都有明确的责任,避免因修改需要遍历整个文件造成遗忘。

三、共性与代码精简

在代码中寻找共性(Commonality)是精简代码的关键。任何事物都有其共性,通过提取共性可以将代码量大幅减少并提升复用性。

1.减少重复代码

通过建立数据表(如品质表、物品表),可以将重复的条件判断转化为数据查询,避免冗余逻辑。例如,在处于特定品质等级时触发的逻辑变化,可以通过对应的表存储处理规则实现。

2.避免一次性写成20行代码

代码的复杂性与可读性之间存在着微妙的平衡。一行优化的代码往往能实现多行功能,真正的高手会在保持简洁的同时实现高效。例如,通过数据表替代数组,可以大幅减少条件判断和循环的次数。

四、算法复杂度优化

在算法设计中,优化的重点是减少不必要的操作和降低复杂度。

1.键值对优化

使用哈希表(如Lua中的表)存储键值对,可以将O(n)的数组查询优化为O(1)。例如,在判断玩家是否拥有某个成就时,直接从成就表中查询即可。

2.减少全表遍历

通过将筛选条件提前存储在数据表中,可以减少全表遍历带来的性能损耗。例如,将候选ID存储在筛选表中,再在此表中进行筛选操作。

3.避免递归

递归算法通常在调用栈增加带来性能消耗,应优先考虑迭代替代。例如,求最大公约数的递归可以通过模拟栈结构的迭代实现。

4.应对NP问题

NP问题的复杂度无法预估,因此应避免直接实现。这需要在需求分析阶段就识别出来,并通过成熟的算法或优化手段找到可行解决方案。

五、命名规范化与函数优化

函数命名应遵循直观性和可读性原则,避免拼音混淆。

1.命名规则

函数命名应使用英文单词或短语,保持清晰易懂。例如,将过长难懂的汉语拼音命名替换为英文描述。

2.函数设计注意事项

低层函数应具备高效率,合理控制函数复用与拆分,避免过度的层次嵌套调用带来的性能损耗。

六、编程技巧与反思

在实践中,提前建立合理的数据结构和接口能够事半功倍。同时,定期进行代码审查和反思,及时发现和纠正潜在问题。

通过以上方法,可以显著提升代码的可读性、性能和维护性。如果有任何代码实现需要改进,记得深入分析是否存在规律性的共性,是否可以通过数据的扩展实现功能的扩展而无需修改逻辑。

转载地址:http://btjdz.baihongyu.com/

你可能感兴趣的文章
PoolingHttpClientConnectionManager原理剖析
查看>>
POP-一个点击带有放大还原的动画效果
查看>>
POP3 协议在计算机网络中的优缺点
查看>>
Portaudio笔记-WASAPI
查看>>
position:fixed失效情况
查看>>
Position属性四个值:static、fixed、absolute和relative的区别和用法
查看>>
POSIX thread编程中关于临界区内条件变量的分析
查看>>
POSIX与程序可移植性
查看>>
posix多线程有感--自旋锁
查看>>
SpringBoot中集成海康威视SDK实现布防报警数据上传/交通违章图片上传并在linux上部署(附示例代码资源)
查看>>
POSIX标准和XSI扩展
查看>>
post install error,please remove node_moules before retry
查看>>
PostGIS中获取所有EPSG的编码以及对应Proj4字符串
查看>>
PostGIS在Windows上的下载与安装
查看>>
postgis数据库优化_postgresql 性能优化
查看>>
Postgres Docker版本安装mysql_fdw 插件
查看>>
Postgres invalid command \N数据恢复处理
查看>>
Postgres like 模糊查询匹配集合
查看>>
Postgres 自定义函数内实现 in 操作符的递归查询
查看>>
Postgres 返回当前时间前后指定天数的集合
查看>>