将大型文件拆分成多个部分

Avatar of Chris Coyier
Chris Coyier 发表

DigitalOcean 为您旅程的每个阶段提供云产品。 立即开始使用 200 美元的免费额度!

这是一个包含 2000 行代码的庞然大物。 在其中浏览或轻松查找所需内容很困难。 可以做什么? 本文并非关于实际拆分文件(尽管那也是一个好文章),主要是在您需要保持文件原样时应该采取的措施。

不要创建如此大的文件

理想情况下,您不会让文件变得太长。 文件越长,它就越有可能成为一个垃圾场,而不是机器中一个合适的齿轮。

这里我们指的是编写的文件。 您的生产 `style.css` 文件可能确实很长,但它可能是由较小的部分编译而成的,并组织成有意义的部分。

如果您的编写文件已经太长,您能否找到一种有意义的方法将其拆分? 如果可以,这可能是个好主意。 也许您的庞大 `user_controller.rb` 可以拆分成多个关注点,主控制器可以继承这些关注点。

抽象在起作用!

但假设由于某种原因,在您的项目中拥有一个超长文件是有意义的。 它需要以这种方式存在,并且您需要一种方法使其更易于管理。 也许我们可以稍微玩弄一下。

ASCII 艺术块

如果您在文件中进行了大量上下滚动,那么在各部分之间放置大量空格可能会有所帮助。 然后,如何使用一个大型的带注释的 ASCII 艺术文本 块来标记该部分?

  ______                       
 |  ____|                      
 | |__ ___  _ __ _ __ ___  ___ 
 |  __/ _ \| '__| '_ ` _ \/ __|
 | | | (_) | |  | | | | | \__ \
 |_|  \___/|_|  |_| |_| |_|___/

如果您使用带有“迷你地图”的编辑器,这些内容确实会脱颖而出,正如 Xah Lee 指出的那样。

注释块

也许只是空格和大型注释代码块脱颖而出,因此,与其追求花哨的艺术效果,不如变得实用一些,并使用元数据标记每个部分。

/*

  Section: Form Styles
  Purpose: To style form elements like <input>s and <button>s and such.

  Author: Chris Coyier
  Last updated: September 28, 2015
  Favorite TV Show: Northern Exposure

*/

奇怪的缩进

代码倾向于聚集在左侧。 当事物缩进很远而没有导致它的嵌套时,它看起来很奇怪。 也许您可以利用它来发挥自己的优势。

.main-header {
  background: black;
  color: white;
}

              // *****************
              // -----------------
              // FOOTER STYLES
              // _________________
              // *****************

.main-footer {
  background: white;
  color: black;
}

长行

尤其是在您没有打开换行/软换行的情况下,超长行可以很好地分割内容。

// XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

您可以搜索的内容

如果您使用了命名部分的约定,那么在项目(或项目的部分或单个文件)中进行搜索将产生良好的结果,以查找这些部分。

搜索比滚动快得多!

使用代码折叠功能

如果您的编辑器具有代码折叠功能,请使用它! 它的全部意义在于暂时隐藏代码块,使其不会分散注意力。

源代码映射

如果您使用的是编译成浏览器使用的其他内容的语言(例如 Sass、CoffeeScript、Closure 编译器等),它可能会提供源代码映射,这意味着 DevTools 可以告诉您代码片段在原始编写文件中的哪一行,而不仅仅是编译版本。 这样您就知道需要转到哪个文件进行编辑。

并且您也了解哪一行,因此无论它在哪里,您都可以直接跳转到它。

您的编辑器是否以特殊方式为您提供帮助?

您的编辑器在“在项目中查找”功能方面是否非常出色,可以将您直接跳转到该行? 使用它!

您的编辑器是否有其他酷炫的方法在文件中四处跳转? 我知道“转到符号”在 Sublime Text 中非常受欢迎,并且 Jetbrains 也有此功能(我相信许多其他编辑器也有)。

您的编辑器(或插件)是否有某种方法可以通过代码部分进行制表? 试试看!