软件设计之美
郑晔
开源项目 Moco 作者
19890 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 42 讲
软件设计之美
15
15
1.0x
00:00/00:00
登录|注册

06 | Ruby on Rails:如何分析一个软件的接口?

你好!我是郑晔。
在上一讲中,我以 Spring 的 DI 容器为例,给你讲解了如何理解一个项目的模型。在模型之后,下一步就该是接口了。
在任何一个项目中,接口的数量都不是一个小数目。仅仅一个普通的程序库,里面的接口少则几十个,多则成百上千。难道我们理解接口,就是要一个一个地读这些接口吗?
显然,你不太可能把所有的接口细节都记住。我写 Java 程序差不多 20 年了,但很多 JDK 里的类我都不了解。甚至有时候,还没有等我去了解这个类,它就过时了。
那么,如何才能从纷繁复杂的接口中,披荆斩棘而出呢?我给你个方法:找主线,看风格
找主线的意思是,你需要找到一条功能主线,建立起对这个项目结构性的认知,而不是一上来就把精力放在每一个接口的细节上。你对细节部分的了解会随着你对项目的深入而逐渐增加。而有了主线后,你就有了着力点,就可以不断深入了。
但是,我们要学习的不只是这些接口的用法,要想从项目的接口设计上学到更多,这就需要你关注它所引导的风格,换句话说,就是它希望你怎样使用它,或是怎样在上面继续开发。
从一个项目的接口风格中,我们不难看出设计者的品位。我们常把编程视为一种艺术,而在接口的设计上就能窥见一二。这些内容是我们在学习软件设计时,应该慢慢品味的。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Ruby on Rails是一个基于MVC模型进行开发的Web框架,其接口设计风格体现了约定优于配置的理念。文章介绍了如何分析软件接口,强调了找到项目主线的重要性,并从文档和起步走文档中找到了Rails的主线。Rails提供了REST API、API和命令行三种接口,其中REST API是应用对外暴露的接口,它将Web信息视为资源,并对应HTTP的各种动词。Rails通过约定的方式,使得开发者可以轻松地编写符合REST结构的代码,从而引导了外部接口的风格。文章以简洁明了的方式介绍了Rails的接口设计风格,强调了其对行业带来的不同思考。 文章还介绍了Rails的命令行接口,强调了Rails的自动化程度和最佳实践的融合。通过简单的命令,开发者可以快速创建项目、生成代码骨架,并且自动化工具会帮助管理软件包版本、数据库改动等,极大地提高了开发效率。此外,文章还指出了Rails在Web开发领域的影响和其在行业中的地位。 总的来说,本文通过介绍Ruby on Rails的接口设计风格和命令行接口,强调了良好的接口设计对开发习惯和效率的重要性,以及Rails在行业中的影响和地位。文章内容简洁明了,对读者了解Rails的接口设计和自动化程度有很好的指导作用。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《软件设计之美》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(20)

  • 最新
  • 精选
  • Hank_Yan
    找主线,看风格。找主线看文章,看风格看接口。从上到下,从整体到局部。不过这也是正常读源码的一个步骤。

    作者回复: 太喜欢你这个评论了,这就应该是正常的步骤啊,可是很多人不知道。

    2020-06-07
    3
    20
  • Jxin
    1.最早自学的就是ruby,要不是因为找不到工作,可能就做不成javaer了。论快速搭建一个web项目,至今依旧是ruby on rails。一个多小时从无到有搭建一个博客系统的时候,信心爆棚。 2.本篇,明天得再看看。get不到点。只能理解风格应该是说设计偏好。至于主线,从ruby这个demo里没能get到。 3.spring。兼容(老版本以及各种场景),开放(提供规范和基础工具,方便各种“实现”自己写插件接入spring),与时俱进(springboot的推出,算得上破而后立),追求卓越(在迭代中改变接口命名,只为让原本达意的命名更达意)

    作者回复: Ruby 成于 Rails,也败于 Rails。

    2020-06-05
    2
    16
  • 王智
    Ruby on Rails这个设计在当时感觉很超前,也不知道现在的SpringBoot是不是借鉴了,感觉从SpringBoot上能看倒Ruby on Rails的身影, SpringBoot的约定大于配置,还SpringBoot把命简洁的页面,勾选之后就可以创建一个简单的SpringBoot项目等等,Ruby on Rails的设计在现在看来可能确实没什么,但在当时感觉这个设计就太超前了.

    作者回复: 你说得很对,Rails超前是全方位的,今天看来,很多东西都影响了全行业。

    2020-06-06
    2
    7
  • 捞鱼的搬砖奇
    在 Spring 的源码中 接口 -> 抽象类->实现类,如 BeanDefinition -> AbstractBeanDefinition -> RootBeanDefinition。这样的设计风格。顶层接口规定定义,抽象类提供部分实现。用户需要扩展,可以选择从抽象类进行扩展,或从接口扩展。

    作者回复: 上一讲是 Spring,这一讲是 Ruby on Rails,这个评论让我有一种走错片场的感觉。:)

    2020-06-05
    7
  • 六一王
    接触的第一个框架就是 rails,用起来确实很爽,今天看到此篇文章,让我对它更有敬意,而不会因为现在不就行,或者性能不够好,就看不起它,没有东西是绝对的好,或者绝对不好,今天全是对这个道理有更深层的理解了。 我之后学习了JavaScript,转了前端,学习 Vue 框架,它使用虚拟dom将组件高度抽象化,使页面组件可以多端运行,比如node端,如此可以前后端同构,解决单页面应用的劣势,而保留其优势。 模块如何拆解然后又如何组装,逻辑清晰。 提供了很多全局组件和生命周期函数,以及其他方法,这些就是给程序员提供的接口,可以让我们在特定的场景让你更加关注功能需求的实现,而不是代码的实现细节,会自动帮你做好很多事情。 并且使用了很多高阶函数,化繁为简,最终返回一个干净的只有核心逻辑的函数。即大量使用了函数式编程。 学习的过程就是写一段简单的,特定场景代码,然后进行断点测试,看看源码中主要会走那些流程。然后大概就有了一条小主线。 好的框架理解起来应该是容易的,清晰的。而那些不假思索写出来的面向过程的代码,如果不一行一行去看的话,就不知道问题出在哪里,甚至以后回过来看,都不知道自己是怎么写出这种代码的,就像写正则表达式一样,写完之后,自己都看不懂了。

    作者回复: 感谢你的分享,丰富了更多的内容。

    2020-06-08
    5
  • 行与修
    好的设计要多从使用者角度考虑,是否有助于释放程序员精力,是否易用,是否有良好的可读性和可扩展性。自己先用,并在开始时就设定好边界,即使先只在一点上有所突破也比全面开花哪哪不灵要好。

    作者回复: 这个我完全同意!你说的单点突破实际上就是 MVP 的思路。

    2020-06-07
    5
  • 西西弗与卡夫卡
    怀念RoR,起初用过,后来因为性能,我们都替换成Java了

    作者回复: 曾经沧海

    2020-06-05
    5
  • qinsi
    最早接触BDD是cucumber,当时觉得简直是magic。整个RoR框架也到处给人magic的感觉。但是软件开发不应该有magic,否则容易失控。RoR式微部分原因可能也是Ruby过于灵活了,印象中RoR有些严重的安全漏洞就是由此引发。此外Ruby的执行效率也逐渐落后于时代了。近年来有Crystal语言借由llvm复兴Ruby,加入了很多现代语言的特性,希望能有好结果。

    作者回复: 这是两个方面,使用者和开发者。使用者的角度,那是简单的,开发者的角度,需要理解那些 Magic。 Ruby 有些问题其实动态语言的问题,在开发大型应用上,没有类型是一个很伤的地方。 执行效率其实与使用程度是相关的,只要有更多的人在用,就会有更多的人来优化,如果没有人用,优化的动力自然就不强了。

    2020-06-05
    5
  • jakimli
    问个问题,如果说rails落伍的原因是因为Javascript,为什么没有演变成 javascript + rails后端服务这样的组合呢?

    作者回复: 在加餐里讲了 JavaScript 的兴起,实际上,Node.js 并没有真正意义上成为后端开发的主力,却促进了前端的发展,让前后端分离了,结果,后端借此兴起的是 Java。 Rails 归根结底是有硬伤的,性能差。在没有了 MVC 的加持之后,Java 就重新回来了。

    2020-06-28
    3
    4
  • 阳仔
    理解软件中的接口设计,要抓住主线,可以从文档开始入手,了解软件设计者的风格品味,看看作者希望我们是如何使用这些接口的。 我没用过Ruby,但是通过分析之后,其实它的接口设计中,整合了许多极佳的工程实践,提高编码效率,解放生产力,这些思想在软件设计的时候是可以学习和参考的

    作者回复: 能够把开发效率提高,也是一大推动力。

    2020-06-05
    4
收起评论
显示
设置
留言
20
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部