【问题标题】:Is there an IDE/plugin for automatic curly brace formatting or spacing? [closed]是否有用于自动花括号格式或间距的 IDE/插件? [关闭]
【发布时间】:2012-03-30 19:30:19
【问题描述】:

我在考虑旧的holy war that is curly brace placement,并认为这与其说是程序员的问题,不如说是 IDE 的问题。

大多数 C 风格的编程语言* 支持程序员想要的任何间距和对齐方式的混搭:

foo(bar, baz) {
  fizz();
  buzz();
}

在功能上等同于:

foo(bar, baz)
{
    fizz();
    buzz();
}

在功能上等同于:

foo(bar,baz){fizz();buzz();}

没有人对此提出质疑,但程序员仍然倾向于对正确的格式存在分歧。

因为它是这样的用户偏好,所以我认为如果有一个 IDE 可以自动将编写的代码重新排列为用户偏好指定的格式,同时保持原样:

foo
(
bar
,
baz
)
{
fizz();
buzz();
}

会自动格式化为:

foo(bar, baz)
{
    fizz();
    buzz();
}

或任何你喜欢的东西不改变原始代码(或者可能在保存时自动将其转换为不同的格式)...

然后我意识到我不可能有一个原创的想法。

所以问题的关键在于这个功能是否已经存在,而我根本没有找到它,或者它是否不存在,我需要制作它。


* 我通常使用 JavaScript、CSS、C# 和 PHP 编写代码;显然这对于​​ Python 这样的语言来说是没有用的。

【问题讨论】:

  • 曾经有一个不错的小工具叫做“cb”,“C Beautifier”可以做那种事情

标签: code-formatting programming-tools


【解决方案1】:

它们被称为(代码)“格式化程序”或“美化器”,周围有很多,有些甚至内置在您最喜欢的 IDE 中。

他们遇到的最大问题是坚持微观格式属性的人,以及程序员之间关于什么是好的布局几乎是宗教战争的分歧。我称之为“艺术”问题:每个人都喜欢他的,不喜欢别人的。

通常这意味着该组无法就格式达成一致,因此不会发生格式化,最终会得到格式错误的代码。我个人觉得这很惊人。为组织选择几乎任何风格我认为是一种胜利,因为现在每个人都知道会发生什么。考虑到程序员花费 50% 的时间阅读代码,这在我看来是一种严重的浪费。

AStyle 被广泛使用。它有很多选择,所以即使是脾气暴躁的人也可以得到他们想要的格式。

其中大部分基于临时字符串黑客技巧。例如,使用正则表达式查找关键字和特殊语法,例如花括号。以这种方式构建基本格式化程序非常容易。如果这种字符串黑客不能完全理解语言语法(如果花括号在字符串文字等中转义怎么办),它们可能会损坏您的代码(通常通过插入虚假语法错误,有时通过破坏以更微妙的方式编码),因此格式化后重新编译并验证格式化的模块很重要。

我的公司制作了unusual variety of formatters for programming languages based on parsing and regenerating the language text。这些工具具有无法破坏您的代码的特性(除非我们在构建解析器前端时出错,这比使用正则表达式的人更不可能发生)。因此,您可以在整个代码库中运行它们,而不必担心破坏任何东西。

我们的选项往往比 Astyle 少,尽管其中许多选项可以让您在各种“典型”位置放置大括号(如果在该语言中很重要,例如 PHP 或 Java)。但即使是像 Python 这样的无大括号语言也可以对大括号以外的内容进行布局规则,例如如何缩进复合条件表达式等。我们的工具通常有这些。

【讨论】:

    猜你喜欢
    • 2012-10-07
    • 2021-09-17
    • 2012-02-16
    • 1970-01-01
    • 2010-10-06
    • 2012-01-18
    • 2011-07-28
    • 2012-09-21
    • 2013-07-18
    相关资源
    最近更新 更多