小编WW.*_*WW.的帖子

当一个类只调用另一个有多种方法的类上的一个方法时,如何减少耦合?

我有一个类(让我们称它MyService)在它的构造函数中接受两个依赖项.第一个与问题无关.第二个是PaymentDetails.PaymentDetails的寿命比MyService长,后者由工厂创建以处理此特定请求.

MyService.process(),它:

  • 做一些第一依赖的东西,
  • 构造一个new TransactionDetails()对象并在其上设置各种东西,
  • 电话 myPaymentDetails.setTransactionDetails( td );
  • 返回一些内容,说明接下来的向导中的哪个页面

PaymentDetails必要时有很多方法.它是一个实体样式对象,当用户逐步浏览大约5页时,信息就会建立在该对象中.

困扰我的是,写作我的服务类取决于整个PaymentDetails但只调用一个方法.

这困扰我,因为:

  • 它将限制重用服务类的能力
  • 通过阅读方法签名无法理解真正的依赖关系

我的问题是:

解决此问题的最佳方法是什么,以便我的服务类具有最小的依赖性?

java dependency-injection coupling

6
推荐指数
1
解决办法
4210
查看次数

这种反模式的名称是什么?

当然有些人已经处理过这一个.当程序员被OO过度使用并忘记性能和拥有数据库时,往往会发生这种情况.

举个例子,假设我们有一个电子邮件表,他们需要通过这个程序发送.在启动时,它会查找需要发送的任何内容,如下所示:

Emails = find_every_damn_email_in_the_database();
FOR Email in Emails
  IF !Email.IsSent() THEN Email.Send()
Run Code Online (Sandbox Code Playgroud)

从一个不重复自己的角度来看这是一件好事,但有时这是不可避免的,它应该是:

Emails = find_unsent_emails();
FOR Email in Emails
  Email.Send()
Run Code Online (Sandbox Code Playgroud)

这个名字有吗?

performance terminology anti-patterns

5
推荐指数
2
解决办法
790
查看次数

在svn_wc_add_repos_file4()中使用ACCESS_VIOLATION进行Subversion结帐失败

我们在尝试签出或更新工作副本时可重复地遇到错误.

环境

我们的环境如下: -

  • svn 1.8.9(r1591380)客户端和服务器在同一台服务器上运行(也发生在另一台服务器上的客户端,但不常见)
  • 服务器运行Windows Server 2008(64位)
  • Apache httpd服务器

我们正在运行svn checkoutQuickBuild.

客户端错误

结帐报告此错误: -

svn checkout http://qvsvn101/PayWay/PayWay/Branches/2014.R1/ D:\quickbuild_workspace\PayWay\Application\PointRelease\Release --non-interactive --username SrvAcc --password ****** -r 11523 
Command return code: -1073741819 
Command error output: This application has halted due to an unexpected error. 
A crash report and minidump file were saved to disk, you can find them here: 
C:\Users\SrvAcc\AppData\Local\Temp\svn-crash-log20140527164109.log 
C:\Users\SrvAcc\AppData\Local\Temp\svn-crash-log20140527164109.dmp 
Please send the log file to users_at_subversion.apache.org to help us analyze 
and solve this problem. 
NOTE: The crash …
Run Code Online (Sandbox Code Playgroud)

svn apache crash

5
推荐指数
0
解决办法
4752
查看次数

在 Eclipse 中:无法找到或加载主类 org.testng.remote.RemoteTestNG

配置

我有 Eclipse 的 2019-12 (4.14.0) 版本(最近从 2019-03 升级),并安装了以下插件(其中包括):

TestNG 6.14.3.201902250526
TestNG M2E (Maven) Integration (Optional) 6.14.3.201902250526
TestNG P2 Features 6.14.3.r201802240500
Run Code Online (Sandbox Code Playgroud)

Eclipse 正在针对jdk1.8.0_152.

在 Eclipse 中,我的 Java 构建路径包括testng-6.14.3. 我试图将 Eclipse 插件版本与项目中使用的版本相匹配。

Properties -> TestNG我下面有所有的默认设置。这里没有“使用项目TestNG.jar”的设置。

什么有效

当我使用 Gradle 从命令行运行测试时,它们都顺利通过。

Eclipse 中没有显示编译错误。

什么不起作用

当我从 Eclipse 运行测试(通过右键单击一个类)时,控制台显示:

Error: Could not find or load main class org.testng.remote.RemoteTestNG
Run Code Online (Sandbox Code Playgroud)

