相关疑难解决方法(0)

什么是图灵完成?

"图灵完成"的含义是什么意思?

你可以给出一个简单的解释,而不会涉及太多的理论细节吗?

theory turing-machines turing-complete

461
推荐指数
8
解决办法
15万
查看次数

if语句中的赋值

我有一个类Animal及其子类Dog.我经常发现自己编写以下代码:

if (animal is Dog)
{
    Dog dog = animal as Dog;    
    dog.Name;    
    ... 
}
Run Code Online (Sandbox Code Playgroud)

对于变量Animal animal;.

是否有一些语法允许我写如下:

if (Dog dog = animal as Dog)
{    
    dog.Name;    
    ... 
}
Run Code Online (Sandbox Code Playgroud)

c# casting if-statement

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

什么是不变量?

这个词似乎在许多情况下被使用.我能想到的最好的是它们意味着一个无法改变的变量.是不是常数/决赛(你是Java!)是为了什么?

language-agnostic invariants

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

要避免的设计模式

许多人似乎都同意,Singleton模式有许多缺点,有些甚至建议完全避免这种模式.这里有一个很好的讨论.请将有关Singleton模式的任何评论指向该问题.

我的问题:是否有其他设计模式,应该避免或小心使用?

design-patterns anti-patterns

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

如何设计可扩展的软件(插件架构)?

我需要一些资源来讨论如何将软件设计为可扩展的,即让其他人可以编写添加功能的附加组件/插件.

您有什么推荐的吗?那里有讨论这个主题的书吗?
我更喜欢那些简短而重要的东西; 一点理论和一堆具体的例子.

我不是针对特定语言,我希望能够理解核心思想,以便我可以用任何语言实现它.

出于同样的原因,我宁愿不使用其他人构建的框架(除非框架不是非常高级,即不会隐藏太多),目前我只想教育自己主题和实验以各种方式实现它.此外,框架通常假定用户对该主题的了解.

UPDATE

我不是在询问OOP或者是否允许我的类被继承.我所说的是设计一个将部署在系统上的应用程序,以便在部署之后可以通过第三方附加组件进行扩展.

例如,Notepad ++有一个插件架构,您可以将.dll文件放在plugins文件夹中,并为不存在的应用程序添加功能,例如颜色选择或片段插入,或许多其他内容(广泛的功能).

language-agnostic resources plugins extensibility

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

Liskov替换原则 - 没有覆盖/虚拟方法?

我对Liskov替换原则的理解是,对于派生类,基类的某些属性是真的或某些实现的基类行为.

我想这意味着当一个方法在基类中定义时,它永远不应该在派生类中被覆盖 - 因为那么替换基类而不是派生类会产生不同的结果.我想这也意味着,拥有(非纯)虚拟方法是件坏事吗?

我想我可能对这个原则有错误的理解.如果我不这样做,我不明白为什么这个原则是好的做法.谁可以给我解释一下这个?谢谢

liskov-substitution-principle design-principles solid-principles

57
推荐指数
4
解决办法
6456
查看次数

Scala中的类型系统是图灵完整的.证明?例?好处?

有人声称Scala的类型系统是图灵完整的.我的问题是:

  1. 这有正式的证据吗?

  2. 如何在Scala类型系统中进行简单的计算?

  3. 这对Scala有什么好处 - 语言?这是否使Scala在某种程度上比没有图灵完整类型系统的语言更"强大"?

我想这通常适用于语言和类型系统.

language-agnostic type-systems scala turing-complete

55
推荐指数
2
解决办法
6897
查看次数

Swift中的函数和方法有什么区别?

我一直认为函数和方法是一样的,直到我通过"Swift编程语言"电子书学习Swift.我发现我不能greet("John", "Tuesday")用来调用我在类中声明的函数,如下面屏幕截图中的电子书所示:

swift中的函数声明

我收到一条错误,说"根据此屏幕截图,错过了参数标签'日:'正在通话中 ":

swift中的错误消息

这是代码: -

import Foundation
import UIKit

class ViewController2: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()

        //var dailyStatement = greet("John", "Tuesday")
        var dailyStatement = greet("John", day: "Tuesday")
        println(dailyStatement)
    }

    func greet(name: String, day: String) -> String {
        return "Hello \(name), today is \(day)."
    }
}
Run Code Online (Sandbox Code Playgroud)

经过一些研究,我发现了这篇文章:方法和函数之间的区别,在我看来,我在类中声明的函数实际上被称为方法.因此,与用于调用函数的语法相比,我用于调用方法的语法是不同的.

我在Objective-C编程时从未意识到这种差异.

  1. Swift中的函数和方法有什么区别?

  2. 我们何时使用函数?何时使用Swift中的方法?

methods function swift

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

嘲笑一个类与嘲弄它的界面

对于单元测试,我需要模拟几个依赖项.其中一个依赖项是实现接口的类:

public class DataAccessImpl implements DataAccess {
    ...
}
Run Code Online (Sandbox Code Playgroud)

我需要设置这个类的模拟对象,当提供一些指定的参数时返回一些指定的值.

现在,我不确定的是,模拟界面或类是否更好,即

DataAccess client = mock(DataAccess.class);
Run Code Online (Sandbox Code Playgroud)

DataAccess client = mock(DataAccessImpl.class);
Run Code Online (Sandbox Code Playgroud)

它在测试方面有什么不同吗?什么是首选方法?

java junit unit-testing mocking

43
推荐指数
4
解决办法
5万
查看次数

为什么要避免使用子类型?

我看到Scala社区中有很多人建议避免像"瘟疫一样"进行分类.使用子类型的各种原因是什么?有哪些替代方案?

oop programming-languages functional-programming scala

34
推荐指数
3
解决办法
3637
查看次数