为什么现在有 2 个空格缩进

SwiftUI 時代に向けた 2 スペースインデントのすゝめ

编写代码的空间更少



所以我最近开始了一个新的 SwiftUI 项目,缩进为 2 个空格。

这似乎是一种很好的感觉,所以本文将推荐 2 个空格缩进。

  • 已通过 5K2K 显示器解决
  • 预览几乎没用,所以在需要时使用 ⌥⌘↩ 隐藏画布 + 显示
  • 首先,如果窝很深,应该单独剪掉

可能有些话你想说,但如果你有兴趣,请联系。

2 空间缩进的优缺点

? 节省代码宽度

这是最大的优势。

开头提到,SwiftUI 中的预览显示是和代码编辑器部分并排显示的1因此,宽度变得有价值。

由于缩进量由4个空格变为2个空格,简单的效果就是将缩进部分的宽度缩小50%,效果会更大。

事实上,声明式 UI 的前身,如 React 和 Flutter,大多采用两格缩进。

? 易于遵循的代码

这将是一个直观的故事,但我觉得 2 空格缩进更容易在 SwiftUI 中遵循代码。

这是因为在 SwiftUI 中,每行数的缩进和缩进的频率往往会增加,而当你沿着代码从上到下向下看时,你将不得不左右移动眼睛,这将是一种负担. 增加。

具体来说,代码如下。

HStack {
    Image(systemName: "person.circle")
    VStack {
        Text("John Doe")
        if isVerified {
            Label {
                Text("Verified")
            } icon: {
                Image(systemName: "checkmark.seal")
            }
            .foregroundColor(.green)
        } else {
            Button {
                verify()
            } label: {
                Label {
                    Text("Verify")
                } icon: {
                    Image(systemName: "arrow.clockwise")
                }
                .foregroundColor(.blue)
            }
        }
    }
}

如果将其缩进 2 个空格,它将如下所示,并且感觉更容易理解。

HStack {
  Image(systemName: "person.circle")
  VStack {
    Text("John Doe")
    if isVerified {
      Label {
        Text("Verified")
      } icon: {
        Image(systemName: "checkmark.seal")
      }
      .foregroundColor(.green)
    } else {
      Button {
        verify()
      } label: {
        Label {
          Text("Verify")
        } icon: {
          Image(systemName: "arrow.clockwise")
        }
        .foregroundColor(.blue)
      }
    }
  }
}

? 层次判断变得模棱两可

代码之所以缩进,是为了让层次结构可见,如果缩进量减少,这自然就变得暧昧了。

另一方面,现代开发环境在 IDE 方面有很好的支持,例如 VSCode

  • 每个压痕级别的垂直构造线
  • 以相同颜色显示配对的括号

支持功能,如作为标准包括在内。

即使在 Xcode 中很微妙有一些功能可以提供视觉支持,例如代码折叠功能区。

SwiftUI 時代に向けた 2 スペースインデントのすゝめ

? 标准 4 空格缩进

  • Xcode 默认设置
  • 苹果官方样例工程

等等,首先采用4个空格缩进,那么标准设置是什么?如果你问我,我认为这将是 4 个空格缩进。

2 如何引入空格缩进

从这里开始,我将描述当您实际尝试引入 2 空格缩进时如何响应。

Xcode 项目

Xcode 不支持 EditorConfig,而是允许您使用以下 3 种模式更改缩进设置。
(由.xcodeproj管理)

  • 配置 Xcode 本身
  • 按项目设置
  • 按文件设置

具体的优先顺序如下:每个文件 > 每个项目 > Xcode 本身。

由于可以为每个文件更改缩进宽度,因此可以部分引入两个空格的缩进。

Xcode 本身的设置

可从首选项 → 文本编辑 → 缩进进行配置。

SwiftUI 時代に向けた 2 スペースインデントのすゝめ

除非被每个项目设置或每个文件设置覆盖,否则它将在全局范围内生效,因此这里可能没有太多设置。

每个项目的设置

打开项目后,您可以在右侧的 Inspectors View → Text Editing 中进行设置。

SwiftUI 時代に向けた 2 スペースインデントのすゝめ

我认为将它作为一个项目作为编码约定来管理是很自然的,所以如果你决定使用 2 空格缩进,我想你会在这里设置它。

*注意,如果Xcode本身的设置和每个项目的设置相同,可能不会写入.xcodeproj端。

每个文件设置

与每个项目的设置一样,可以在打开指定文件的情况下从右侧的 Inspectors View → Text Editing 进行设置。

在这种情况下,缩进设置仅反映在目标文件中,因此可以处理一个精细的范围,例如暂时只想将 SwiftUI 相关文件缩进 2 个空格。

如果您使用的是 XcodeGen

.xodeproj 不在我的直接控制之下。XcodeGen我已经用?生成了它,请放心。

XcodeGen 也有一个选项存在。

SwiftUI 時代に向けた 2 スペースインデントのすゝめ

在 yaml 文件中,可以生成缩进宽度(+制表符宽度)为 2 的.xcodeproj,描述如下。

项目.yml
name: ProjectName
options:
  indentWidth: 2
  tabWidth: 2

如果您使用的是 SwiftFormat

"快速格式它最终会回到 4 个空格 ?"

美好的。 SwiftFormat 也有选项有。

2 如果要指定空间,可以直接在 CLI 上指定以下内容,也可以将其添加到.swiftformat

--indent 2

相反,SwiftFormat 支持指定缩进宽度,因此如果您决定一次性迁移所有内容,您可以考虑一次性全部替换为 SwiftFormat。

毕竟,很难说服别人

  • 如上所述,Apple 更喜欢 4 空格缩进
  • 容易产生徒劳的宗教争议

由于这些原因,我认为在实际引入 2 空间缩进时存在各种障碍。

最后,我将介绍一种用于采用 2 空格缩进的强有力的说服材料。

Google 的 Swift 编码约定是 2 个空格缩进

没有明确的描述indentation width是2,但是如果你搜索"+2",我认为有类似的描述。

事实上,Firebase iOS SDK 是 2 个空格缩进的。

综上所述

老实说,我认为压痕宽度与您实际尝试后的感受有很大关系。
包括对错,体验一次2个空格缩进怎么样?

  1. 也可以用Canvas on Bottom上下显示


原创声明:本文系作者授权爱码网发表,未经许可,不得转载;

原文地址:https://www.likecs.com/show-308627166.html

相关文章: