在我的工程计算中处于 DRY 状态时多少算太多?

How much is too much when being DRY in my engineering computations?

我是一名工科学生,我必须上交 运行 模拟代码的项目。计算全部在 Python 中进行,但推导/设置在纸上完成并包含在报告中。我有时会发现自己复制和粘贴重复图形或数值模拟的代码,所以我想为这些编写函数(试图更好地了解 DRY)。

在编写函数来执行这些操作时,我担心我“隐藏”了函数背后的大部分代码。例如,此函数将绘制两个仅在公差级别上不同的模拟。这将用于检查 ode 的数值模拟中的收敛性。

def plot_visual_convergence_check(odefunc, time, reltol):
    sol_1 = solve_ivp(odefunc, time, (0,0), rtol=reltol)
    sol_2 = solve_ivp(odefunc, time, (0,0), rtol=reltol/100)
    
    plt.text('rtol is...')
    plt.text('rtol for the increased tolerance is...')
    plt.plot(<both plots together>)
    return plt.show()

在这里,所有与 运行ning solve_ivp 有关的两个场景的业务仅在相对容忍度上有所不同,并将它们绘制成一个。我不认为人们会想要细节,只是输出和确认“是”模拟已经收敛。我什至在图表上写下了两个 rtol,以便在不显示代码的情况下更清楚地了解使用了哪些值。

是否可以将这些类型的操作包装起来(因为我认为这样看起来更干净),或者作为工程师将所有内容都布置好让每个人都能看到而不需要他们滚动到函数会更好吗定义?

根据我的经验,在编写要重用的库和代码时,枯燥的原则更为重要。然而,我的经验是,如果你想做一份报告,那么有时让事情变得干燥实际上会让事情更难维护。 IE。有时您希望能够在一个地方更改单个 graph/plot/piece 数据而不影响报告的其余部分。需要一些练习和经验才能找出最适合您的方法。在这个特定的用例中,在编写库或应用程序时,不要太关注遵循 DRY 规则。

此外,如果我必须进行这样的报告并且情况允许的话。我会在 Jupyter notebook 中制作。在这里您可以很好地混合代码与文本和图形输出。