我多次听说所有编程都是数学的一个子集.有些人认为 OO从根本上来说是以数学为基础的,但除了一些明显的例子外,我没有得到这种联系:
我知道数学对于编程非常重要,但我对这个"子集"视图感到困惑.编程数学子集的方式是什么?
我正在寻找可能与企业/ OO开发相关的解释,如果有足够强的连接,那就是.
信息专家,Tell-Don't-Ask和SRP通常被一起提及为最佳实践.但我认为他们存在分歧.这就是我所说的.
有利于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
这是我在DDD Yahoo!上发布的内容重新发布的.组.
一切都相同,你写phone.dial(phoneNumber)或phoneNumber.dialOn(电话)?请记住可能的未来要求(除电话号码外的帐号,除电话外的计算器).
这个选择倾向于说明信息专家,单一责任原则和Tell Do Not Ask的成语是如何相互矛盾的.
phoneNumber.dialOn(电话)支持信息专家和告诉不要问,而phone.dial(phoneNumber)支持单一责任原则.
如果您熟悉Ken Pugh在Prefactoring中的工作,那就是电子表格难题 ; 你添加行或列?
我有一个带有iframe的页面,其源页面位于一个单独的域中.源页面会不时生成警报.当它执行此操作时,它将停止正在执行的操作,直到用户单击"确定"为止.
我想要做的是以编程方式单击此警报上的确定,以便源页面可以恢复有用.这可能吗?
我正在努力教自己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消息是如何实现的?或者它是用运行时编写的任何语言实现的?