Ruby风格的代码:胜任,精美,高效。 初学者示例

图片

这是迈克尔·麦基(Michael McKee) 帖子的翻译。 迈克尔是一位专业的程序员,他会不时与新手程序员和专业人士的同事分享他的经验和技能。

大多数程序员是最后一个考虑所创建代码美观性的人。 当然,几乎每个人都遵守一般规则。 但是,如果我们走得更远呢? 好的代码首先应该起作用。 但是我相信他应该有自己的风格,这不仅适用于内容,而且适用于形式。

Skillbox建议:实用的年度课程“ PHP开发人员从无到有
我们提醒您: 对于所有“ Habr”读者来说,使用“ Habr”促销代码注册任何Skillbox课程时均可享受10,000卢布的折扣。

实际上并非如此。 这是所有新手自学的程序员都面临的一些问题。 关于此的大量文章和注释,但是我想告诉您如何直观地设计代码,以使它不仅正确,而且从外部看起来也不错。 我相信自我表达不仅在视觉艺术中是可能的,而且可以随时随地进行。

作品的组织形式及其视觉形式对我来说非常重要。 Ruby是一种编程语言的绝佳选择,就好像它是为满足我的要求而专门设计的一样,因为它使我们能够毫无问题地完成我们想要的事情。 它是灵活,时尚和合乎逻辑的。

让我们来看这个例子。



即使是新手程序员也可以理解这里出了什么问题。 看这段代码很痛苦。 但是更正后的版本看起来已经更好了。



! 好多了。 现在,我们了解什么属于以及如何属于。 但是此代码可以改进。 可以使attr_reader和attr_accessor的声明更具表现力。



用新行声明每个新属性更容易阅读。 现在,我们有了分配给每个访问者的属性列表。 您可以走得更远。



在这里,已经很容易理解哪里只有阅读的可能,哪里有阅读和写作的可能。

现在让我们看一下该类的下一部分-初始化方法。 您可以在这里做很多事情。



原则上,我们阅读了代码,一切似乎都很好。 但是你可以做得更好。



如果将所有赋值运算符放在一栏中,结果会很好。 查看此代码,很容易说出什么,如何以及为什么会起作用。

让我们看一下整个InvoiceItem的外观。



现在,我们的课程一目了然,易于阅读和理解。 分配易于选择,属性访问器易于使用。

我们的代码还有哪些其他优化选项? 在大多数情况下,在学习编程的一开始,编写测试会因缺乏知识而引起问题。 创建虚假数据浪费了时间。 这并不可怕,但是在许多情况下,这会导致创建大量难以阅读的文本。 让我们看看这个。



哦,该死。 在这里,一开始就创建了一个新的存储库来存储事务类。 它们共有三个,每个都用于测试,并放入哈希表中以备后用。 此外,我们将要创建的类需要很多属性。 他们每个人都有一个相当长的名字和含义。 有哪些可以改进的代码看起来不错?

一切都很简单。



我们在每个新的值声明中使用换行符来打破这些哈希值。 另外,使用了与InvoiceTeam优化中相同的方法。 现在,在编辑器中,您可以轻松地在相当狭窄的视野中查看所有测试数据。 我们可以看到键的值。 如有必要,可以更改它们而无需前后滚动。

当我们处理大量属性时,可以使用类似的策略。



在这种情况下,至少在当前查看区域中,我们看不到代码的整个结构。 为了查看属性,您需要不断滚动,这不太方便。 在哈希示例中,让我们以与上面相同的方式进行修复。



我们阅读了新代码-如果我可以这么说的话,则更加人性化。 我们清楚地看到了所有属性和分配。 可能的调试变得越来越容易。 可能出了一些问题,如果您不带代码“漂亮”的外观,那么弄清楚什么以及为什么不起作用将是困难的。

当我们编写程序时,我们不要忘记:重要的是,不仅程序可以正常工作,而且必要时同事必须清楚其工作原理。 该代码应具有逻辑性,分为段落,句子和结构部分。

好了,最后-我最喜欢的Ruby示例。 让我们看看。



让我们从动物中提取每个元素,然后应用大写方法。 看起来不错,但更好的是,可以将代码缩短一点,使人类更易读。



在许多情况下,也可以使用类似的方法,我建议尽可能使用它。

通常,这篇文章可以被认为是琐碎的,但是它为初学者提供了理解代码美的机会。 也就是说,代码本身不仅应该起作用,而且应该可以理解-即使该程序只是为您自己编写的。 如果您养成创建漂亮的工作代码的习惯,那么它可以帮助您的专业发展。

Skillbox建议:

Source: https://habr.com/ru/post/zh-CN424337/


All Articles