,这样你可以在未来轻松地让你的程序并发。你试图让你的代码的功能如何?
回答
我专注于使项目不可变。不可变对象允许您比“线程安全”对象更容易推断多线程代码。该对象具有一个可以在线程之间传递而没有任何同步的可见状态。它考虑了多线程编程。
如果您有兴趣,我已经发表了很多关于不可变对象的工作,特别是代码库上的不可变集合。该项目的名称是RantPack。在收集区我有
- ImmutableCollection <牛逼>
- ImmutableMap < TKEY的,TValue >
- ImmutableAvlTree <牛逼>
- ImmutableLinkedList <牛逼>
- ImmutableArray <牛逼>
- ImmutableStack <Ť>
- ImmutableQueue <Ť>
有一个额外的垫片层,其(CollectionUtility),这将产生实现BCL接口如IList的<Ť>和ICollection的<Ť>包装对象。他们不能完全实现接口,因为它们是不可变的,但是所有可能的方法都被实现了。
包含单元测试的源代码(C#)也可在网站上找到。
请勿使用成员变量或全局变量。使用本地堆栈的函数/方法。当一个方法仅使用内部作用域变量和调用参数并使用out/inout/reference参数或返回值返回所有信息时,它是可用的。
我主要用Java编程。我正在耐心等待关闭语言的日子。但是由于我仍然停留在Java 1.4.2上,即使它们被添加了,这对我来说也不是很长时间!
也就是说,我的主要“功能性”编程方式是大量使用“最终”关键字。我试图让尽可能多的类完全不可变,而其余的则在瞬态和不可变之间有明确的区别。
+1为“最终” - 不变性是你的朋友。如果您使用其中一种功能性JVM语言(例如Clojure或Scala),您也不需要等待关闭:-) – mikera 2011-03-08 16:40:29
下面是关于rubyconf 2008的主题讨论,主要以ruby为中心,但几个概念仍然有效。
http://rubyconf2008.confreaks.com/better-ruby-through-functional-programming-2.html
- 1. 你如何测试非功能代码?
- 2. 你怎么能让你的C#代码漂亮?
- 3. 你如何让别人相信你的代码并使用它?
- 4. 你如何组织你的Javascript代码?
- 5. 你如何组织你的代码?
- 6. 你如何修改你的代码?
- 7. 你如何构建你的jQuery代码?
- 8. 你如何使用gdb来调试你的代码?
- 9. 我如何让我的代码说“你不能分为0”
- 10. 你会如何测试这些功能?
- 11. 你如何评论PHP功能内的代码?
- 12. 你如何测试Java EE代码?
- 13. 你如何测试CocoaPod代码?
- 14. 你如何测试GWT代码?
- 15. 你能解释Norvig的Sudoku代码中的赋值功能吗?
- 16. Flash程序员:你如何让你的代码反编译证明?
- 17. 如何让我的代码在功能
- 18. 你如何测试你的emberjs路线?
- 19. 你如何测试你的Request.QueryString []变量?
- 20. 你如何编写你的QTP测试?
- 21. 你如何测试你的Cocoa GUI?
- 22. 你如何使用vim的quickfix功能?
- 23. javascript单元测试:你如何跟踪你写的所有测试和你有什么代码覆盖?
- 24. 你如何以'root'的身份临时运行你的代码?
- 25. 你如何让jQuery的
- 26. 你用什么来测试你的C++代码?
- 27. 你如何让你的提交登录按钮带你到你的PHP页面?
- 28. 你如何让PHP
- 29. 测试你的代码速度?
- 30. 你用什么工具编写jQuery代码并调试你的代码?
你没有涵盖这一切:[...]不使用I/O函数或函数返回随机值等,基本上不会有副作用的使用功能。 – Claymore 2008-12-09 09:07:29