anti-patterns相关内容

一个算法反模式的命名

我记不起做一件具有二次复杂性的事情的名称,而它可以线性地解决。 例如,使用get-by-index函数迭代链表,而不是只使用next-element就是这种反模式的典型情况。 我想应该是“某物画家”,比喻一个人正在粉刷道路,但没有随身携带油漆桶,每次需要重新刷子时都要回到起点。 干杯。 推荐答案 您可能正在考虑Schlemiel the Painter's Algor ..
发布时间:2022-04-15 18:38:26 其他开发

正在使用&OUT;OUT&QOOT;坏做法

我刚刚将out布尔参数添加到我编写的方法中,以便在我的UI中收到警告。我使用了Out,而不是让方法本身返回FALSE/TRUE,因为这意味着DoSomething失败/成功。我的想法是,warnUser将指示警告的实际内容,而不必查看方法的实现。 原始代码 public void DoSomething(int id, string input); 新代码 public vo ..
发布时间:2022-03-30 22:11:42 C#/.NET

为什么在 Java 中双重检查锁定被破坏?

这个问题与旧 Java 版本的行为和双重检查锁定算法的旧实现有关 较新的实现使用volatile 并依赖于稍微改变的 volatile 语义,因此它们没有损坏. 声明字段分配始终是原子的,除了 long 或 double 字段. 但是,当我读到为什么双重检查锁定被破坏的解释时,据说问题在于赋值操作: //损坏的多线程版本//“双重检查锁定"成语类Foo {私人助手 helper ..
发布时间:2022-01-22 19:55:39 Java开发

需要重构箭头反模式的想法

我继承了一个怪物. 它伪装成 .NET 1.1 应用程序处理符合医疗保健索赔支付 (ANSI 835) 标准的文本文件,但它是一个怪物.正在处理的信息与医疗保健索赔、EOB 和报销有关.这些文件由在前几个位置具有标识符的记录和根据该类型记录的规范格式化的数据字段组成.一些记录 ID 是控制段 ID,用于分隔与特定交易类型相关的记录组. 为了处理一个文件,我的小怪物读取第一条记录,确定即 ..
发布时间:2022-01-07 13:40:21 其他开发

依赖注入 - 与数据传输对象 (DTO) 一起使用?

考虑下面的代码(已简化).我有一个服务类,它返回一个特定 DTO 对象的列表,每个对象都实现了自己的特定接口.在实际代码中,当我使用遗留代码时,这些是通过遍历数据集来填充的. 问题: 我们如何在不更新 DTO 或使用服务定位器反模式的情况下创建/使用 DTO?在 Composition Root 中组合一个空的 DTO 对象并通过构造函数将其注入 Service 类并没有多大意义,因为 ..

要避免的设计模式

很多人似乎都同意,单例模式有很多缺点,有些人甚至建议完全避免这种模式.这里有很好的讨论.请将有关单例模式的任何评论指向该问题. 我的问题:是否还有其他设计模式应该避免或谨慎使用? 解决方案 模式很复杂 应谨慎使用所有设计模式.在我看来你应该在有正当理由的情况下重构模式而不是立即实施模式.使用模式的普遍问题是它们增加了复杂性.过度使用模式会使给定的应用程序或系统难以进一步开发和维 ..
发布时间:2021-12-22 08:57:01 其他开发

Python:正在使用“...%(var)s.."% locals() 一个好的做法?

我发现了这种模式(或反模式),我对它非常满意. 我觉得它很敏捷: def 示例():年龄 = ...姓名 = ...打印“你好 %(name)s 你是 %(age)s 岁" % locals() 有时我使用它的表亲: def example2(obj):打印“%(path)s 处的文件有 %(length)s 个字节" % obj.__dict__ 我不需要创建人工元组和计数参数并将 ..
发布时间:2021-12-22 08:43:21 Python

ServiceLocator 是一种反模式吗?

最近我阅读了Mark Seemann 的关于服务的文章定位器反模式. 作者指出了 ServiceLocator 是反模式的两个主要原因: API 使用问题(我完全没问题) 当类使用服务定位器时,很难看到它的依赖关系,因为在大多数情况下,类只有一个无参数构造函数.与 ServiceLocator 相比,DI 方法通过构造函数的参数显式公开依赖项,因此在 IntelliSense 中很容 ..

