【问题标题】:Can I use Python indentation style for Java or C++?我可以为 Java 或 C++ 使用 Python 缩进样式吗?
【发布时间】:2013-02-21 10:13:55
【问题描述】:

我喜欢 Python 风格,因为它易于阅读和编写。使代码更短,避免不必要的字符,如';'或者 '{}'。但是,我需要在工作中使用 Java 和 C++。

我想知道是否有办法在这些语言中使用 Python 缩进规则。也许存在一个用于 Notepad++ 或 Eclipse 的插件,它会做这样的事情:

当我打开一个 file.java 时,更改 Java 缩进规则并使用 Python 规则格式化文件,以便我更容易阅读。当我编辑并保存它时,插件会添加所有的 ';'和 '{}' 再次让 JVM 理解。

我想你们中的一些人会认为这是一个糟糕的想法,但我只是想尝试一下。在我看来,学习一门新语言很有趣,但学习新的缩进规则只是无聊且无用。

【问题讨论】:

  • Python 是唯一具有缩进规则的语言(在我的脑海中)
  • @KarthikT Haskell 也是如此。而且大多数大括号分隔的语言都有一些文化强制缩进规则的方言(当然大多数大型项目都有他们喜欢的缩进样式)。

标签: c++ python eclipse-plugin notepad++ indentation


【解决方案1】:

您可以这样做,但这可能是个坏主意。坚持语言约定可以让您与其他开发人员共享代码。用制表符切换大括号会使任何想要修补代码的 C 专业人士感到困惑。

话虽如此,nobraces 将制表符转换为大括号:

无论如何,我仍然在嵌入式编程合同中大量使用 C, Tim Hatch 的 pybraces 启发了我为 C 写一个类似的东西 为 C 提供 Python 风格的缩进。

另请参阅 How Python affected my C/C++ brace style Eli Bendersky。

【讨论】:

  • 感谢您的链接,非常有趣。只是澄清我不想以任何不同的格式保存我的代码,只是将其可视化以进行读写。对于阅读我的代码的任何其他开发人员来说,代码仍然完全相同。
【解决方案2】:

虽然我不知道有任何这样的插件,但不一定有一种理智的方法可以做到这一点。 在某些情况下,没有主体的循环在 cpp 中是有意义的。分号清楚地表明了意图,没有它可能看起来像是一个缺失的标识。我认为你应该只使用额外的字符,如果你习惯了它们会增加可读性,特别是如果你有一个高亮匹配(对应的开始和结束)大括号/括号的编辑器。

既然 Java 和 cpp 允许您随意缩进代码,您仍然可以使用类似于 python 中的缩进。

为了完整起见,在 c 中没有主体的循环的两个示例:

等待特殊的微控制器寄存器切换:

while(magicRegister==1);

复制 c 风格的字符串(小心这容易出错(溢出)):

while(*(strptrcpy++) = *(strptrsrc++));

【讨论】:

  • 你不会真的把分号放在同一行吧? (如果这样做,则可以保证任何阅读您的代码的人都会错过它,并认为循环控制了以下行。)
  • @JamesKanze:实际上我个人也是这样做的,我也使用标识,并且我总是在有主体的情况下使用左大括号和右大括号,即使它只有一行代码.我想这可以说是品味问题。但我明白为什么人们可能想把分号放在新的一行。
猜你喜欢
  • 2023-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-02
  • 2011-02-06
  • 1970-01-01
相关资源
最近更新 更多