看来我需要一份testng-remote.jar. 它应该作为插件的一部分安装,还是我打算将它build.gradle作为依赖项包含在我的插件中?

为什么我不能从 Eclipse 运行测试?我是否需要进一步安装一些东西来解决这个错误?

我试过的

我尝试删除并重新安装 TestNG 插件。

eclipse testng

5
推荐指数
1
解决办法
2022
查看次数

什么是用于业务文档交换(发票,采购订单等)的最佳标准?

如果我需要实施从系统到系统(发票,采购订单,汇款通知等)的业务文件的发送和接收,您会建议哪种标准可以实现最佳互操作?为什么?它可以是XML或其他.

xml interop x12 invoice purchase-order

4
推荐指数
2
解决办法
1510
查看次数

良好的面向对象设计是否可以正式化为良好的关系数据库设计?

在数据库世界中,我们进行了规范化.您可以从设计开始,转动步骤并最终使用正常形式的数据库.这是基于数据的语义完成的,可以被认为是一系列设计重构.

在面向对象的设计中,我们拥有SOLID原则和各种其他特殊设计指南.

您是否认为可以为OO定义等效的正规形式,这样一系列重构步骤可以将程序性的代码片段(或者设计不当的OO设计)转换为正确的(在一些定义明确的意义上)相同的功能?

(NB.很高兴制作这个社区wiki)

theory oop normalization relational-database solid-principles

4
推荐指数
1
解决办法
596
查看次数

如何使Oracle SQL区域中的SQL语句无效,以便在收集统计信息时生成新计划

我有一个表和一个访问该表的查询(在PL/SQL包中).通常每周收集统计数据.

在表上运行了大量更新,导致特定索引列上的数据分布明显不同.Oracle使用的查询计划(我可以看到v$sqlarea)是次优的.如果我explain plan从SQL*Plus中获取相同的*查询,则返回一个好的计划.

我已经收集了桌面上的统计数据.Oracle仍在使用它最初提出的查询计划. v$sqlarea.last_load_time表明这是在统计数据生成之前生成的计划.我认为重新生成统计信息会使SQL缓存中的计划失效.

有没有办法从SQL缓存中删除这个语句?

(*不是字符字符,在SQL缓存中匹配相同,但是相同的语句).

oracle statistics

4
推荐指数
2
解决办法
8170
查看次数

寻找在Oracle中使用相同子查询两次时编写SQL的最佳实践

我在Oracle中编写SQL.在SQL中,我使用了两次相同的子查询.我正在尝试找到替换此类常见子查询或重用的查询的最佳方法.

我正在考虑为子查询创建一个视图,但我不允许这样做.全局临时表可能是其他解决方案,但我开始知道这些表并不是真正用于创建和丢弃的.

oracle

4
推荐指数
1
解决办法
1014
查看次数

Golang-扫描某种类型的所有结构

我是Go语言的初学者。我可能认为从其他语言中提取的东西太传统了,但这就是我想在Go中做的事情。假设以下用例

  1. 我有接口I。此接口具有功能start()和stop()
  2. 有许多实现接口的结构。结构A,结构B,结构C
  3. 当应用程序启动时,我想在结构A,B和C上调用start()
  4. 同样,当应用程序终止时,我想在A,B,C结构上调用stop()。
  5. 我不想在代码中的任何地方硬编码结构A,B和C来调用启动/停止功能。这样一来,当我以后添加struct D(也实现接口I)时,代码将自动运行而无需修改。
  6. 为了实现这一点,我需要能够说“嘿,给我实现接口I的所有类型”。
  7. 如果我得到了A,B和C的一部分,我可以简单地循环遍历并在正确的时间调用正确的方法。

在Go中可行吗?

reflection go

4
推荐指数
1
解决办法
1238
查看次数

查找我的 selenium-grid 远程驱动程序正在哪个节点上运行?

我从集线器获取 RemoteWebDriver,如下所示:

RemoteWebDriver driver = new RemoteWebDriver( 
                                      new URL("http://whatever:4444/wd/hub"),
                                      DesiredCapabilities.internetExplorer() );
Run Code Online (Sandbox Code Playgroud)

有没有办法以编程方式找出远程驱动程序正在网格中的哪个节点上运行?

我想记录下来以追踪间歇性测试失败。

selenium selenium-grid

4
推荐指数
1
解决办法
5132
查看次数