GitHub倡导的Ruby代码编写风格总结实用指南
平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“GitHub倡导的Ruby代码编写风格总结”来说,它看着像小点,放到项目里常会牵出环境、配置、兼容性和维护成本。下面按实际采用顺序,把思路、关键写法和容易踩坑的地方讲清楚,便于大家直接对照操作。
源代码布局方面:
1、所有源文件以UTF-8编码
2、采用2个空格的缩进
3、采用Unix风格的换行符(n),windows(rn)。可采用git config --global core.autocrlf true 防止产生windows风格的换行符。
4、在‘,',‘;'后,操作符(除指数操作之外),‘{',‘}'的前后增加空格,增加代码的可读性。
5、在‘(',‘)',‘[',‘]'符号后不要加空格。
6、Case和When处于同一代码层次。
7、2个def之间采用一个空行隔开
8、对于一个方法有多个参数导致太长的时候,按如下所示方式处理
def send_mail(source)
Mailer.deliver(to: '[email protected]',
from: '[email protected]',
subject: 'Important message',
body: source.text)
end
9、采用Rdoc生产系统的API文档,在注释和def之间不要有空行。
10、每行不超过80行
11、每行的结尾不要有空白字符。
语法方面:
1、一个方法如果没参数就省略括号,有参数就采用括号
2、如无必要,不要采用for,而采用each做循环
3、不要采用then
4、采用三元操作?:代替if,else。
5、不要在if else的内部采用?:操作符
6、采用when X then ...,因为when x ....在ruby1.9被删除了
7、采用&&和||做boolean操作,采用and,or做流程控制。
8、unless和else不要一起用
9、除非是判断条件涉及赋值操作,否则不不需括起来
10、把多行语句块采用{}包含,
11、不需采用的return的时候就不要用
12、不要采用‘'连接2行代码
13、采用||=来初始话变量,但是不能用来初始化boolean变量
14、不要采用perl风格的变量名,$1-9之类的
15、运行Ruby的时候,加上“-w”以提示我们代码中不好的地方
16、采用Ruby1.9的语法写lambda和hash
命名规范:
1、采用小写+“_"命名变量和方法
2、采用首字母大写命名Module和Class
3、采用全大写+”_"命名常量
4、对于得到值是boolean的方法加个“?”后缀
5、对于一些有潜在风险的方法加“!”后缀,比方说有exit,修改了self,或者变量等等
注释:
1、关于注释就一条,代码即注释,
类:
1、符合liskov原则,子类能够替换父类。
2、尽量让类做到SOLID (Single responsibility, Open-closed, Liskov substitution, Interface segregation and Dependency inversion)
3、为每个类都写一个to_s的方法以查看类的状态。
4、采用attr家族的方法做类属性的访问控制
5、考虑增加新的工厂方法做一些有意义的实例初始化工作。
6、采用DuckTyping而非继承。因为动态语言的特性,不在需多态了。
7、避免采用@@,全局变量,
8、根据访问情况,合理采用访问控制符。
9、采用self来定义单例方法,而不是采用类名。
异常:
1、不要放过一些异常
2、不要采用异常做流程控制
3、不要捕获Exception,异常基类。
4、根据异常类型的覆盖面排列异常
5、把所有的外部资源放到异常捕获模块中
6、优先采用库自带的异常,而不是自己新建异常
集合:
1、优先采用%w新建字符串数组
2、按需新建数组
3、采用Set去除List中的重复元素
4、采用Symbol做Hash key,而不是String,不要采用可变对象做Hash Key。
5、不要在遍历一个列表的同时,又在改变它。
Strings:
1、采用“#{String} #{string}”优于String+String
2、未采用#{}形式的String时,采用‘'表示
3、在做实例变量的连接时,不要采用{}
4、采用<<而不是+做字符串串联
正则表达式:
1、采用命名组而非$1-9以便于跟踪。
2、‘^','$'表示匹配整行,匹配整个字符串应采用'A','Z'
3、采用'x'修饰符修饰复杂的regex语句,增加可读性,但是注意空格的去除问题
%的语法:
1、多采用%w
2、需字符串内嵌表达式的时候采用%()
3、采用%r当正则表达式中出现多个/
4、不要采用%q,%Q,%x,%W,%s这些字符
5、在%后优先采用()作为分隔符
您可能感兴趣的文章:
- github 常用命令总结大全
- github pull最新代码实现方法
- github pull最新代码实现方法
- GitHub上一些实用的JavaScript的文件压缩解压缩库建议
- github版本库采用详细图文教程(命令行及图形界面版)
- ruby实现github第三方认证
- 在GitHub Pages上采用Pelican搭建博客的教程
- github设置采用指南
- 两分钟学会如何在github托管代码
- Git客户端图文详解 如何安装设置GitHub操作流程攻略
- python采用心得之获得github代码库列表
- GitHub Eclipse设置采用教程详解
-
09.03
Cinematic East Asian Woman Portrait
-
09.03
旅行社活动策划总结:如何通过AI写作提升客户体验与市场份额!
-
09.03
Candid East Asian Street Photography
-
09.03
Preppy High-Angle Fashion Portrait
-
09.03
Urban Realism Elevator Portrait
-
09.03
谷歌开始肢解DeepMind,数个团队被划归总部
-
-
- 完整指南Ruby中的代码块及其参数传递
- 09.03
-
-
-
- 谁还手动测量
- 09.03
-
-
-
下载
- |
-
-
下载
- 《行尸走肉第一章》免安装中文汉化硬盘版下载
- 单机|436 MB
- 一款以动作冒险为主题的游戏
-
-
下载
- 《街头霸王X铁拳》免安装中文汉化硬盘版下载
- 单机|111MB
- 一款非常好玩的格斗游戏
-
-
下载
- |
-
-
下载
- 《暗黑破坏神3》免安装繁体中文正式版下载
- 单机|7630 MB
- 一款以角色扮演为主题的游戏
-
-
下载
- 《马克思佩恩3》免安装硬盘版下载
- 单机|27033 MB
- 一款以第三人称射击为主题的游戏