在Java中,您可以使用final关键字限定局部变量和方法参数.
public static void foo(final int x) {
final String qwerty = "bar";
}
Run Code Online (Sandbox Code Playgroud)
这样做会导致无法在方法体中重新分配x和qwerty.
这种做法使你的代码向不变性的方向推动,这通常被认为是一个加分.但是,它也会使代码混乱,"最终"出现在各处.您对Java中的局部变量和方法参数的final关键字有何看法?
有没有人知道一个库或者至少有一些关于在Java中创建和使用持久数据结构的研究?我没有将持久性称为长期存储,而是将持久性称为不变性(参见维基百科条目).
我正在探索为持久性结构建模api的不同方法.使用构建器似乎是一个有趣的解决方案:
// create persistent instance
Person p = Builder.create(Person.class)
.withName("Joe")
.withAddress(Builder.create(Address.class)
.withCity("paris")
.build())
.build();
// change persistent instance, i.e. create a new one
Person p2 = Builder.update(p).withName("Jack");
Person p3 = Builder.update(p)
.withAddress(Builder.update(p.address())
.withCity("Berlin")
.build)
.build();
Run Code Online (Sandbox Code Playgroud)
但这仍然有点像锅炉板.有任何想法吗?
我正在寻找一个重构布尔表达式的工具.我有像这样的表情
a1 => (b1 <=> c or d) AND
a2 => (b2 <=> c or d) AND
a2 => (b2 <=> c or d)
Run Code Online (Sandbox Code Playgroud)
该工具应该能够简化表达式,例如在上面的例子中提取子表达式"c或d".是否有免费的计算机代数系统可以做到这一点?
目前我想手动重构表达式,用一点haskell quickcheck脚本证明等价.
我得到了CQRS的一般概念,但是当涉及到超越示例代码和幻灯片以处理现实世界问题时,我有一些问题.
验证
当您需要验证涉及检查数据库中的值的命令时,您会怎么做?注册服务,我必须输入一个唯一的电子邮件地址.我听到的一个论点是用户输入重复的电子邮件地址的可能性非常小,所以只需在处理命令时处理它并向他们发送一封"抱歉"的电子邮件,或者建议他们重置密码.因此,该过程避免了为了验证而具有读取模型.但是,如何在命令处理程序中处理重复的情况?你怎么知道那是重复的?检查一个readmodel?你可能首先使用它以获得更好的可用性.
功能/修复错误的更改
当您需要更改命令的工作方式或修复错误时会发生什么?在仅附加的哲学中,我如何处理所有旧命令和命令处理程序?我不能重命名他们_legacy并隐藏他们离开,否则我的事件反序列化将无法正常工作.有什么优雅的解决方案可以解决这个问题?
谢谢
阅读基座演示文稿(并阅读示例源代码) - 我看到了一个基于变换和操作的模型.
Pedestal是否真的使用类似于Google Wave中使用的操作转换(在这里和这里看)?
clojure google-wave clojurescript operational-transform pedestal
我有一个带有桌面视图的iPhone程序.表视图从NSMutable Array获取其数据.我希望人们能够向该表添加数据,即向该数组添加对象.使用addObject和reloadData,我能够向数组添加对象,并重新加载表视图,以便还显示新添加的数据.但是,一旦我重新启动应用程序,就会丢失新添加的数据.我的问题是将数组存储在iPhone中的最佳方法是什么,以便在重新启动时我可以使用用户添加的数据填充表格?
谢谢
我在项目中看到了一个奇怪的问题.这是<h:commandButton/>不执行动作方法.
<c:choose>
<c:when test="#{empty param.t}">
// HTML
</c:when>
<c:when test="#{param.t eq 'normal'}">
// HTML
<h:form>
<h:commandButton value="ADD" action="#{addBean.doSomething}" />
</h:form>
<c:when>
</c:choose>
Run Code Online (Sandbox Code Playgroud)
当我<h:form>进入第一个c:when,然后调用action方法.否则,事实并非如此.为什么?
java ×2
arrays ×1
clojure ×1
cqrs ×1
final ×1
google-wave ×1
immutability ×1
ios ×1
iphone ×1
jsf ×1
pedestal ×1
refactoring ×1
saving-data ×1