首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >界面的Typescript样式指南

界面的Typescript样式指南
EN

Stack Overflow用户
提问于 2016-03-03 22:16:21
回答 4查看 11.9K关注 0票数 11

这是一个可能没有一个正确答案的问题,因为我确实意识到编码风格是相当不同的,特别是在不同的语言之间,例如javascript中的驼峰大小写函数名称与C#中的pascal大小写方法。我完全可以接受这一点。

也许我对此过于担心了,但我才刚刚开始研究typescript,我真的很喜欢它的外观,并计划将其与Angular2一起使用,并希望建立一个好的样式指南。

我真正不明白的是第二点here,而不是使用i前缀作为接口。在此之前,我认为这几乎是普遍的。我有一个类汽车,所以如果接口只是在前面添加一个i,那么就是一个自然的名称…ICar。只要你看到i前缀,你就知道你有了一个接口。

我想遵循任何建议的做法,但这一次我真的不知道为什么要这样做。

没有人知道为什么,我认为几乎是普遍的惯例,在这里是不鼓励的?我知道你可以使用任何你喜欢的约定,只是想知道是否有什么原因不在Typescript中使用这个通用约定。

提前感谢您的任何意见/信息!

EN

回答 4

Stack Overflow用户

发布于 2016-03-03 22:23:50

作为前缀的I在某些时候对Java和C# (可能也是其他语言)来说很重要,但我不认为这仍然是一个好主意,但是如何改变大多数开发人员和现有代码库使用的东西。

它类似于匈牙利符号,后者被普遍认为是不好的做法。只需给它一个有意义的名字。如果你有不同种类的Car,那就让Car成为通用接口,而class FancyCar implements Car要自然得多。像前缀这样的东西只会阻止人们去思考他们真正想要表达的东西。另请参阅http://c2.com/cgi/wiki?IntentionRevealingNames

还有一些语言,如Dart (可能还有许多我不知道的语言),在interfaceclass之间没有明确的区别。在Dart中,您可以实现任何类。这个类的接口只是充当一个interface

更新

我并不是说命名很容易。事实上,我认为这是软件开发中最困难的部分,或者至少是最困难的部分。只是“精英”的普遍共识是,出于技术原因,前缀并不是最好的方法。这并不意味着存在只有优点而没有缺点的替代方案。在这种情况下,似乎使用了UserServiceUserServiceImplMockUserService这样的名称。在代码的大多数部分中,这种方式最自然地使用了UserService,而派生函数只在prividers中使用。否则,如上所述,一致性是更重要的。如果某些风格在您使用的语言中更为常见,我建议在您的代码中也使用这种风格。

票数 14
EN

Stack Overflow用户

发布于 2017-02-06 17:12:36

类似的问题在这里被问到Confused about the Interface and Class coding guidelines for TypeScript

我的答案是:https://stackoverflow.com/a/41967120/586609

原因:

匈牙利符号的时代有passed

  • I-prefix违反了封装,principle

  • Protection来自坏的naming

  • Properly选择的名字让你远离设计的迷思:接口作为契约。
票数 5
EN

Stack Overflow用户

发布于 2016-03-04 01:54:11

没有理由去做或不去做某件事,只因为它是惯用的。如果你想让你的代码适合你,你可以在你正在使用的语言中遵循其他所有人都遵循的规则,并且不要去想它(或者选择另一种语言)。

至于为什么不加一个前缀,有三个非常好的理由:

  1. 接口是在使用class关键字时隐式创建的,也是在使用type关键字时创建的。因此,通过向显式声明的接口添加前缀,现在您就有了一些带有前缀的接口(那些您自己用前缀创建的接口),再加上更多没有前缀的接口。这很容易混淆,而且inconsistent.
  2. Types (接口)和代码存在于编译器中独立的名称空间中,因此您不能将类型名称和变量名称冲突。因此,没有理由试图通过添加前缀来使接口名称唯一。them.
  3. I前缀只是另一种形式的系统匈牙利符号;说类型就是接口对编写代码的人来说没有提供任何额外的信息。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35774620

复制
相关文章

相似问题

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