LinuxShell脚本编程最佳实践
哈喽大家好!我是波哥!
最近做了一个简约版互联网行业新闻小程序.
有兴趣的可以点击下方链接或者微信搜索: IT路边社
IT路边社
前言
与其它的编码规范一样,这里所讨论的不仅仅是编码格式美不美观的问题, 同时也讨论一些约定及编码标准。这份文档主要侧重于我们所普遍遵循的规则,对于那些不是明确强制要求的,我们尽量避免提供意见。
为什么要有编码规范
编码规范对于程序员而言尤为重要,有以下几个原因:
一个软件的生命周期中,80%的花费在于维护
几乎没有任何一个软件,在其整个生命周期中,均由最初的开发人员来维护
编码规范可以改善软件的可读性,可以让程序员尽快而彻底地理解新的代码
如果你将源码作为产品发布,就需要确任它是否被很好的打包并且清晰无误,一如你已构建的其它任何产品
编码规范原则
本文档中的准则致力于最大限度达到以下原则:
正确性
可读性
可维护性
可调试性
一致性
美观
尽管本文档涵盖了许多基础知识,但应注意的是,没有编码规范可以为我们回答所有问题,开发人员始终需要再编写完代码后,对上述原则做出正确的判断。
代码规范等级定义
可选(Optional):用户可参考,自行决定是否采用;
推荐(Preferable):用户理应采用,但如有特殊情况,可以不采用;
必须(Mandatory):用户必须采用(除非是少数非常特殊的情况,才能不采用);
注:未明确指明的则默认为必须(Mandatory)
主要参考如下文档:
Google Shell Style Guide
Bash Hackers Wiki
源文件基础使用场景
仅建议Shell用作相对简单的实用工具或者包装脚本。因此单个shell脚本内容不宜太过复杂。
在选择何时使用shell脚本时时应遵循以下原则:
如主要用于调用其他工具且需处理的数据量较少,则shell是一个选择
如对性能十分敏感,则更推荐选择其他语言,而非shell
如需处理相对复杂的数据结构,则更推荐选择其他语言,而非shell
如脚本内容逐渐增长且有可能出现继续增长的趋势,请尽早使用其他语言重写
文件名
可执行文件不建议有扩展名,库文件必须使用.sh作为扩展名,且应是不可执行的。
执行一个程序时,无需知道其编写语言,且shell脚本并不要求具有扩展名,所以更倾向可执行文件没有扩展名。
而库文件知道其编写语言十分重要,使用.sh作为特定语言后缀的扩展名,可以和其他语言编写的库文件加以区分。
文件名要求全部小写, 可以包含下划线_或连字符-, 建议可执行文件使用连字符,库文件使用下划线。
正例:my-useful-binmy_useful_libraries.shmyusefullibraries.sh
反例:My_Useful_BinmyUsefulLibraries.sh
文件编码
源文件编码格式为UTF-8。避免不同操作系统对文件换行处理的方式不同,一律使用LF。
单行长度
每行最多不超过120个字符。每行代码最大长度限制的根本原因是过长的行会导致阅读障碍,使得缩进失效。
除了以下两种情况例外:
导入模块语句
注释中包含的URL
如出现长度必须超过120个字符的字符串,应尽量使用here document或者嵌入的换行符等合适的方法使其变短。
示例:# DO use "here document"scat <