这是一个可能没有单一正确答案的问题,因为我确实意识到编码风格千差万别,尤其是在不同语言之间,例如 javascript 中的驼峰式函数名称与 C# 中的 pascal 大小写方法。我完全可以接受这一点。
也许我对此担心过度了,但我才刚刚开始研究 typescript ,非常喜欢它的外观并计划将它与 Angular2 一起使用,并希望建立一个好的风格指南。
我真正不明白的是第 2 点 here , 不要对接口(interface)使用 I 前缀。在此之前,我认为这几乎是普遍的。我有一个 Car 类,如果接口(interface)只是在前面添加一个 I,那么一个自然的名称... ICar。一看到 I 前缀,您就知道您有一个接口(interface)。
我想遵循任何建议的做法,但这个我真的不知道为什么要去做。
没有人知道为什么,我认为几乎是普遍的惯例,在这里不鼓励吗?我知道你可以使用任何你喜欢的约定,只是想知道是否有某种原因不在 Typescript 中使用这个通用约定。
提前感谢您的任何意见/信息!
最佳答案
I
作为前缀在某些时候对于 Java 和 C#(可能还有其他)来说很大,但我不认为这仍然被认为是一个好主意,但是如何改变被使用的东西大多数开发人员和现有代码库。
它类似于匈牙利符号,后者被普遍认为是不好的做法。只要给它一个有意义的名字。如果你有不同种类的 Car
而不是让 Car
成为通用接口(interface)和 class FancyCar implements Car
就自然多了。前缀之类的东西只会阻止人们思考他们真正想要表达的东西。另见 http://c2.com/cgi/wiki?IntentionRevealingNames
还有像 Dart 这样的语言(可能还有许多我不知道的其他语言)在 interface
和 class
之间没有如此明确的区别。在 Dart 中你可以实现任何类。类的接口(interface)只是作为一个interface
。
更新
我不是说命名很容易。事实上,我认为这是软件开发中最困难的部分,或者至少是最困难的部分。只是“精英”的普遍共识是,出于技术原因的前缀并不是最好的方法。这并不意味着存在只有优点而没有缺点的替代方案。在这种情况下,似乎使用了 UserService
、UserServiceImpl
、MockUserService
之类的命名。这种方式在代码的大部分部分都是使用 UserService
的最自然方式,并且仅在 prividers 中派生。否则,如上所述,一致性更为重要。如果某些样式在您使用的语言中更为常见,我建议您也将其用于您的代码。
关于接口(interface)的 Typescript 风格指南,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35774620/