首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我使用的是angular2+,如何按字母顺序对构造函数参数进行排序?

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

Stack Overflow用户
提问于 2020-06-03 15:22:26
回答 2查看 205关注 0票数 0

我想在这里对构造函数参数进行排序。我现在正在与Angular9一起使用TSLINT。是否有任何规则可以使用,如成员排序。

代码语言:javascript
复制
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,
  ) {
    //
  }

我目前正在使用这些规则,但这些规则不对构造函数参数排序。

代码语言:javascript
复制
"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"
        ]
      }
    ],
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-03 16:15:43

这并不是对这个问题的回答,但我仍然认为这是值得一提的:

不要过于关注构造函数参数的顺序。

海事组织,你不应该过分关注构造函数中的参数顺序,尤其是如果你永远不会自己调用它的话,因为角将为你处理这个问题。

这里,您可以找到关于该主题的扩展讨论。

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

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

考虑以下两个片段:

代码语言:javascript
复制
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,
) {}

代码语言:javascript
复制
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. 与组相关的参数(例如路由器和activatedRoute)
  2. 按框架分组相对于自己

TSLint

据我所知--并且在最后几分钟尝试谷歌--没有任何规则能帮助你实现你的目标--这破坏了我的论点--似乎没有人认为有必要这么做。

如果您确实希望强制执行该规则,请查看创造你自己的规则

票数 0
EN

Stack Overflow用户

发布于 2020-06-03 15:35:44

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

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

代码语言:javascript
复制
"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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62176557

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档