【问题标题】:using block scopes to organize complex code [closed]使用块范围来组织复杂的代码
【发布时间】:2020-04-26 17:30:58
【问题描述】:

我正在构建一个 three.js 库,发现在 {} 中的注释下方放置 cmets 和嵌套内容可以轻松浏览大量代码。我想知道是否有其他更好的方法来做到这一点。

我为什么要这样做

  1. 主要原因:我可以根据我在块作用域上方看到的 cmets 快速折叠代码。从而可以轻松地专注于我想要更改的代码。

  2. 我只会在类初始化或非常复杂的方法中使用它。或者更确切地说,任何有重要代码的区域都使用这些区域的适用标签。

  3. 如果没有相应的注释,我绝不会确定某个部分的范围。

  4. 这有助于我扩展这些不同的部分,特别是如果它们不能在合理范围内扩展到新的类或对象时

  5. 我知道代码库的一个常见问题是它们可能会让人不知所措,尤其是在学习它们时。我认为这种组织代码的方式可以帮助它更平易近人,不那么让人难以接受

  6. 如果 IDE 中有一个功能可以做这样的事情,我会很高兴

使用示例:

已折叠:

未折叠:

已折叠:

未折叠

我还认为这是对重构的恭维,无论是抽象成函数还是更多类。这似乎很灵活,并且可以处理代码库中的不确定性,特别是如果您需要以不符合新类或新方法的方式将问题解决方案巧妙地分层。

【问题讨论】:

  • 你在使用模块系统/打包器(比如 Webpack)吗? (如果不是,你可能应该,它真的有助于代码组织更专业的代码,当它不是很短的时候)
  • 您还可以将功能提取到单独的函数/方法中,因此您将拥有 baseWebWorkers(); handleMobile(); baseLoadingManager() 等。虽然您在这里拥有的基本上是来自 C# 的 #region 指令 - 它完全符合您的要求这里有,你表示一个可折叠的区域,你可以评论它是关于什么的
  • @CertainPerformance 是的,我将它与 eslint 一起使用。对于这个项目,我也有相当复杂的 webpack 配置。正在导入和导出类,这很好。但不要解决这个项目本身的特殊需求
  • 我也建议使用单独的函数方法 - 将代码放入单独文件中的函数中,然后导入函数并在构造函数中调用它们。当您需要检查/修改代码的特定部分时,请转到相应的文件。
  • @VLAZ 非常酷的 c# 功能!但是,将很多东西推向功能不会变得混乱吗?函数没有多层,我发现在其中调用函数的函数会变得非常混乱和令人沮丧。

标签: javascript scope comments documentation


【解决方案1】:

我会说最好分解成单独的功能。添加不必要的块可能会对未来的维护者产生令人惊讶的后果。许多编辑器支持在 cmets 中使用特殊语法来帮助代码折叠和导航,而无需更改语法树。

[编辑] 虽然我真的是只使用 Emacs 的人 (TM),但 Vscode 的文档 (https://code.visualstudio.com/docs/editor/codebasics) 提出了一些类似的建议

//#region

【讨论】:

  • Regions 似乎是一个很好的选择。感谢您分享这个,我有时在 C++ 代码中看到它们,但直到现在才理解其目的!干杯
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-08
  • 2020-02-22
  • 1970-01-01
  • 1970-01-01
  • 2016-11-13
相关资源
最近更新 更多