草庐IT

反模式

全部标签

java - 为什么在 Java 代码中实现单例模式(有时)被认为是 Java 世界中的反模式?

我在SO中看到有人评论说单例模式是一种反模式。我想知道为什么? 最佳答案 测试一个原因是单例不容易处理单元测试。您无法控制实例化,并且就其本质而言,它们可能会在调用之间保留状态。因此,dependencyinjection的原则很受欢迎。每个类都被注入(inject)(配置)了它们需要运行的类(而不是通过单例访问器派生),因此测试可以控制要使用哪些依赖类实例(并在需要时提供模拟)。诸如Spring之类的框架会控制其对象的生命周期并经常创建单例,但这些对象是由框架注入(inject)到它们的依赖对象中的。因此,代码库本身不会将对象视为

java - 为什么在 Java 代码中实现单例模式(有时)被认为是 Java 世界中的反模式?

我在SO中看到有人评论说单例模式是一种反模式。我想知道为什么? 最佳答案 测试一个原因是单例不容易处理单元测试。您无法控制实例化,并且就其本质而言,它们可能会在调用之间保留状态。因此,dependencyinjection的原则很受欢迎。每个类都被注入(inject)(配置)了它们需要运行的类(而不是通过单例访问器派生),因此测试可以控制要使用哪些依赖类实例(并在需要时提供模拟)。诸如Spring之类的框架会控制其对象的生命周期并经常创建单例,但这些对象是由框架注入(inject)到它们的依赖对象中的。因此,代码库本身不会将对象视为

java - secret 握手反模式

我刚刚遇到一个我以前见过的模式,想就它征求意见。有问题的代码涉及这样的接口(interface):publicinterfaceMyCrazyAnalyzer{publicvoidsetOptions(AnalyzerOptionsoptions);publicvoidsetText(Stringtext);publicvoidinitialize();publicintgetOccurances(Stringquery);}预期的用法是这样的:MyCrazyAnalyzercrazy=AnalyzerFactory.getAnalyzer();crazy.setOptions(tru

architecture - HBase 反模式

哪些任务不应该使用HBase?我的理解是,HBase和HDFS应该被视为transient数据存储,仅在map/reduce作业需要它们的时间内保存数据。用HBase作为规范数据存储不合适吗?无论如何,它的随机访问延迟峰值使得这非常不切实际,但这可以通过缓存和其他badn-aids来缓解。 最佳答案 HBase应该用作规范的数据存储(如BigTable,它在许多Google服务中被大量使用)。HDFS是为MapReduce设计的,但HBase是建立在HDFS之上的,它允许的不仅仅是MapReduce。HBase实际上是一个数据库。您

php - 允许 PHP 函数变量是字符串或数组是模式还是反模式?

来自C#我习惯于使用可变类型的参数重载我的方法。由于您不能在PHP中执行此操作,因此我经常创建接受变量的方法,例如下面的示例,然后我检查类型并采取相应的行动:showLength('one');showLength(array('one','two','three'));functionshowLength($stringOrArray){$arr=array();if(is_array($stringOrArray)){$arr=$stringOrArray;}elseif(is_string($stringOrArray)){$arr[]=$stringOrArray;}else{

php - @$array ['possibly_missing_key' ] 是反模式吗?

从PHP数组中提取可能缺失的值时可以使用@吗?示例:$value=@$array['possibly_missing_key'];预期行为:if(isset($array['possibly_missing_key'])){$value=$array['possibly_missing_key'];}else{$value=null;}在传播使用模式之前,我想知道。 最佳答案 @运算符会抑制错误消息,使用它可能会针对最终难以追踪的其他错误和意外行为设置您的代码。因此,它肯定是一种反模式。因此,我更喜欢第二位。它使它更清晰它可能不存在

php - 我的工厂是反模式吗?

我在另一个问题上看到了这段代码-第二个答案link第一条评论是它是静态工厂反模式并且违反了SRP:classUser{publicstaticfunctioncreate($userid){//getuserfromthedatabase//set$isPartnertotrueorfalse//set$isClienttotrueorfalse//set$isModeratortotrueorfalseif($isPartner){returnnewPartner($userid);}elseif($isClient){returnnewClient($userid);}elseif

java - -1 是一个神奇的数字吗?反模式?代码味道?权威机构的引述和指南

这个问题在这里已经有了答案:关闭12年前。PossibleDuplicate:Constantabuse?我见过-1在各种API中使用,最常见的是搜索具有从零开始的索引的“集合”时,通常表示“未找到”索引。这“有效”是因为-1从来都不是合法的索引。似乎任何负数都应该有效,但我认为-1几乎总是被使用,作为某种(不成文的?)约定。至少现在我想将范围限制在Java上。我的问题是:对于像这样使用-1作为“特殊”返回值,Sun的官方说法是什么?关于这个问题有哪些引述,例如JamesGosling、JoshBloch,甚至是Java以外的其他权威人物?过去关于这个问题有哪些值得注意的讨论?

java - 我处于反模式中,我想离开

我正在开发一个javawebapp,使用jsp/jquery/ejb/jboss。我有一个网络表单,允许用户从数据库中选择100个字段(全部来自不同的不相关表/对象)的任意组合。这些字段然后通过javaservlet输出到excel电子表格。执行始终返回所有100个字段的存储过程。Web表单在传输对象(TO)中设置100个boolean值,以确定是否应显示数据。然后引用此TO以生成电子表格的标题行以及迭代遍历的数据库中的每一行。一切正常,但感觉不对。我想不出一个可行的方法,它不引用100个boolean值(N+1次)来确定一个字段是否应该包含在输出的电子表格中。当我说可行时,我的意思是

python - 脚本目录是 Python 中的反模式吗?如果是这样,什么是正确的导入方式?

我总是在我构建的每个项目中创建脚本目录,因为它们对于放置不常用的可执行脚本很有用。在Python中,我总是将__init__.py放在我的脚本目录中,这样我就可以将脚本作为包运行(即python-mscripts.some_scripts)并从中加载模块姐妹目录。基于this以及谷歌搜索,我开始觉得这是一种反模式。也就是说,给定如下结构:project_dir/some_modules_dir/foo.pybar.py...scripts/some_script.pyother_script.py...运行脚本的正确方法是什么?从姊妹目录some_modules_dir导入脚本的正确方