这是一个可能没有一个正确答案的问题,因为我确实意识到编码风格是相当不同的,特别是在不同的语言之间,例如javascript中的驼峰大小写函数名称与C#中的pascal大小写方法。我完全可以接受这一点。
也许我对此过于担心了,但我才刚刚开始研究typescript,我真的很喜欢它的外观,并计划将其与Angular2一起使用,并希望建立一个好的样式指南。
我真正不明白的是第二点here,而不是使用i前缀作为接口。在此之前,我认为这几乎是普遍的。我有一个类汽车,所以如果接口只是在前面添加一个i,那么就是一个自然的名称…ICar。只要你看到i前缀,你就知道你有了一个接口。
我想遵循任何建议的做法,但这一次我真的不知道为什么要这样做。
没有人知道为什么,我认为几乎是普遍的惯例,在这里是不鼓励的?我知道你可以使用任何你喜欢的约定,只是想知道是否有什么原因不在Typescript中使用这个通用约定。
提前感谢您的任何意见/信息!
发布于 2016-03-03 22:23:50
作为前缀的I在某些时候对Java和C# (可能也是其他语言)来说很重要,但我不认为这仍然是一个好主意,但是如何改变大多数开发人员和现有代码库使用的东西。
它类似于匈牙利符号,后者被普遍认为是不好的做法。只需给它一个有意义的名字。如果你有不同种类的Car,那就让Car成为通用接口,而class FancyCar implements Car要自然得多。像前缀这样的东西只会阻止人们去思考他们真正想要表达的东西。另请参阅http://c2.com/cgi/wiki?IntentionRevealingNames
还有一些语言,如Dart (可能还有许多我不知道的语言),在interface和class之间没有明确的区别。在Dart中,您可以实现任何类。这个类的接口只是充当一个interface。
更新
我并不是说命名很容易。事实上,我认为这是软件开发中最困难的部分,或者至少是最困难的部分。只是“精英”的普遍共识是,出于技术原因,前缀并不是最好的方法。这并不意味着存在只有优点而没有缺点的替代方案。在这种情况下,似乎使用了UserService,UserServiceImpl,MockUserService这样的名称。在代码的大多数部分中,这种方式最自然地使用了UserService,而派生函数只在prividers中使用。否则,如上所述,一致性是更重要的。如果某些风格在您使用的语言中更为常见,我建议在您的代码中也使用这种风格。
发布于 2017-02-06 17:12:36
类似的问题在这里被问到Confused about the Interface and Class coding guidelines for TypeScript
我的答案是:https://stackoverflow.com/a/41967120/586609
原因:
匈牙利符号的时代有passed
发布于 2016-03-04 01:54:11
没有理由去做或不去做某件事,只因为它是惯用的。如果你想让你的代码适合你,你可以在你正在使用的语言中遵循其他所有人都遵循的规则,并且不要去想它(或者选择另一种语言)。
至于为什么不加一个前缀,有三个非常好的理由:
class关键字时隐式创建的,也是在使用type关键字时创建的。因此,通过向显式声明的接口添加前缀,现在您就有了一些带有前缀的接口(那些您自己用前缀创建的接口),再加上更多没有前缀的接口。这很容易混淆,而且inconsistent.I前缀只是另一种形式的系统匈牙利符号;说类型就是接口对编写代码的人来说没有提供任何额外的信息。https://stackoverflow.com/questions/35774620
复制相似问题