优秀 Ruby on Rails 开发人员的 10 个特征
过去五年我一直在Josh Software担任Ruby on Rails开发人员,我觉得应该把我学到的关于RoR开发人员最佳实践的经验记录下来。我是如何学习的呢?当然,学习任何东西都需要犯错,我们就是这样学习的,对吧?
让我们来看看,要成为一名“优秀的”Ruby on Rails开发人员,你需要遵循哪些原则。
1. 你们的迁移计划“考虑周全”……
每当你遇到数据库表架构设计时,你会考虑所有方面吗?
-
正在设计的表格将在哪里使用?它的数据量可能会增长到什么程度?(设想一下你设计的最糟糕的情况)
-
我是否保留了正确的数据类型、默认值和约束条件?大多数情况下,我们并不需要整数列,
smallint对于较小的数据集,我们可以用其他类型代替integers,类似地,也varchar(10)可以用varchar(255)其他类型代替text。 -
我是否已在必要的地方添加了索引?仔细思考一下这张表将要处理哪些类型的查询?
特别需要注意一点……你是否为同一张表编写了多个迁移脚本?如果是,这是一个坏习惯。
我们常常没有仔细考虑上面提到的所有要点,最终为同一个表创建多个迁移,导致代码库看起来很可怕。
相反,你应该使用up迁移down来修复或更改表,需求变更是一个例外。
2. 你始终遵循单一职责原则
我们都知道“瘦身主宰和胖模特”这种说法,有些人已经遵循这种说法,但我们是否明智地遵循了这种说法呢?
我们现在生活在 Rails 5 时代,为什么还要对模型进行过多操作呢?
为什么不遵循“保持一切精简,将多余的部分从模型移到关注点或服务对象”的原则呢?代码库中的类应该设计成只负责单一职责。
我偶然发现了以下关于如何在 Rails 中组织控制器和使用服务对象的帖子。
3. 你编写测试用例来测试“代码”。
我见过很多应用程序的持续集成构建需要很长时间才能完成,它们到底在测试什么?
你的测试用例应该测试“代码”,而不是机器性能,更好的测试套件
- 在不同的示例之间共享对象。
- 使用方法存根,避免重复调用方法。
- 不要对同一段代码进行两次测试;如果一段代码可以共享并在多个地方使用,那么就不要在多个地方编写测试用例。
- 不会创建不必要的测试记录,但很多开发人员在不知不觉中最终创建了不必要的测试记录。
如果您使用faker、factory_bot_rails和database_cleaner等 gem来创建和清理测试记录,那么创建不必要的记录会浪费您的时间和速度。
简单的例子
create_list(:user, 10)
如果你对 10 个用户没有特殊要求,那么最好减少列表大小。
create_list(:user, 2)
4. 保持生产环境健康
如果你是一名工程师,并且想要减少他人的工作量,那么你就是在利用其他工程师的成果来减少自己的工作量。
一个健康的 Rails 生产环境总是具备以下条件:
- 监控——一切是否正常运行?如果未正常运行,请收到通知。
- logrotate – 轮换、压缩和发送系统日志。
- 使用when执行crontab,让计划任务为你服务。
- 数据库备份脚本在维护窗口期间运行。
- 异常通知程序,例如Sentry或Rollbar,或者“任何适合你的程序”。
5. 你遵守基本的 Git 礼仪
如果你在团队中工作并使用 Git,那么你需要遵守 Git 礼仪,例如:
- 不要提交未跟踪的文件——我们经常保留 git 未跟踪的文件,例如
something.swp'backup.sqlschema.rborstructure.sql backups,some.test.script',你不应该提交这样的文件。 - 分支命名——给事物命名总是很困难,但你必须这样做,特性分支应该有合理的名称,不要使用类似“
something-wip,”这样的名称somthing-test。 - 合并后删除功能分支——无需解释。
- 提交信息——你的提交信息必须包含
Github issue number或any project management story number/link,brief description about feature/task
6. 请勿忽略 README.md 文件。
记住,你不是唯一一个终其一生都在开发某个应用程序的人。总会有人接手你的项目,他不应该浪费时间去研究如何进行设置。
您的应用程序库必须已更新README.md,其中包含首次设置应用程序的详细步骤。
7. 对你来说,秘密才是“真正”的秘密。
我们经常使用凭证进行数据库配置、secrets.yml 文件、第三方 API(如 AWS、支付网关、Sentry 等)。
您不应该将此类凭据/密钥/环境变量提交到 Github,而应该使用dotenv-rails、figaro等 gem或简单的点文件(这些文件不会提交到存储库)来确保它们的安全。
应提交一份包含此类凭证的示例文件,并定期更新。
8. 你会进行代码审查并与团队讨论功能。
在团队合作中,你应该让你的功能得到其他团队成员的审查,或者在开始任何功能之前与团队进行彻底的讨论。代码审查或功能讨论的优势在于,你会遇到许多没有想到的情况。
如果你是唯一一个在开发应用程序的人,那么你必须对自己的代码进行批判性分析,并在测试用例中涵盖所有场景。
9. 你掌握最新信息并持续更新
在开源社区中,Ruby、Rails 和 Gems 会频繁更新或发布,您必须通过订阅代码库或邮件列表来了解最新信息,并更新您的应用程序库。
此外,您还应密切关注生产操作系统和数据库的安全修复情况,以便及时采取必要的措施。
10. 无需赘言……
你编写的代码简洁易维护,你的代码库也……
- 正确缩进
- 仅80列宽
- 更易于维护,方法更少,复杂度更低——想了解更多信息,请养成使用代码分析工具(例如Rubocop或Code Climate)的习惯。
- 代码库遵循Ruby 最佳实践和风格指南。
当然,这份清单还可以包含更多要点,但我认为这些是最重要的,应该首先填写进去。如果您发现我遗漏了任何更重要的内容,请在帖子下方留言。
感谢您阅读至此,希望本文能帮助您成为一名“优秀”的开发者。
PS:我即将离开WordPress,这是转载帖子。
文章来源:https://dev.to/pramodshinde7/10-signs-of-a-good-ruby-on-rails-developer-2nc4