将数据放入代码时使用技巧来保存程序员是否可以接受?

Cla*_*diu 10 python coding-style

示例:在python中键入字符串列表真的很烦人:

["January", "February", "March", "April", ...]
Run Code Online (Sandbox Code Playgroud)

我经常做这样的事情来节省我必须在整个地方键入引号:

"January February March April May June July August ...".split()
Run Code Online (Sandbox Code Playgroud)

那些花了相同的时间,我输入了2个月的数量.另一个例子:

[('a', '9'), ('4', '3'), ('z', 'x')...]
Run Code Online (Sandbox Code Playgroud)

代替:

map(tuple, "a9 43 zx".split())
Run Code Online (Sandbox Code Playgroud)

这花费的时间少得多.

rob*_*rob 33

代码通常被多次读取,并且只写一次.
除非您正在做一些丢弃代码,否则以牺牲可读性为代价来节省写入时间通常不是一个好的选择.

第二个版本不太明确,您需要一些时间来了解代码正在做什么.我们只是谈论变量实例化,而不是算法!

  • 月份示例易于阅读,第二个示例不易读取. (8认同)
  • 是的,我经常使用和批准(在代码评论和可读性评论中)"有些词在这里".split()的想法,但第二个我认为是严重不可读的. (5认同)

too*_*php 19

一个好的文本编辑器可以使这些事情成为无问题.例如,我可以在我的代码中键入以下行:

print `"January February March April May June July August September October November December".split()`
Run Code Online (Sandbox Code Playgroud)

然后使用键序列V:!python<ENTER>我可以通过python解释器运行该行,输出如下:

['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
Run Code Online (Sandbox Code Playgroud)

我正在使用Vim作为我的例子,但我确信这对于Emacs,TextMate等同样容易.

  • +1,不是针对特定的编辑器,而是使用Python解释器输出计算的数据结构表示. (3认同)

Nom*_*meN 6

在一个相当聪明的编辑器中,您可以:

  1. 选择感兴趣的行,
  2. 插入替换件(<space><space>第一个前的" "),
  3. 选中选中的行复选框,
  4. 点击全部替换,
  5. bam ..你做完了.

可读易于打字......尊重编辑的力量!


Nic*_*wis 5

总的来说,我认为这是一个坏主意.第一个例子并不糟糕(它可以替代python缺乏qw),但第二个例子更难以理解.特别是,我认为这种事情非常单一,但在编写Python代码时无论如何都不合适.代码可读性比节省编写代码的时间要重要得多.如果您真的需要很多数据来进行硬编码,请编写一个脚本来为您生成数据.