问题标签 [dry]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
3740 浏览

ruby-on-rails - 条件视图/布局

假设有一个产品控制器,您想要一个索引(列出产品)操作。简单的。现在假设您有一个管理员并在您的项目中存储部件。两者都需要列出产品,但方式略有不同(例如,商店不应该有这个编辑产品链接)。他们还使用不同的布局。

到目前为止,我的想法是在不同的命名空间下拥有两个产品控制器 -app/controllers/admin/products_controller.rb并且app/controllers/store/products_controller.rb- 每个都有自己的视图和布局。但我怀疑这可能会导致 WET 代码。或者对其他控制器视图的引用(imo 破坏了模块化,因此应该避免)。

那么,实际的问题是:是否有更干燥(或实际上正确)的方式来实现上述目标?

我不确定标题是否真的反映了这个问题。但是,另一方面,如果是的话,我可能可以用谷歌搜索答案。

编辑 从 3.1 开始,Rails 支持模板继承。

0 投票
3 回答
894 浏览

ruby-on-rails - DRY Rails 主模板?

有没有一种简单的方法可以为我的整个 Rails 应用程序定义主模板?如果不是,那么重用模板的最佳方法是什么,这样我就不会将相同的模板复制并粘贴到一堆布局文件中?

0 投票
6 回答
1801 浏览

html - CSS 与 DRY

您正在创建一个 HTML 布局。让我们假设您不需要多个样式表的好处,HTML 大小的小幅增加不是问题,并且您有一个只会使用一次的样式。我经常支持在这里使用内联样式,因为我认为重复您的 CSS 类名称或 ID 是您当前不需要并且可能永远不会使用的抽象的成本。

这些天的标准原则是始终使用语义标记和 CSS 样式创建 HTML 布局,所以我在这里遗漏了什么吗?请让我知道你的想法。

0 投票
1 回答
282 浏览

ruby-on-rails - 使用已处理数据填充轨道的最佳实践

我已经在一个处理一些数据的程序上工作了几个月,现在它不是通过命令行显示信息(使用 ActiveRecord 存储),而是通过 Rails 显示处理后的信息应用程序。

我面临的第一个问题是我应该在同一个应用程序中还是在不同的应用程序中进行数据处理和数据显示。我很想拥有单独的应用程序,因为 rails 应用程序中的代码越少,出现安全问题的可能性就越小(出于优化原因,一些数据处理代码有点丑陋和不安全)。

第二个问题是如何处理数据库模式,如果我将其拆分为一个 Rails 显示应用程序和一个离线数据处理器。仅仅为 Rails 应用程序提供一个完全填充的数据库就足够了吗,还是我也应该为 rails 应用程序提供迁移和/或 schema.rb?

编辑:数据处理应用程序是 Wikipedia 的 Get to Philosophy 现象的解析器。对于英文版,它需要一个 20GiB 的 XML 文件,并查看大约 600 万个页面如何相互链接。

0 投票
3 回答
865 浏览

functional-programming - 在 Haskell 函数定义中应用 DRY 的指南

我有一个问题,关于应用 DRY 原则的特定方式是否被认为是 Haskell 中的良好实践。我将举一个例子,然后询问我所采用的方法是否被认为是良好的 Haskell 风格。简而言之,问题是这样的:当你有一个很长的公式,然后你发现自己需要在其他地方重复该公式的一些小子集时,你是否总是将重复的公式子集放入一个变量中,这样你就可以保持 DRY ? 为什么或者为什么不?

示例: 假设我们正在获取一串数字,并将该字符串转换为其对应的 Int 值。(顺便说一句,这是来自“Real World Haskell”的练习)。

这是一个有效的解决方案,只是它忽略了边缘情况:

它使用 foldr,累加器是下一个位置值和到目前为止的总和的元组。

到现在为止还挺好。现在,当我去实现边缘情况检查时,我发现我需要在不同的地方使用一小部分“newValue”公式来检查错误。例如,在我的机器上,如果输入大于 (2^31 - 1),则会出现 Int 溢出,因此我可以处理的最大值为 2,147,483,647。因此,我进行了 2 次检查:

  1. 如果位值 9(十亿位)且数字值 > 2,则存在错误。
  2. 如果 sum + (10 ^ place) * (digitToInt char) > maxInt,则有错误。

这 2 项检查使我重复了部分公式,因此我引入了以下新变量:

  • digitValue = digitToInt 字符
  • newPlaceComponent = (10^place) * digitValue

我引入这些变量的原因仅仅是 DRY 原则的自动应用:我发现自己重复了公式的那些部分,所以我定义了它们一次且仅一次。

但是,我想知道这是否被认为是好的 Haskell 风格。有明显的优点,但我也看到了缺点。它确实使代码更长,而我见过的大部分 Haskell 代码都非常简洁。

那么,您是否考虑过这种良好的 Haskell 风格,您是否遵循这种做法?为什么/为什么不?

对于它的价值,这是我处理许多边缘情况的最终解决方案,因此具有相当大的 where 块。由于我应用了 DRY 原则,您可以看到块有多大。

谢谢。

0 投票
3 回答
17178 浏览

asp.net-mvc - 是否可以在 MVC 和 webforms 之间共享母版页?

我正在将 MVC 添加到具有许多旧版 Web 表单页面的项目中。这工作正常。但是,我目前有一个单独的 MVC 和 web 表单的母版页。两个母版页产生基本相同的输出。我真的很想杀死网络表单,只使用 MVC 母版页和我的所有页面并保持干燥。

当我忘记改变两者时,不干燥已经咬了我几次。

我尝试采用明显的方式,并将 Web 表单内容页面的 MasterPage 属性指向 MVC 母版页。这会引发一个错误,指出 MVC 主控仅适用于 MVC 视图。

这似乎是混合 MVC 和 webform 项目的一个非常常见的问题。我的 MVC 大师没有对 ViewData 做任何事情,所以我看不出 webforms 不能使用它们的任何原因。

0 投票
6 回答
240 浏览

programming-languages - 编写易于修改的代码

有哪些方法可以编写易于修改的代码?

我从经验中学到的一点是,我几乎总是需要写一个扔掉。这样,在编写实际应用程序之前,我就对所需的领域知识和程序结构有了一定的了解。

0 投票
5 回答
1698 浏览

python - 尝试...除了...除了...:如何避免重复代码

  • 我想避免errorCount += 1在多个地方写作。
  • 我正在寻找比
  • 我试图避免store.rollback()在每个 except 子句中。

关于如何做到这一点的任何想法?

0 投票
1 回答
102 浏览

ruby-on-rails - 迁移格式 Add x to y 中是否存在(必要的)冗余?

要将电话列添加到门票表中,我可以编写:

这里似乎有冗余。但是有必要吗?

我们不是在重复自己被要求在迁移名称(AddPhoneToTickets)和列定义(phone:string)中都指定“电话”吗?

0 投票
4 回答
700 浏览

c# - 干这个方法

我需要帮助使这种方法通用。重复大约十次以获得不同 Web 列表控件的列表(将“MyType”替换为特定控件中使用的类型)。

如果这还不够信息,请告诉我。我认为这需要我刚刚熟悉的更高级的语言功能。也许我应该让他们都使用同一个存储库?

谢谢你的帮助。

编辑:感谢您的帮助。我没有任何同行支持,所以这个董事会很棒,我从你们每个人身上都学到了一些东西。我希望我能接受所有的答案。