小编Pét*_*rök的帖子

构造函数和继承

让我们在C#中举个例子

public class Foo
{
    public Foo() { }
    public Foo(int j) { }
}

public class Bar : Foo
{

}
Run Code Online (Sandbox Code Playgroud)

现在,除了构造函数之外,Foo的所有公共成员都可以在Bar中访问.我做不了类似的事情

Bar bb = new Bar(1);
Run Code Online (Sandbox Code Playgroud)

为什么构造函数不可继承?

UPDATE

我知道我们可以链接构造函数,但我想知道为什么上面的构造无效.我相信它应该是有正当理由的.

c# oop inheritance

14
推荐指数
2
解决办法
2782
查看次数

单一责任原则(SRP)和我的RPG的类结构看起来"怪异"

我正在制作角色扮演游戏,只是为了好玩,并了解有关SOLID原则的更多信息.我关注的第一件事就是SRP.我有一个"角色"类,代表游戏中的角色.它有Name,Health,Mana,AbilityScores等等.

现在,通常我也会在我的Character类中放置方法,所以它看起来像这样......

   public class Character
   {
      public string Name { get; set; }
      public int Health { get; set; }
      public int Mana { get; set; }
      public Dictionary<AbilityScoreEnum, int>AbilityScores { get; set; }

      // base attack bonus depends on character level, attribute bonuses, etc
      public static void GetBaseAttackBonus();  
      public static int RollDamage();
      public static TakeDamage(int amount);
   }
Run Code Online (Sandbox Code Playgroud)

但是由于SRP,我决定将所有方法都移到一个单独的类中.我将该类命名为"CharacterActions",现在方法签名看起来像这样......

public class CharacterActions
{
    public static void GetBaseAttackBonus(Character character);
    public static int RollDamage(Character character);
    public static TakeDamage(Character character, int amount);
} …
Run Code Online (Sandbox Code Playgroud)

c# design-patterns solid-principles

13
推荐指数
2
解决办法
2573
查看次数

Maven2无法从相对路径中找到父级

我正在尝试使用Maven2但我的子项目无法找到父项目.

目录结构如下:

--parent
  --pom.xml
--child
  --pom.xml
Run Code Online (Sandbox Code Playgroud)

子pom.xml文件如下所示:

<parent>
    <groupId>com.mycompany.app</groupId>
    <artifactId>myapp</artifactId>
    <version>${app.version}</version>
    <relativePath>.../parent/pom.xml</relativePath>
</parent>
Run Code Online (Sandbox Code Playgroud)

但是,当我使用maven时,它似乎甚至没有查看相对路径,它似乎尝试从maven存储库下载它.它显然不在回购中.我想让它看一下相对路径.我究竟做错了什么?这是错误消息:

