Your browser does not seem to support JavaScript. As a result, your viewing experience will be diminished, and you have been placed in read-only mode.
Please download a browser that supports JavaScript, or enable it if it's disabled (i.e. NoScript).
使用 RTS,与使用以下代码相比,有什么优势吗?
word model_(dict.lookup("model")); if (model_ == "model1") { ... } if (model_ == "model2") { ... }
目前OpenFOAM里面植入了30多个湍流模型,要是这样的话,要写30个if?
if
@东岳 嗯,这个对于 OF 这种适合很多问题的大型程序来说很有用。但我更关心的是,我自己写的代码,要不要搞成 RTS 风格的。RTS对我来说有什么用。
RTS对我来说有什么用。
可以减少代码复用。是否有必要把你的代码改成RTS,取决于你对你现存代码风格的容忍程度,和下一步工作展开的难易程度。如果你觉得代码写的不好,就改呗。如果急于出数据,写30个if也无妨,毕竟数据结果是一样的。
个人愚见,题主所说的应该是C++中的动态绑定。使代码可以根据运行时刻的具体数据,选择执行那个函数。
您现在已经深入了解过RTS了吗?我也有和您相同的困惑,能解释下有什么优势吗
抽象工厂来着?RTS就是把一堆构造函数指针给存到一个容器,然后让这个容器成为静态的,这样在main函数Load前就初始化了。你用这一堆if应该算简单工厂,不想麻烦的话,效果是一样的
@马乔 好的,您说的容器就是哈希表吧,看来还是要深入了解下设计模式的内容,谢谢这么晚还回复!早休息!谢谢!
劣势就是添加新的类或者模型,你需要在这里添加if,RTS只需要新类中定义静态成员往那个容器表添加函数指针(也就是add那一套),不会违背那个什么原则来着?开放-封闭?
@马乔 嗯嗯,开闭原则好像是说的新增添模块时,尽可能降低对原有框架的改动,好像之前我看到过一点
@Micro 哈哈,到现在也没有写过自己的RTS
@浪迹天大 不,我不相信,你都写了这么久了
@浪迹天大 哈哈哈,对我来说能看懂大体过程就已经不错啦
@马乔 都只是对官方的进行同级别的扩充。确实没有自己额外创造过结构啊。
@Micro RTS这个帖子该热闹起来,哈哈哈