OpenResty 从入门到实战
温铭
OpenResty 软件基金会第一任主席,Apache APISIX 项目 VP
20903 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 52 讲
结束语 (1讲)
OpenResty 从入门到实战
15
15
1.0x
00:00/00:00
登录|注册

34 | 特别放送:OpenResty编码指南

返回处理
命名风格
常量命名
命名风格
局部变量
错误处理
模块
函数
字符串
数组
变量
每行最大长度
空行
空格
缩进
lj-releng
luacheck
Python PEP 80
更新和维护
编码风格
OpenResty的编码规范
重要性
开发语言的编码规范
编码指南

该思维导图由 AI 生成,仅供参考

你好,我是温铭。
很多开发语言都有自己的编码规范,来告诉开发者这个领域内一些约定俗成的东西,让大家写的代码风格保持一致,并且避免一些常见的陷阱。这对于新手来说是非常友好的,可以让初学者快速准确地上手。比如 Python 的 PEP 80,就是其中的典范,几乎所有的 Python 开发者都阅读过这份 Python 作者执笔的编码规范。
让开发者统一思想,按照规范来写代码,是一件非常重要的事情。OpenResty 还没有自己的编码规范,有些开发者在提交 PR 后,会在代码风格上被反复 review 和要求修改,消耗了大量本可避免的时间和精力。
其实,在 OpenResty 中,也有两个可以帮你自动化检测代码风格的工具:luacheck 和 lj-releng。前者是 Lua 和 OpenResty 世界通用的检测工具,后者则是 OpenResty 自己用 perl 写的代码检测工具。
对我自己来说,我会在 VS Code 编辑器中安装 luacheck 的插件,这样在我写代码的时候就有工具来自动提示;而在项目的 CI 中,则是会把这两个工具都运行一遍,比如:
luacheck -q lua
./utils/lj-releng lua/*.lua lua/apisix/*.lua
毕竟,多一个工具的检测总不是坏事。
但是,这两个工具更多的是检测全局变量、每行长度等这些最基础的代码风格,离 Python PEP 80 的详细程度还有遥远的距离,并且也没有文档给你参考。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

OpenResty编码指南是一篇介绍OpenResty编码规范的文章。作者指出了在OpenResty开发中常见的代码风格问题,并提供了相应的规范建议。文章首先介绍了缩进、空格、空行、每行最大长度、变量、数组、字符串、函数、模块以及错误处理等方面的规范。其中,强调了使用4个空格作为缩进标记,在操作符两边使用空格分隔,以及避免在热代码路径上拼接字符串等。此外,还提到了对局部变量和全局变量的使用,以及对错误信息的判断和处理。作者还强调了函数命名和返回的规范,以及对模块和库的引用规范。总的来说,这篇文章为OpenResty开发者提供了一份详细的编码规范,帮助他们在开发过程中避免常见的陷阱,保持代码风格的一致性。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《OpenResty 从入门到实战》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(6)

  • 最新
  • 精选
  • helloworld
    local ngx = ngx 这种方式,luacheck会报警告:accessing undefined variable ngx local ngx = require "ngx" 这样就不会报警告了,而且也能用,老师,这样可以吗

    作者回复: 就是这样的

    2019-08-13
    2
  • 许童童
    老师你好 ++操作符之间是否需要空格? i++ 还是 i ++

    作者回复: Lua 中并不支持 ++ 这个操作符,我们一般都是用 i = i + 1来替代

    2019-08-12
    2
    1
  • 鱼鱼
    luacheck可以-std ngx_lua,这样不用写成require ngx。另外ci可以额外传参数 -only 0 1 这样就只会检查lua的报错和全局变量。
    2023-02-04归属地:上海
    1
  • Geek_Wx.71
    lj-releng 检查时候会对ngx,setmetatable,string 等等标准库函数报错。。。这是什么原因引起的呢
    2020-03-02
  • 北冥Master
    Require库local化的意义?避免修改库导致污染其他加载该库的代码?
    2019-11-20
  • 连边
    一门语言,规范还是很重要的。老师有心了。
    2019-08-14
收起评论
显示
设置
留言
6
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部