您尝试使代码功能如何的一切方式是什么?

时间:2008-12-09 07:31:48

标签: programming-languages concurrency functional-programming

这样您就可以在将来轻松地同步您的程序。

5 个答案:

答案 0 :(得分:3)

我专注于制作物品永恒。不可变对象允许您比“线程安全”对象更容易推理多线程代码。该对象具有一个可见状态,可以在线程之间传递而无需任何同步。它考虑了多线程编程。

如果您感兴趣,我已经发布了很多关于不可变对象的工作,特别是代码库中的不可变集合。项目名称为RantPack。在收藏区我有

  • ImmutableCollection< T>
  • ImmutableMap< TKEY的,TValue>
  • ImmutableAvlTree< T>
  • ImmutableLinkedList< T>
  • ImmutableArray< T>
  • ImmutableStack< T>
  • ImmutableQueue< T>

还有一个额外的垫片层(CollectionUtility),它将产生实现BCL接口的包装器对象,例如IList< T>。和ICollection< T>。它们无法完全实现接口,因为它们是不可变的,但实现了所有可能的方法。

网站上也提供包含单元测试的源代码(C#)。

答案 1 :(得分:1)

我主要用Java编程。我正在耐心地等待关闭语言的日子。但是,由于我仍然坚持使用Java 1.4.2,即使它们被添加,这对我来说也不会很长时间了!

也就是说,我的主要“功能”编程方式是大量使用“final”关键字。我尽量让尽可能多的类完全不可变,其余的则要明确区分什么是瞬态和什么是不可变的。

答案 2 :(得分:0)

不要使用成员变量或全局变量。使用本地堆栈的函数/方法。当方法仅使用内部范围的变量和调用参数并使用out / inout / reference参数或返回值返回所有信息时,它是有效的。

答案 3 :(得分:0)

让一切都是异步的。 使用不可变对象,消息等。 通过队列进行沟通。

答案 4 :(得分:0)

以下是有关该主题的关于rubyconf 2008的讨论,主要是以ruby为中心,但有几个概念仍然有效。

http://rubyconf2008.confreaks.com/better-ruby-through-functional-programming-2.html