Python 接受时间增量或秒数更好吗?

Python 接受时间增量或秒数更好吗?,python,timedelta,Python,Timedelta,我参与了一个开源项目,在那里,我查询最近更新的对象,所以我有一个函数可以接受max_age对象。查看我的代码的人稍微偏爱以秒为单位传递时间。虽然这不是一个大问题,但我认为这是一个学习的机会。这是我们的谈话。在某些情况下,我们开始讨论参数的名称 代码审阅者: 我想马克斯的年龄很好,我误读了。我认为max_age_timedelta是 也很好(更明确)。多想想,有没有好的方法 不使用秒的原因?如中所示,传入一个整数?有 重要的速度问题 我: 不,只是易用性问题 代码审阅者: 我有点赞成在尽可能简单的

我参与了一个开源项目,在那里,我查询最近更新的对象,所以我有一个函数可以接受max_age对象。查看我的代码的人稍微偏爱以秒为单位传递时间。虽然这不是一个大问题,但我认为这是一个学习的机会。这是我们的谈话。在某些情况下,我们开始讨论参数的名称

代码审阅者:

我想马克斯的年龄很好,我误读了。我认为max_age_timedelta是 也很好(更明确)。多想想,有没有好的方法 不使用秒的原因?如中所示,传入一个整数?有 重要的速度问题

我:

不,只是易用性问题

代码审阅者:

我有点赞成在尽可能简单的函数之间传递对象

我:

我是根据日期进行查询的,时间增量使日期数学变得更容易

代码审阅者:

用秒数作为输入在内部创建timedelta是否很棘手? 或者你是否在很多地方使用了时间增量,以至于每次都这么做会很乏味? (注意:'internal'指的是'internal to the function do the query')

我:

这并不难,我当然可以在内部构建一个时间增量。 但是timedelta对象具有时间长度的语义。 整数和其他基本数据类型通过参数和变量名获得语义

代码审阅者:

是的,我明白。然而,在Python中,stuff是非类型化的,因此我们的主要信号传递方法是变量名。 也就是说,通过查看代码,不容易告诉对象的类型,就像C++中的一样。 在这种情况下你会怎么做

  • 尽管审阅者提出了一个有效的观点,即在Python中,您无法通过查看对象的名称来判断它是什么类型,但我认为这个参数不适用于这种特定情况,因为无论您传递的是timedelta还是int,都是这样。无论哪种方式,您都无法判断它的类型。所以我会忽略这个论点
  • 如果你已经有一个可用的时间差,为什么要在不同的地方转换它呢。那是不必要的开销
  • 一致性:如果代码的其余部分传递int并转换为timedelta,那么我将坚持当前的约定。如果代码中没有这样的先例,那么我将通过timedelta。保持一致性很重要,因为查看此代码库的其他程序员有一定的期望。最好不要惹恼他们
  • 注释好你的代码。使用docstrings列出参数的类型
    本质上,如果在使用int的代码中没有先例,我认为使用timedelta没有问题。

    不幸的是,这将完全基于观点,没有“正确”的答案。如果你对别人的项目做出贡献,你应该遵守他们的标准,即使你觉得它更麻烦。不要考虑你的需求,那是自私的。考虑你的呼叫者的需要。他们最可能使用的形式是什么?