范式混合的粒度

时间:2009-02-12 20:41:14

标签: python ruby coding-style

使用Python,C ++,D或Ruby等多范式语言时,在单个应用程序中混合使用多少范式?在一个模块内?您是否认为以精细的粒度混合功能,程序和OO范例会导致更清晰,更简洁的代码,因为您为每个子问题使用正确的工具,或者因为您以3种不同的方式执行类似的事情而导致不一致的混乱?

4 个答案:

答案 0 :(得分:2)

不同的范例以不同的方式混合。例如,使用OOP不会消除外部库中子例程和过程代码的使用。它只是将程序移动到不同的地方。

用一种范式纯粹编程是不可能的。你可能认为在编程时你会想到一个,但这就是你的错觉。您生成的代码将沿着边界并在许多范例的范围内着陆。

答案 1 :(得分:2)

我不确定我是否曾经这样想过。

一旦你开始“思考Ruby”,多范式就会合并到......嗯,Ruby。

Ruby是面向对象的,但我发现其他一些东西,比如功能方面,往往意味着OO语言中存在的一些“传统”设计模式根本就不相关。迭代器是一个经典的例子......迭代是在Ruby中优雅处理的东西,重量级的OO迭代模式不再适用。整个语言似乎都是如此。

答案 2 :(得分:1)

混合范式的优势在于让您以最自然和最自然的方式表达解决方案。当它有助于保持程序逻辑更小时,这是非常好的事情。例如,与传统循环相比,通过某些标准过滤列表比使用功能解决方案更容易表达几倍。

另一方面,为了从混合两种或更多范式中获益,程序员应该能够合理地流利地使用所有这些范例。所以这是一个应该谨慎使用的强大工具。

答案 3 :(得分:0)

不同的问题需要不同的解决方案,但如果您在同一层中以相同的方式解决问题,它会有所帮助。而且变化很大,只会让你和项目中的其他人感到困惑。

对于C ++,我发现静态类型的OOP(在Python中使用zope.interface)适用于更高级别的部分(连接,更新,信令等)和功能性的东西解决了许多低级问题(解析,坚果的螺栓数据处理等)更好。

通常,动态类型的脚本系统适合选择和配置特定的应用程序,游戏级别等等。这可能是语言本身(即Python)或其他东西(xml脚本引擎+ C ++中动态链接所必需的系统)。