小编mof*_*dub的帖子

编程是数学的一个子集吗?

我多次听说所有编程都是数学的一个子集.有些人认为 OO从根本上来说是以数学为基础的,但除了一些明显的例子外,我没有得到这种联系:

  • 使用归纳来证明递归算法,
  • 正式的正确性证明,
  • 功能语言,
  • lambda演算,
  • 渐近复杂度
  • 一般而言,DFA,NFA,图灵机和理论计算,
  • 而且盒子上的所有东西都是二进制的.

我知道数学对于编程非常重要,但我对这个"子集"视图感到困惑.编程数学子集的方式是什么?

我正在寻找可能与企业/ OO开发相关的解释,如果有足够强的连接,那就是.

math

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

不是信息专家和告诉不要问单一责任原则吗?

信息专家,Tell-Don't-AskSRP通常被一起提及为最佳实践.但我认为他们存在分歧.这就是我所说的.

有利于SRP但违反Tell-Don't-Ask&Info-Expert的代码:

Customer bob = ...;
// TransferObjectFactory has to use Customer's accessors to do its work, 
// violates Tell Don't Ask
CustomerDTO dto = TransferObjectFactory.createFrom(bob); 
Run Code Online (Sandbox Code Playgroud)

有利于Tell-Don't-Ask和Info-Expert但违反SRP的代码:

Customer bob = ...;
// Now Customer is doing more than just representing the domain concept of Customer,
// violates SRP
CustomerDTO dto = bob.toDTO();
Run Code Online (Sandbox Code Playgroud)

请告诉我这些做法如何能够和平共处.

术语的定义,

  • 信息专家:具有操作所需数据的对象应承载该操作.

  • 告诉不要问:不要向对象询问数据以便工作; 告诉对象做这项工作.

  • 单一责任原则:每个对象应具有狭义的责任.

oop single-responsibility-principle tell-dont-ask solid-principles

24
推荐指数
2
解决办法
2718
查看次数

设计问题:电话拨打电话号码,还是电话号码拨打电话?

这是我在DDD Yahoo!上发布的内容重新发布的.组.

一切都相同,你写phone.dial(phoneNumber)或phoneNumber.dialOn(电话)?请记住可能的未来要求(除电话号码外的帐号,除电话外的计算器).

这个选择倾向于说明信息专家,单一责任原则和Tell Do Not Ask的成语是如何相互矛盾的.

phoneNumber.dialOn(电话)支持信息专家和告诉不要问,而phone.dial(phoneNumber)支持单一责任原则.

如果您熟悉Ken Pugh在Prefactoring中的工作,那就是电子表格难题 ; 你添加行或列?

oop

8
推荐指数
3
解决办法
1851
查看次数

有没有办法模拟JavaScript中的警报点击?

我有一个带有iframe的页面,其源页面位于一个单独的域中.源页面会不时生成警报.当它执行此操作时,它将停止正在执行的操作,直到用户单击"确定"为止.

我想要做的是以编程方式单击此警报上的确定,以便源页面可以恢复有用.这可能吗?

javascript alerts

8
推荐指数
2
解决办法
9612
查看次数

如何在幕后实现Smalltalk的whileTrue消息?

我正在努力教自己Smalltalk.教程有一个while循环的例子:

|i| 
i:=5. 
[i >0] whileTrue:[ 
 Transcript show: ((i*2) asString) ; cr. 
 i:=i-1. 
].
Run Code Online (Sandbox Code Playgroud)

据我了解,whileTrue是发送给BlockClosure的消息,告诉接收BlockClosure运行作为参数给出的BlockClosure,只要接收器为真.

如果没有Smalltalk中的while循环结构,BlockClosure响应的whileTrue消息是如何实现的?或者它是用运行时编写的任何语言实现的?

smalltalk

2
推荐指数
1
解决办法
6778
查看次数