问题标签 [anti-patterns]

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 投票
8 回答
124795 浏览

javascript - 如何阻止用户在 Javascript 中关闭窗口?

是否可以使用退出按钮阻止用户关闭窗口[X]?我实际上在页面中提供了一个关闭按钮,供用户关闭窗口。基本上我要做的是强制用户填写表格并提交。我不希望他们在提交之前关闭窗口。

我非常感谢您的评论,我不打算在任何商业网站上托管。这是内部的事情,我们实际上正在让所有员工参与我们设计的这项调查......

我知道这不是正确的方法,但我想知道我们在这里遇到的问题是否有解决方案......

0 投票
1 回答
505 浏览

service - 使用数据服务层的优缺点是什么?

这是一个似乎经常出现在 SOA 世界中的讨论。我早在 95 年就听说过它,但在那之前它可能已经成为了一个话题。我对此肯定有自己的看法,但我想听听一些关于拥有数据服务层的好的、可靠的论据,以及反对拥有数据服务层的论据。

它为系统架构增加了什么价值?内在的陷阱是什么?常见的反模式有哪些?

文章链接绝对是可以接受的。

为避免混淆,本文描述了我所说的数据服务层的类型。本质上,是数据库之上的一个薄层,它提供对数据的 SOAP 访问并且不包含业务逻辑。

0 投票
3 回答
771 浏览

design-patterns - 泛型模型是反模式吗?

现在我有一些我以前没有见过的东西:数据库真的是通用的。例如:我们有一个通用类型而不是具体类型:设备,它与自定义属性表相关。

不幸的是,其实体上的模型代表了这些表,因此模型根本不谈论业务。

最后编程是相当混乱的:没有人设计或定义应该在通用表中的自定义属性,所以很难知道在哪里放什么。而且您需要大量代码来检索一个属性。

您认为具有通用模型的通用数据库是某种反模式吗?有专业的吗?

0 投票
1 回答
272 浏览

ruby-on-rails - 管理随机配置变量的一般模式

作为一个总是试图将事情归结为常见模式的人,我很难找出在整个应用程序中管理所有这些随机属性的最佳和/或推荐方法。我正在寻找一些智慧。

我在说什么随机属性?这是一个小清单:

  • 网站图标
  • 随机但常见图标(如徽标和社交图标)的替代文本
  • 菜单标题和嵌套菜单标题
  • 版权信息
  • 表单和按钮标签
  • 表单域中的默认文本
  • 工具提示
  • 诸如“发表评论”或“给我们发送电子邮件”或“单击此处取消回复”之类的文本。
  • 精选文章
  • 作者姓名

我从事的第一个大项目是定制Spree 电子商务系统(我是 Rails 人),他们将很多(不是全部)配置内容保存在深度嵌套的 yaml 文件中,这些文件在他们的 html 模板中使用<h1>t('checkout_steps.payment')</h1>,例如. 然后还有一些像settingslogic和其他以类似方式工作的东西。我喜欢这些方法,但我仍然不清楚这是否是最好的方法......

(不止)想知道,SO 读者你怎么看:

  • 组织您的代码以有效管理超过 200 多个随机设置?
  • 你有什么样的系统?你使用什么样的模式?
  • 你让你的客户以某种方式定制这些吗?

寻找正确方向的推动力。从学习如何编程开始,您将了解代码分离和明确定义类,而不是将事物连接在一起以使它们变得一团糟。但是自定义/随机设置/配置似乎不遵循任何这些规则,并且它们完全被排除在图片之外。所以我只是想知道你是如何看待他们的。我不觉得浏览代码并在一组 HTML 模板中更改值是最好的选择....

简而言之:WTF是一种“设定”,我们如何正确使用它们?

期待您的见解。

0 投票
5 回答
1574 浏览

c# - 反设计模式书籍

我听说过很多关于反模式的知识,想读一本书,你会推荐哪本书来介绍反模式。

0 投票
3 回答
1131 浏览

design-patterns - Wrappers/demeter 法则似乎是一种反模式

