Tag: 编码风格

Rails内联Javascript和最佳实践

我对使用Rails 有点新意,我正在开发的应用程序进展顺利 – 不过我正在查看生成的HTML并注意到…… // 洒在HTML周围,当然与我使用的地方相匹配: 我想知道的是……有更好的方法来做到这一点,还是让它更干净? 其中一些脚本标签来自部分标签,因此将它们放在“页面底部”并不能真正帮助解决这种情况。 另一种选择可能是将所有这些“标记块”推入一个数组,然后将它们写在application.rhtml文件中,但它仍然有点凌乱……

用于显示长数组的Ruby样式

我正在使用rubocop来检查我的代码的样式约定是否符合最佳实践。 我有一系列颜色,想知道显示它们的最佳方式。 我读过这些行应该少于80个字符,所以我这样做了。 colors = [:light_red, :red, :pink, :orange, :light_yellow, :yellow, :light_green, :green, :light_blue, :blue, :white, :black] 我从rubocop收到以下exception消息 C: Align the elements of an array literal if they span more than one line 这是否意味着,我应该做这样的事情 colors = [:light_red, :red, :pink, :orange, :light_yellow, :yellow, :light_green, :green, :light_blue :blue, :white, :black] 这占用了大量的空间,我认为我的方式更有效率。 关于在ruby中显示多行数组的样式规则是什么?

多次迭代

是否有一种更简单,更清晰的方式来编写这样的代码: (1..10).each do |i| (1..10).each do |j| (1..10).each do |k| (1..10).each do |l| puts “#{i} #{j} #{k} #{l}” end end end end 理想情况下,我可以做… (1..10).magic(4) { |i, j, k, l| puts “#{i} #{j} #{k} #{l}” } 甚至更好…… magic(10, 4) { |i, j, k, l| puts “#{i} #{j} #{k} #{l}” } 如果没有内置的东西,我怎么写一个像最后一个方法?

使用空格而不是Tabs进行缩进的性能影响

我目前使用软选项卡(即空格)来缩进我的Ruby代码,如果我使用硬选项卡会在解释代码时提高性能吗? 我认为读取一个制表符比解析4个空格字符更快(但可以忽略不计)。

用于访问数组中第一个/最后一个元素的Ruby约定

这是一个关于惯例的问题。 以下两组命令返回相同的结果。 a = [1, 2, 3] a.first # => 1 a[0] # => 1 a.last # => 3 a[-1] # => 3 在Ruby,显式索引或函数中哪些是首选的? 当然,假设这是在代码中始终访问第一个或最后一个元素。 注意:我一直在考虑每个周期都会采取的周期。 因为first和last接受参数,它们会有更多的开销,但我不知道这是否会影响社区的偏好。 谢谢! 编辑 如果你看过这篇文章的评论,我的最后一段就有一个很大的争论。 虽然我没记住[x]相当于.[](x) ,但我的结论是正确的,即第一个和最后一个有更多的开销。 考虑到两者的性质,我认为这是由于first / last的参数检查。 这些需要检查是否存在参数,而[]可以假设它们存在。 码 require ‘benchmark’ a = [1..1000] MAX = 1000000 Benchmark.bm(15) do |b| b.report(“small first”) { MAX.times do; a.first; end […]

在rails模型中编写大型SQL的更好方法是什么?

在使用Rails为糖代码提供的很多Arel之后,我在处理大型复杂的SQL查询时遇到了问题,而我无法用Arel方法做得很好。 我喜欢Arel的小东西,但是当它变得混乱时,我更喜欢分开代码。 那么,有什么建议我应该如何处理模型中的大型SQL ? 就像,我什么时候应该为此创建SQL视图 (因为我看到Rails不能很好地提供,我必须为此创建一个迁移)或在某个文件夹“sqls”中创建任何单独的类,然后从那里调用。 我知道有些人使用<< – SQL表达式 这是我目前的例子: Question.from(self.questions .select(“questions.id”) .select(“(NOT (questions.last_active_user_id = #{user.id} OR (COALESCE(ss.updated_at > questions.last_active_at, false) OR COALESCE(ds.updated_at > questions.last_active_at, false))))::integer as active”) .select(“(((NOT((COALESCE(ss.updated_at > questions.created_at, false) OR COALESCE(ds.updated_at > questions.created_at, false))) AND pages.owner_id = questions.user_id) OR (NOT (COALESCE(ss.updated_at > questions.owner_found_important_at, false) OR COALESCE(ds.updated_at > questions.owner_found_important_at, false)) AND owner_found_important_at is […]

接下来与if。在一个.each循环中?

我有一个文本处理的东西,我在Ruby中做。 基本上,我必须实现一个简单的状态机(一个字符后视)。 我的代码目前看起来像这样: text.each{ |c| … … … … if @state!=:some_state next end #processing stuff for if in :some_state mode … … … … … } 这是对的吗? 或者它应该像下面这样实现: text.each{ |c| … … … … if @state==:some_state #processing stuff for if in :some_state mode … … … … … end } 有正确的方式还是只是偏好? 哪一个与做事的“ruby方式”更加融合?

为什么要在Ruby中避免使用then关键字?

在几个Ruby样式指南中提到你应该“永远不要使用”。 就个人而言,我认为“then”关键字允许您使代码更密集,这往往更难阅读。 这项建议还有其他理由吗?

Ruby内存管理

我已经使用Ruby一段时间了,我发现,对于更大的项目,它可能占用相当多的内存。 有哪些减少Ruby内存使用的最佳实践? 请让每个答案都有一个“最佳实践”,并让社区投票。

Ruby / Rails的编码样式检查器或代码格式化程序

当我使用C#或Perl时,有一些有用的工具,如StyleCop,FxCop,Perl :: Critic和Perltidy。 他们可以自动检查或格式化我的代码。 那么,Ruby或Rails有没有相同的工具? 我在Google上找到了一些工具,但我觉得它们不经常维护。