我注意到Java、Python、Perl和Haskell/Clojure对静态函数有不同的处理方式。特别地,
1)静态函数在不同语言中的实现和使用方式有哪些不同之处。
2)这些语言中有些语言对静态方法和状态方法有“更完整”的分离和支持吗?
例如:
在clojure中,所有函数本质上都是静态的--允许极高的模块化可组合性,而不是与对象-以太中的任何东西相关联。闭包函数编程可以被java程序员描述为类似于静态函数。
同时,在传统的惯用Java中,常常存在一种混合的方法,其中面向对象的特性保持内部状态,依赖外部静态方法来进行特定的、通常是无状态的转换操作。
然后是脚本世界:我在Perl和Python中注意到,区分静态代码和有状态代码的概念没有那么强调(更新:如注释所示,这可能是由于多范式的性质)。
最后,我们有面向对象的PHP-5开发人员,他们在处理静态和有状态(对象作用域)函数时,似乎与java开发人员的代码类似。
对于来自不同背景的不同程序员对待静态功能的不同之处,任何其他见解都将有助于我与几个PHP/Perl开发人员一起审查代码。
发布于 2011-12-23 01:59:51
相关的区别可能是语言所强调的编程范式。功能语言(如Haskell & Clojure )的目标是消除副作用,强调确定性;将可变或状态封装在思想中,就像monads一样。这与祈使语言形成了鲜明对比。Perl和PHP是多范式语言,因此可以实现命令式样式,如面向过程和面向对象的编码,甚至模拟函数样式。
在与命令式程序员协作时,可能值得关注松散耦合和副作用无关的设计模式,如依赖注入。
https://stackoverflow.com/questions/8611211
复制相似问题