我一直在阅读这个“得墨忒耳法则”的东西,它(以及一般的纯“包装”类)似乎通常是反模式。考虑一个实现类:

现在考虑另一个类的两种不同实现:

以及调用上述方法的方法:

乍一看,版本 2 似乎更简单一些,并且遵循“Demeter 规则”,隐藏 Foo 的实现等。但这将 FluidSimulator 中的任何更改与 ScreenSpaceEffects 联系在一起。例如,如果一个参数被添加到reset,那么我们有:

在这两个版本中,callingMethod 都需要更改,但在版本 2 中,ScreenSpaceEffects需要更改。有人可以解释拥有包装器/外观的优势(适配器或包装外部 API 或暴露内部 API 除外)。

编辑:我遇到的许多真实例子之一,而不是一个微不足道的例子。

0 投票
1 回答
185 浏览

design-patterns - 这是一个可接受的 UI 设计决策吗?

好的,虽然我在记录中指出,就可用性而言,StackExchange UI 几乎是我所见过的最好的网站和整体 GUI 之一,但三部曲的一个特定方面让我感到困扰。

例如,前往http://meta.stackoverflow.com

看看上面的横幅(上面写着“提醒——今天是愚人节,取决于你所在的时区!”)。

就个人而言,我认为这是一种“让用户完成计算工作”的反模式(不管它的官方名称是什么)——也就是说,不是让你的应用程序足够聪明,只在这种情况下呈现某种操作模式。模式是合适的,您只需完全打开模式并向用户解释为什么模式不应该打开(在这个特定的例子中,模式当然是显示从 00:00 开始的独角兽头像在第一个时区,尽管有些用户仍然住在 3 月 31 日)。

Great Recalc 也以同样的方式处理——而不是主动告诉用户“您的代表已从 X 更改为 Y”,在元数据上显示了相同的几乎不可见的横幅。

所以,问题是:

  • 有没有这样一个官方的反模式,如果有,我到底怎么称呼它?
  • 您还有其他此类设计反模式的知名示例吗?
  • 您将如何修复我制作的 SO 示例或您自己的示例?是否有修复模式或必须是个案解决方案?
0 投票
3 回答
1771 浏览

oop - 代码中的顺序耦合

顺序耦合在代码中真的是一件坏事吗?

尽管它是一种反模式,但我看到的唯一风险是以错误的顺序调用方法,但是具有这种反模式的 API/类库的文档应该注意这一点。顺序代码还有哪些其他问题?此外,这种模式可以很容易地通过使用外观来修复。

谢谢

0 投票
4 回答
323 浏览

c# - 重构一大堆 C# 属性/字段

如果您查看http://www.c-sharpcorner.com/UploadFile/dhananjaycoder/activedirectoryoperations11132009113015AM/activedirectoryoperations.aspx,在一个类中有大量的 AD 属性。

重构如此庞大的(相关)字段列表的好方法是什么?使单独的类就足够了,还是有更好的方法来使它更易于管理?

谢谢

0 投票
7 回答
1094 浏览

design-patterns - 领域贫血在面向服务的架构中是否合适?

我想澄清这一点。当我说领域性贫血时,我的意思是故意的领域性贫血,而不是偶然的。在一个我们的大部分业务逻辑都隐藏在一堆服务之后的世界里,一个完整的领域模型真的有必要吗?

这是我最近在从事一个“领域”模型实际上是持久性模型的项目后不得不问自己的问题。没有一个域对象包含任何方法,这是一个非常有意的决定。

最初,当我看到一个库中充满了本质上是类型安全的数据容器时,我感到不寒而栗,但在一些人认为这个特定系统只做基本的 CRUD 操作时,我感到震惊,所以在这种情况下,这可能是一个不错的选择. 我想我的问题是,到目前为止,我的经验一直非常关注丰富的域模型,所以它让我有点吃惊。

域逻辑的其余部分隐藏在一组助手、外观和工厂中,它们位于一个单独的程序集中。

我很想听听人们对此的看法。显然,重用这些类的考虑要简单得多,但真的有那么大的好处吗?