为什么单例被认为是反模式?

可能的重复: 单身人士有什么不好? 单例设计模式:陷阱 单例反模式 我最近听说单例模式是一种反模式.我知道这与创建类单例就像使唯一实例成为全局变量一样,但它的作用远不止于此(限制该对象的实例数量、管理实例化等). 为什么单例模式被认为是反模式?还有哪些替代方案? 解决方案 为了帮助回答,这里有更多关于反模式的评论: 它被过度使用,在某些情况下引入了不必要的限 ..
发布时间:2021-12-22 08:34:23 其他开发

为什么是“记录并抛出"?被认为是反模式?

这个问题是由围绕 这篇文章,我没有收到任何好的答案. 如果您不能以其他方式处理它,为什么要记录您的异常然后重新抛出它(当然保留原始堆栈跟踪)是一个坏主意? 解决方案 我认为答案主要是因为如果你不能处理它,你为什么要抓住它?如果他们觉得它值得记录,为什么不让任何可以处理它的人(或者除了处理它别无选择的人)记录它? 如果您捕获并记录并重新抛出它,那么上游代码就无法知道您已经记录了异 ..
发布时间:2021-12-19 10:40:29 其他开发

Java 中带参数的单例

我正在阅读维基百科上的 Singleton 文章,发现了这个例子: 公共类单例{//私有构造函数防止其他类的实例化私人单例(){}/*** SingletonHolder 在第一次执行 Singleton.getInstance() 时加载* 或第一次访问 SingletonHolder.INSTANCE,而不是之前.*/私有静态类 SingletonHolder {private static ..
发布时间:2021-11-25 19:39:42 Java开发

关于为什么“贫血领域模型"被认为是反模式的具体例子

如果这是重复的,我深表歉意,但我在相关问题中找不到关于该主题的任何具体示例. 在阅读了 Martin Fowler 关于“贫血域模型"的文章后,我不知道为什么会这样被认为是一种反模式.甚至大多数企业开发人员是否认为它是一种反模式,因为 AFAIK 可能 90% 的 j2ee 应用程序都是以“贫血"的方式设计的? 有人可以推荐关于该主题的进一步阅读吗(除了“领域驱动设计"一书),或者更好 ..

项目中有太多的单身人士 - 这是一种不好的做法吗?

几乎在每个项目中,我都会创建一些实现单例模式的类.例如,数据管理器——如果有一些文件系统、数据加载器的工作——如果应用程序连接到互联网、不同的资源管理器等.有时有多达 5-7 个这样的类,我开始觉得我在做有事吗.过多地使用单例模式是不是不好的做法? 解决方案 Singleton 不是必然问题——拥有一个是其领域专家的单个对象可能非常有用——但明确编码对象中的单例性几乎总是一个坏主意(并且经 ..

“伪类型定义反模式"有什么理由吗?

我有一个相对复杂的泛型类型(比如 Map>),我在类内部使用它.(没有外部可见性;它只是一个实现细节.)我想将其隐藏在 typedef 中,但 Java 没有这样的功能. 昨天我重新发现了以下习语,并且很失望地得知它是 被认为是一种反模式. 我的课堂{/* “伪类型定义" */私有静态类 FooBarMap 扩展了 HashMap>{ };FooBarMap[] 地图;公共 FooBarM ..
发布时间:2021-09-11 19:47:23 Java开发

什么是意大利面条代码?

您能否发布一个简短的真实的、过度的意大利面条式代码示例,可能会说明它的作用?你能告诉我一个调试器的噩梦吗? 我不是说 IOCCC 代码,那是科幻小说.我的意思是发生在你身上的真实例子...... 更新 重点已从“发布一些意大利面条代码"变为“什么是正是意大利面条代码?".从历史的角度来看,目前的选择似乎是: 大量使用计算得到的 goto 的旧 Fortran 代码 使用 ..
发布时间:2021-09-05 20:40:05 其他开发