[INFO] Scanning for projects...
Downloading: http://repo1.maven.org/maven2/com/mycompany/app/myapp/${app.version}/myapp-
${app.version}.pom
[INFO] Unable to find resource 'com.mycompany.app:myapp:pom:${app.version}' in reposit
ory central (http://repo1.maven.org/maven2)
[INFO] ------------------------------------------------------------------------
[ERROR] FATAL ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Error building POM (may not be this project's POM).


Project ID: null:web:jar:null

Reason: Cannot find parent: com.mycompany.app:myapp for project: null:web:jar:null for
 project null:web:jar:null
Run Code Online (Sandbox Code Playgroud)

maven-2 maven

13
推荐指数
3
解决办法
5万
查看次数

filestream文件末尾的字符是什么?

我在while循环中搜索特定字符以检查它是否到达文件末尾.

我可以搜索哪个角色?

例如:

Indexof('/n')  end of line
Indexof(' ') end of word
???? ---------- end of file??
Run Code Online (Sandbox Code Playgroud)

.net c# asp.net string

13
推荐指数
4
解决办法
6万
查看次数

如何打破Hibernate会话?

在Hibernate参考中,有几次说明

Hibernate抛出的所有异常都是致命的.这意味着您必须回滚数据库事务并关闭当前事务Session.您不能继续使用Session引发异常的操作.

我们的一个遗留应用程序使用单个会话将文件中的许多记录更新/插入到数据库表中.每个记录更新/插入都在单独的事务中完成,然后提交(或在发生错误时回滚).然后为下一条记录打开一个新事务,依此类推.但是在整个过程中使用相同的会话,即使在处理过程HibernateException中陷入了困境.我们在JBoss 4.2上使用Oracle 9i btw和Hibernate 3.24.sp1.

阅读本书中的上述内容,我意识到这种设计可能会失败.所以我重构了应用程序,为每次记录更新使用单独的会话.在使用模拟会话工厂的单元测试中,我可以验证它现在正在为每个记录更新请求新会话.到现在为止还挺好.

但是,我们发现在测试整个应用程序时没有办法重现会话失败(这是一个压力测试btw,还是......?).我们考虑过关闭数据库的监听器,但我们意识到应用程序正在保持一堆连接对数据库开放,并且监听器不会影响这些连接.(这是一个Web应用程序,每晚由调度程序激活一次,但它也可以通过浏览器激活.)然后我们尝试在应用程序处理更新时杀死数据库中的一些连接 - 这导致一些失败更新,但随后应用程序愉快地继续更新其余记录.显然,Hibernate非常聪明,可以在不破坏整个会话的情况下重新打开引擎盖下的断开连接.

所以这可能不是一个关键问题,因为我们的应用程序似乎足够强大,即使是原始形式.但是,这个问题一直困扰着我.我想知道:

  1. 在什么情况下,Hibernate会话在HibernateException被抛出后真的变得无法使用(更新:以及有什么症状)?
  2. 如何在测试中重现这一点(更新:最好是集成,而不是单元测试)?
  3. (这种测试的正确用语是什么?)

java testing session hibernate exception

13
推荐指数
1
解决办法
6509
查看次数

用Java进行多态调度

在下文中,我希望EventHandler以一种方式处理EventA,以另一种方式处理EventB,以及以另一种方式处理任何其他事件(EventC,EventD).EventReceiver仅接收对Event的引用并调用EventHandler.handle().当然,总是被调用的版本是EventHandler.handle(事件事件).

不使用instanceOf,有没有办法多态调度(可能通过EventHandler或泛型中的另一个方法)到适当的句柄方法?

class EventA extends Event {
}

class EventB extends Event {
}

class EventC extends Event {
}

class EventD extends Event {
}

class EventHandler {
    void handle(EventA event) {
       System.out.println("Handling EventA");
    }

    void handle(EventB event) {
       System.out.println("Handling EventB");
    }

    void handle(Event event) {
       System.out.println("Handling Event");
    }
}

class EventReceiver {
    private EventHandler handler;

    void receive(Event event) {
        handler.handle(event);
    }
}    
Run Code Online (Sandbox Code Playgroud)

java double-dispatch

13
推荐指数
1
解决办法
6756
查看次数

红色,绿色,重构 - 为什么重构?

我正在尝试学习TDD和单元测试概念,我已经看到了口头禅:"红色,绿色,重构".我很好奇你为什么要在测试通过后重构你的代码?

这对我来说没有意义,因为如果测试通过,那你为什么要搞乱代码呢?我也看到TDD咒语就像"只编写足够的代码来使测试通过".

我能提出的唯一原因是,如果要使测试通过绿色,你只是粗略地编写任何旧代码.你只是破解了一个通过测试的解决方案.显然代码很乱,所以你可以清理它.

编辑:

我在另一个stackoverflow帖子上找到了这个链接,我认为这证实了我提出的唯一原因,即"通过"测试的原始代码可以非常简单,甚至是硬编码:http://blog.extracheese.org/2009/ 11/how_i_started_tdd.html

testing tdd refactoring unit-testing

13
推荐指数
3
解决办法
3422
查看次数

如何在MVVM中构建ViewModel而不违反单一责任原则?

罗伯特马丁说:"一个班级改变的理由永远不应该超过一个".

让我们考虑绑定到View的ViewModel类.ViewModel可能(甚至可能)由彼此不相关的属性组成.对于小视图,ViewModel可能非常一致,但是当应用程序变得更加复杂时,ViewModel将公开可能因不同和无关原因而发生变化的数据.

我们是否应该在ViewModel类的情况下担心SRP原则?

silverlight wpf mvvm solid-principles

12
推荐指数
1
解决办法
1660
查看次数

Jquery延迟淡出

我有这个代码,可以在悬停时更改div的不透明度.

$("#navigationcontainer").fadeTo("slow",0.6); 

$("#navigationcontainer").hover(function(){ $("#navigationcontainer").fadeTo("slow",
    1.0); // This sets the opacity to 100% on hover },function(){ 

$("#navigationcontainer").fadeTo("slow",
    0.6); // This sets the opacity back to 60% on mouseout });
Run Code Online (Sandbox Code Playgroud)

我希望在将div设置为0.6不透明度之前有一个延迟,我将如何做到这一点

jquery delay fadeout

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

c ++,objective-c和objective-c ++有什么区别?

我想知道c ++与objective-c和objective-c ++之间的区别.任何人都可以给我带来差异吗?我们可以使用c ++进行iPhone开发吗?

谢谢,Madan Mohan

c++ objective-c objective-c++

12
推荐指数
2
解决办法
2万
查看次数