java - 敏捷明智 - 更改类似代码的最佳方法是什么(私有(private)类)

标签 java c# agile

查看了许多有关敏捷开发的主题,我也是清洁代码的忠实粉丝,但以下代码让我感到毛骨悚然。它看起来像这样:

A类:

public class A{
    private B = new B();
}

B类:

private class B{
    private ArrayStore aS;
    //other private fields

    private Constructor(){
        as = new ArrayStore();
        //initializing other private fields
    }

    private void someMethod(ObjectX obj){
        //some code
        aS.delete(obj);
    }
}

我需要添加额外的声明 as.delete()仅当发生特定情况时才应调用。也不想做if不要让代码变得更加困难。代码越简单越好。所以我想到了这些解决方案:

  1. 由于类 B 违反了开闭原则,我将对其字段和方法进行保护,并在新类中重写此方法,然后在类 A 中使用它。

  2. 我将在 ObjectX 类中设置附加字段,该字段将建议何时应将其删除以及何时不应更改 B 类方法以调用附加方法(该方法将检查对象属性,然后考虑其删除)

各位,你们有什么建议吗?我的意思是,我想知道在这种情况下,当我想要覆盖代码(这是私有(private)的)时该怎么做,以及如何使它看起来有吸引力。

提前致谢!

最佳答案

I need to add additional statement that as.delete() should be called only if something particular happens. Also didn't want to make if not to make code more difficult. The simpler is code - the better.

我想我不同意 if 使代码变得太困难,并且会采用以下方法:

private void someMethod(ObjectX obj){
    //some code
    if (aNameThatDescribesTheUseCaseWhenToDelete()) {
       aS.delete(obj);
    }
}

private boolean aNameThatDescribesTheUseCaseWhenToDelete() {
    // logic to figure out whether delete is okay or not
}

我认为这就是最让人亲吻的事情。

如果确定何时删除的逻辑变得过于复杂,您可以考虑规则/谓词,但这可能是 future 的事情。

关于java - 敏捷明智 - 更改类似代码的最佳方法是什么(私有(private)类),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25599492/

相关文章:

java - 在 Java 的 String 中查找 markdown 图片语法

c# - AJAX 进度条显示页面加载的加载进度百分比

tfs - TFS 的燃尽图,理想趋势从最大值(剩余小时数)开始,而不是第一次日期(剩余小时数)

.net - 测试大量使用 Gui 的 WPF 应用程序

java - 集中式 Java 日志记录

java - 在 Java 中为对象赋值

c# - C# 中的内存问题,如果 .Net 应用程序调用 dll,则可以正常使用,但如果从旧版应用程序调用 dll,则内存问题为天文数字

project-management - 敏捷项目管理

java - 如何用空格字符将一个字符串拆分为另一个字符串?

c# - 如何在 ASP.NET 中实现 Windows 服务类型的基础结构