【问题标题】:How to refactor the code to make each of lists in source code sorted?如何重构代码以使源代码中的每个列表都排序?
【发布时间】:2020-01-01 01:06:37
【问题描述】:

明确地说,我不是在问如何在运行时对列表进行排序。我想修改源代码。

本质上,我想尽可能少地重构以下代码。我在代码库中有很多硬编码的长列表,所以手动对它们进行排序很乏味,

我能想到的一个选择是使用Sorted 将所有列表封装在代码中。

t = ["therock","hollywood","rockbottom","inyourhouse"]
Sorted([t])

但我正在寻找无需添加额外代码循环、运行其他脚本或通过代码编辑器扩展或通过代码库顶部的任何命令来自动格式化它的选项的方法。

t = ["therock","hollywood","rockbottom","inyourhouse"]

应该变成

t = ["hollywood","inyourhouse","rockbottom","therock"]

【问题讨论】:

  • 在任何情况下,软件推荐请求在这里都是明确的题外话。
  • 为什么不直接写t = sorted(["therock","hollywood","rockbottom","inyourhouse"])
  • 不是软件记录?您要求一个指向可以执行此操作的 python 代码格式化程序的指针。我实际上怀疑有什么,这不是格式化,而是重写。
  • 添加到@Barmar:这不仅仅是格式化,因为列表有order。更改该顺序会更改列表的含义和行为,这不像对导入进行排序(在没有异常情况的情况下不应该改变行为)。
  • 伙计们,我确实有一个关于主题的答案,但我无法发布它,因为问题很快就结束了。我正在提名要重新打开的问题,以便我可以发布我的答案。

标签: python python-3.x code-formatting


【解决方案1】:

你的问题可能为时已晚,但我通常喜欢这样写列表文字:

t = [
    'therock',
    'hollywood',
    'rockbottom',
    'inyourhouse'
]

我认为这使得一目了然地区分项目更容易,而且它也很适合在编辑器中进行基于行的文本操作。例如,使用 vim,我会通过在可视模式下选择行并使用 :sort 来对行进行排序。

【讨论】:

  • 是的,很好的答案。为了补充您的答案,因为这是一个遗留代码库,所以首先要以垂直形式获得它,我需要一个格式化程序来执行此操作,只是发现github.com/psf/black 默认情况下正在执行此操作,然后您的步骤。帅气的男人。但是要一次对整个代码库中的所有数组进行排序,我将不得不编写脚本。如果您遇到任何此类脚本/插件/cli,请告诉我们
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-24
  • 2010-10-14
  • 1970-01-01
  • 2015-07-31
  • 1970-01-01
  • 1970-01-01
  • 2019-07-12
相关资源
最近更新 更多