我在使用angular2 +的lint,如何按字母顺序对构造函数参数进行排序?

问题描述 投票:0回答:2

我想在这里对构造函数参数进行排序。我现在将TSLINT与Angular9结合使用。有没有可以使用的规则,例如会员顺序。

constructor(
    // Sort these
    private readonly router: Router,
    private readonly _changeDetector: ChangeDetectorRef,
    private readonly favoritesService: FavoritesService,
    private readonly jsonService: JsonService,
    private readonly messageService: MessageService,
    public readonly helperService: HelperService,
    public readonly dialog: MatDialog,
    public readonly activatedRoute: ActivatedRoute,
  ) {
    //
  }

我当前正在使用这些规则,但是这些没有对构造函数参数进行排序。

"member-ordering": [
      true,
      {
        "alphabetize": true,
        "order": [
          "private-static-field",
          "protected-static-field",
          "public-static-field",

          "private-instance-field",
          "protected-instance-field",
          "public-instance-field",

          "private-constructor",
          "protected-constructor",
          "public-constructor",

          "private-static-method",
          "protected-static-method",
          "public-static-method",

          "private-instance-method",
          "protected-instance-method",
          "public-instance-method"
        ]
      }
    ],
javascript angular lint tslint
2个回答
0
投票

检查此规则:https://palantir.github.io/tslint/rules/member-ordering/

然后您可以将此规则添加到您的配置中:

"member-ordering": [
  true,
  {
    "alphabetize": true,
    "order": [
      "public-static-field",
      "public-instance-field",
      "public-constructor",
      "private-static-field",
      "private-instance-field",
      "private-constructor",
      "public-instance-method",
      "protected-instance-method",
      "private-instance-method"
    ]
  }
]

它也具有自动修复功能。


0
投票

这实际上不是问题的答案,但我仍然认为值得一提:

不要太在意构造函数参数的顺序

IMO,您不应该过多地关注构造函数中的参数顺序-尤其是如果您永远不会自己调用它,因为Angular会为您处理它。

Here,您可以找到有关该主题的扩展讨论。

如果您想遵循现有的API或公开公开您的功能并希望使其更加简洁,那么排序可能很重要。在常规函数中,排序可能使理解函数调用更容易,或者只是感觉“更自然”。所有这些都不适用于没有人会调用的构造函数。

按字母顺序对参数进行排序不会增加代码的可读性。

请考虑以下两个片段:

constructor(
  private readonly router: Router,
  private readonly _changeDetector: ChangeDetectorRef,
  private readonly favoritesService: FavoritesService,
  private readonly jsonService: JsonService,
  private readonly messageService: MessageService,
  public readonly helperService: HelperService,
  public readonly dialog: MatDialog,
  public readonly activatedRoute: ActivatedRoute,
) {}

vs。

constructor(
  private readonly _changeDetector: ChangeDetectorRef,
  public readonly activatedRoute: ActivatedRoute,
  public readonly dialog: MatDialog,
  private readonly favoritesService: FavoritesService,
  public readonly helperService: HelperService,
  private readonly jsonService: JsonService,
  private readonly messageService: MessageService,
  private readonly router: Router,
) {}

其中哪个更好?如果有的话,它将是第一个,因为它将privatepublic声明保持在一起。

其他订购选项

如果您坚持要整理论据,我会想到两种可能性

  1. 与组相关的参数(例如,router和activatedRoute)
  2. 按框架分组与自己分组

tsLint

据我所知-并在最后一分钟尝试搜索google-没有规则可以帮助您实现目标-破坏了我的论点,即似乎没有人需要它。

© www.soinside.com 2019 - 2024. All rights reserved.