2KB项目,专业的源码交易网站 帮助 收藏 每日签到

如何成为 Ruby 程序员/开发者

  • 时间:2019-01-23 18:49 编辑:2KB 来源:2KB.COM 阅读:376
  • 扫一扫,手机访问
  • 分享
摘要:
Ruby 英文原文:Becoming a Rubyist

我在六个月前加入了 Collective Idea 。在那时, 我有机会接触到一门新的编程语言。正如学习一门口语一样, 学习一门新的编程语言意味着学习一种新的思考方式。 下面是我关于如何成为一个Rubyist的一些思考。

编程即人性

我最初被Ruby吸引是因为社区强调清晰的,人类可读性强的代码. 在我开始寻找一门更简洁,更理性的语言之前,我只能在PHP中写无数的foreach嵌套循环。当我开始研究Ruby的时候,我就被Matz的哲学设计理念---以人为本来增加程序员的幸福感, 和最小立异原则(唯一找到的一种翻译)震惊了。 我同样渴望用一门OO语言来编程。(尽管PHP有对象, 但是我过去工作的PHP框架基本上是面向过程的)。即使到了现在,当我在写Ruby中每一个循环的时候,我都情不自禁的享受它们看起来多么漂亮。

在读Russ Olsen的优秀作品 Eloquent Ruby的时候, 我意识到编程在是一个逻辑上的经验的同时,也可以是美学上的经验。 Steve Klabnik已经谈论过这些话题, 把编程和文学还有哲学联系起来。当你和另一个Rubyist谈论的时候,比较典型的常见词汇是‘美丽的’和‘聪明的’。对我来说, 是慢慢理解把编程和人类的其他追求连接起来。 毕竟, 一个社区能出现 _why 这种人物必须在懂得工程的同时懂得艺术。

模式即(有教育意义的)意见

在我加入Collective Idea很快就学到的一件事就是一个编程问题很少只有一个正确答案。意味着你在办公室里经常听到不同的意见,从Ruby的约定到Rails的模式。简单的说听这些谈话使我成为一个更好的程序员。也让我想花时间来发展我自己的被人支持的意见。

不仅仅有一个答案(甚至允许你打开任何类!)带来的自由极其强大,但它也可能导致瘫痪。当需要做出有架构性影响的决策时,我不确定如何更好的前进。我担心做出会后悔的决定。我仍然没有足够经验来权衡每种方法的利弊。

开始几个月时,我遇到一次显著的技术债务。我所工作的应用程序,主要是作为几个不同服务间的黏合剂。在某些行为下,它调用至少3个不同的服务,协调并处理每个响应。我的控制器实现已经无法控制,一些业务逻辑混合进了模型部分。测试也开始出现问题,边缘情况就可以击溃整个程序,我知道这样做是错误的。

和同事谈论如何以最好的方式进步,得到的建议是试试他们最近写道的一种模式,称为交互模式,它把所有与外部服务的交互分割到单独的类中。这种方式很酷,和之前相比好了些,我通过测试得到了一致的效果。

测试工艺

在没有意识到测试的重要性时你不要浪费太多的时间在使用Ruby上。首先,我有个典型的反应,不知道如何编写更多的代码来使得我的产出更多。我做的越多,越意识到好的测试对于引导你写出好的代码有多大的作用。我的第一个测试,当然很不尽人意,但是它会变得越来越好的。看完Geoffrey Grosenbach的excellent series on RSpec(最近已经更新到RSpec 2),我开始充分的领会到隔离性和意识到为什么小方法是可怕的。

我也开始理解业界里流行词“软件工艺”的真实意思了。我在软件领域工作了足够长的时间,身临其境地知晓,软件项目是多么容易运作不佳和预算超支。构建软件不像构建几乎所有其它类型的产品。本质上构建软件是一种协作性的编制逻辑的过程。因为软件产品具有无可比拟的可塑性,所以它需要一套清晰而具体的指导原则。要成为一个‘软件匠人’,就要放下身段,要认识到一个人不可能完全掌握整个软件技术栈(software stack)。我们写测试代码是因为我们知道我们将来会犯错误,也是因为我们还要维护我们所构建的软件产品,还因为我们不知道将来谁还有可能会同我们的代码打交道。对于TDD(测试驱动的开发)的拥趸来说,这些也许都是老生常谈,但那也抹杀不了这些观点的强大作用。

简而言之,成为一位Ruby爱好者是我软件生涯中最有回报的旅程之一。它让我能够从美学的层次感受我正在做什么,还给我带来一种我未曾料到竟然能够从编程中获得的创造性方面的自由。它还给予了我很多工具,使用它们我可以构建出能让我引以为傲的软件产品。

本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接。 2KB翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。


2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品、在家创业、在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖、网站交易、广告买卖、站长培训、建站美工等服务

  • 全部评论(0)
资讯详情页最新发布上方横幅
最新发布的资讯信息
【计算机/互联网|】Nginx出现502错误(2020-01-20 21:02)
【计算机/互联网|】网站运营全智能软手V0.1版发布(2020-01-20 12:16)
【计算机/互联网|】淘宝这是怎么了?(2020-01-19 19:15)
【行业动态|】谷歌关闭小米智能摄像头,因为窃听器显示了陌生人家中的照片(2020-01-15 09:42)
【行业动态|】据报道谷歌新闻终止了数字杂志,退还主动订阅(2020-01-15 09:39)
【行业动态|】康佳将OLED电视带到美国与LG和索尼竞争(2020-01-15 09:38)
【行业动态|】2020年最佳AV接收机(2020-01-15 09:35)
【行业动态|】2020年最佳流媒体设备:Roku,Apple TV,Firebar,Chromecast等(2020-01-15 09:31)
【行业动态|】CES 2020预览:更多的流媒体服务和订阅即将到来(2020-01-08 21:41)
【行业动态|】从埃隆·马斯克到杰夫·贝佐斯,这30位人物定义了2010年代(2020-01-01 15:14)
联系我们

Q Q: 7090832

电话:400-0011-990

邮箱:7090832@qq.com

时间:9:00-23:00

联系客服
商家入住 服务咨询 投拆建议 联系客服
0577-67068160
手机版

扫一扫进手机版
返回顶部