Python Django接收机最佳实践
我正在决定如何写我的收信人。我可以执行以下任一操作:Python Django接收机最佳实践,python,django,optimization,signals,Python,Django,Optimization,Signals,我正在决定如何写我的收信人。我可以执行以下任一操作: 在一个接收器中为一个信号投入一切 将它们分离为多个接收器,一个信号用于 组织宗旨 我的问题是:这有什么不同吗?如果是,原因是什么? 备选案文1: 备选案文2: 选项1显然更加枯燥,但选项2允许更多的组织性和可读性,因此它们都有自己的优势。但真正的问题是,这真的很重要吗?最终它们都会起作用。然而,随着时间的推移,您可能会发现dou_-it_-all变得相当大,最终您会将其拆分为多个函数: @receiver(some_signal) def d
选项1显然更加枯燥,但选项2允许更多的组织性和可读性,因此它们都有自己的优势。但真正的问题是,这真的很重要吗?最终它们都会起作用。然而,随着时间的推移,您可能会发现
dou_-it_-all
变得相当大,最终您会将其拆分为多个函数:
@receiver(some_signal)
def do_it_all(sender, **kwargs):
do_something_for_table_one(sender, **kwargs)
do_something_for_table_two(sender, **kwargs)
do_something_for_table_three(sender, **kwargs)
在这种情况下,它与第二种选择没有什么不同
所以我认为第二种方法最终会带来更干净的代码。这也意味着您可以单独测试每个接收器。选项1和选项2之间有处理时间差吗?@RyanSaxe这个问题似乎回答了以下问题:
@receiver(some_signal)
def do_it_for_one(sender, **kwargs):
# do something for table 1
@receiver(some_signal)
def do_it_for_two(sender, **kwargs):
# do something for table 2
@receiver(some_signal)
def do_it_for_three(sender, **kwargs):
# do something for table 3
#...
@receiver(some_signal)
def do_it_all(sender, **kwargs):
do_something_for_table_one(sender, **kwargs)
do_something_for_table_two(sender, **kwargs)
do_something_for_table_three(sender, **kwargs)