博客
关于我
基于自己项目的 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/

你可能感兴趣的文章
Python单元测试-模拟VS补丁
查看>>
python协程实时输出_Python 协程以及事件循环的问题,怎么知道 IO 读取结束了呢?...
查看>>
Python十进制&;包提供错误的结果
查看>>
Python化身“安全老中医”:一键搞定工控系统漏洞,从零基础到精通,收藏这篇就够了!
查看>>
Python加速运行技巧
查看>>
python办公自动化基础遍历文件夹
查看>>
python办公自动化基础输出文件和文件夹
查看>>
python办公自动化基础搜索文件
查看>>
python知识:@classmethod和@staticmethod的异同
查看>>
python前端之css
查看>>
Python制作进度条,原来有这么多方法
查看>>
Python制作简单的学生成绩管理系统
查看>>
python制作甘特图的基本知识(附Demo)
查看>>
python制作一个简单的服务器,【Python】 做一个简单的 http 服务器
查看>>
Python到底能做什么?它的优点在哪?
查看>>
python利用pytorch库导出图像分割算子
查看>>
python利用pyshark监听网卡来抓包其中pyshark中摸索的一些可用参数
查看>>
python利用excel分析过杀漏失
查看>>
python判断汉字数目
查看>>
python判断文件是空的,如果是空的,就删除
查看>>