M代码是solve得益于面向对象的程序设计和运算符重载，使用者可以相对容易地建立自己的求解器。然而，大量模板元编程的运用以及相应开发文档的缺乏，使得越是深入库底层的定制化越是困难和充满挑战。
可扩展性.由于使用了工厂方法和基类作为接口，OpenFOAM具有很好的可扩展性。使用者在建立定制化的物体或对象（例如边界条件或湍流模型）时，无需修改或是重新编译OpenFOAM软件包，便可在已有的求解器上工作。OpenFOAM称之为"运行时决策(run-time selection)"