Tag: oop

一个单元应该如何testinghashCode-equals契约?

简而言之,根据Java的object.hashCode(),hashCode合约: 散列码不应该改变,除非影响equals()的东西改变了 equals()意味着散列码是== 让我们假设主要关注不可变的数据对象 – 它们的信息在构造之后永远不会改变,所以假定#1被保持。 这留下#2:问题只是确认等于暗示哈希码==。 显然,我们不能testing每一个可以想象的数据对象,除非这个数据对象是非常小的。 那么,编写一个可能赶上常见情况的unit testing的最好方法是什么呢? 由于这个类的实例是不可变的,所以构造这样一个对象的方法是有限的。 如果可能的话,这个unit testing应该覆盖所有这些。 closures我的头顶,入口点是构造函数,反序列化和子类的构造函数(应该简化为构造函数调用问题)。 [我要通过研究来回答我自己的问题。 来自其他StackOverflowers的input对此过程是一个受欢迎的安全机制。] [这可能适用于其他OO语言,所以我添加了该标签。]

PHP的私人常量

我有一个类在内部实现中使用常量,但我想限制这些常量的可见性。 为什么PHP不允许私人常量? 是否有另一种方法来实现这一点,或者是PHP试图阻止某种types的devise失误,我是无知的?

为什么我应该去C#中的接口,当我可以直接实现的方法

我知道这是一个非常基本的问题,但一个采访者以非常诡计的方式问我,我很无奈:( 我只知道一个接口的物质或理论定义,并在我所从事的许多项目中实现它。 但是我真的不明白为什么,以及如何有用。 我也不明白界面中的一件事。 即例如,我们使用 conn.Dispose(); 在终于阻止。 但我没有看到该类正在实现或inheritanceIDisposable接口( SqlConnection )类的意思。 我想知道如何才能调用方法名称。 在同样的事情中,我不理解Dispose方法是如何工作的,因为我们需要用我们自己的实现来实现所有接口方法的函数体。 那么接口如何被接受或命名为契约? 直到现在,这些问题一直在我的脑海中浮现,坦率地说,我从来没有看到任何能够以我能理解的方式来解释我的问题的好线索。 像往常一样MSDN看起来非常可怕,没有一个单一的路线是明确的( 民间,善意的借口谁进入高层次的发展,我强烈地感到,任何代码或文章应该达到任何人看到它的头脑,因此像许多人说,MSDN没有用 )。 采访者说: 他有5种方法,他很乐意直接在课堂上实现它,但如果你必须去抽象类或接口,你select哪一个,为什么? 我确实回答了我在各种博客上看到的抽象类和接口的优缺点,但是他并不确信,他正在试图理解“Why Interface”。 一般来说,“为什么抽象类”,即使我只能执行一次同样的方法,也不会改变它。 我没有看到networking上的任何地方,我可以得到一篇能够清楚地解释接口及其function的文章。 我是那些许多程序员之一,他们仍然不知道接口(我知道我使用的理论和方法),但并不满足于我明白的理解。

F#在“使用绝对没有意义”的地方?

Don Syme在他的SPLASH演讲中表示,F#不是为了替代C#,即使它具有一般的function。 他继续说,有些地方F#在使用上没有意义,但没有扩大论文。 有人可以告诉我什么地方应该避免使用F#? 你也可以提到C#闪耀的领域。 相关问题: 在哪些地方使用F#比C#更合适?

R:什么是老虎机?

有谁知道什么是在R插槽? 我没有find它的意义的解释。 我得到一个recursion的定义:“槽function返回或设置对象的单个插槽的信息” 帮助将不胜感激,谢谢 – 胡同

课后申报括号后的半冒号

提前道歉可能是一个愚蠢的问题,但在C + +类,为什么在分号后的分号? 我经常忘记它,并得到编译器错误,从而失去了时间。 对我来说似乎有点多余,这是不太可能的。 人们是否真的这样做 class MyClass { . . . } MyInstance; 编辑:我从C兼容的angular度来看它的结构和枚举,但由于类不是C语言的一部分,我猜它主要是在类似的声明结构之间保持一致。 我一直在寻找更多的devise原理,而不是能够改变任何东西,尽pipe一个好的代码完成IDE可能会在编译之前对其进行修改。

什么时候应该使用stdClass,什么时候应该在php oo代码中使用数组?

在工作中的重构期间,我想介绍一下stdClass *****作为从函数返回数据的方式,我试图find非主观的论据来支持我的决定。 有什么情况下最好使用一个而不是另一个? 我会使用stdClass而不是数组有什么好处? 有人会说,function必须尽可能less和具体,以便能够返回一个单一的值。 我决定使用stdClass是暂时的,因为我希望从长远来看为每个进程find正确的Value对象。

适配器 – 适配器模式的任何实例

我想演示如何使用适配器模式给我的团队。 我在网上阅读了很多书和文章。 大家都在引用一个有助于理解概念(形状,存储卡,电子适配器等)的例子,但没有真正的案例研究。 你可以请分享适配器模式的任何案例研究? PS我试图在stackoverflow上search现有的问题,但没有find答案,所以张贴它作为一个新的问题。 如果您知道已经有这个答案,请redirect。

耦合,衔接与德米特定律

得墨忒耳定律表明,你只应该直接与你所知道的物体说话。 也就是说,不要执行方法链接来与其他对象交谈。 当你这样做的时候,你正在与中间对象build立不正当的联系,不恰当地把你的代码和其他代码联系起来。 那很糟。 解决办法是为你所知道的类本质上公开简单的包装,将责任委托给它与之有关系的对象。 那很好。 但是,这似乎导致class级凝聚力低下。 它不再仅仅是对它所做的事情负责,而且它也使代表从某种意义上说,通过复制相关对象的接口部分来使得代码更less凝聚力。 那很糟。 这是否真的会降低凝聚力? 是两个邪恶中较小的一个? 这是发展的灰色地带之一吗?你可以在这里辩论哪一方面,或者有强有力的原则性的方式来决定在哪里划界,以及你可以用什么标准来作出这个决定?

在PHP中closures……究竟是什么,他们什么时候需要使用它们?

所以我正在编写一个很好的,最新的,面向对象的时尚。 我经常使用PHP实现的OOP的各个方面,但是我想知道什么时候需要使用闭包。 那里的任何专家都可以揭示什么时候实施closures是有益的?