Questions tagged «naming-standards»

17
为了清楚起见,编码标准:注释每一行代码?
我曾在一家生产至关重要的软件的商店工作过,还处理过一些注释规则,这些规则旨在保持代码的可读性并可能挽救生命。以我的经验,尽管要求变成了脑筋急转弯的工作,需要从清单中剔除,但这并不能帮助我专注于编写可理解的代码。这也分散了我的同行审阅者的注意力,使我无法就如何使代码更易于理解进行更有意义的对话。 我还对没有注释的学生代码进行了评分,并查看了为什么应将它们标记为忽略它们。 我知道使用好名,使结构简单,函数简短,并关注模块将使代码易于理解,从而可以最小化注释。 我也理解注释应该解释为什么代码会执行此操作,而不是如何执行。 鉴于所有这些,甚至有可能编写出能够抓住这一想法的良好编码标准?与同行评审有关但不会变成漫不经心的清单活动,不会产生比以下内容更有用的注释:“您忘了在第42行发表评论”。 在清单中被视为一行时,此规则可能需要的代码示例: /* Display an error message */ function display_error_message( $error_message ) { /* Display the error message */ echo $error_message; /* Exit the application */ exit(); } /* -------------------------------------------------------------------- */ /* Check if the configuration file does not exist, then display an error */ /* …

2
Python文件命名约定?
我已经看到了PEP-8的这一部分https://www.python.org/dev/peps/pep-0008/#package-and-module-names 我不清楚这是否指向模块/类/包的文件名。 如果我每个都有一个示例,文件名是否应该全部使用小写并带有下划线?或者是其他东西?

8
命名问题:“ Isomething”是否应重命名为“ Something”?[关闭]
Bob叔叔在“ 干净代码”中有关名称的章节中建议您避免使用名称编码,主要是关于匈牙利表示法。他还特别提到I从接口中删除前缀,但没有显示此示例。 让我们假设以下内容: 接口的使用主要是通过依赖注入实现可测试性 在许多情况下,这导致与单个实施者具有单个接口 因此,例如,这两个应命名为什么?Parser和ConcreteParser?Parser和ParserImplementation? public interface IParser { string Parse(string content); string Parse(FileInfo path); } public class Parser : IParser { // Implementations } 还是在这样的单一实现案例中忽略该建议?

1
Swift协议命名约定
来自主要是C#的背景,我习惯于使用术语“接口”来描述对象,而该对象没有定义行为的实现。在c#中,惯例是在接口名称前加上“ I”,如IEnumerable等等。 当然,该概念在不同的语言中具有不同的名称。在Swift中,相同的概念称为“协议”。在开发协议时,我经常为协议和实现它的类有非常相似的名称。到目前为止,我一直在将“ protocol”一词附加到这些对象上,就像在c#中使用“ I”一样,在EnumerableProtocol等等中。 对快速命名协议的约定有何想法?


9
如何命名既执行任务又返回布尔值作为状态的方法?
如果有办法 bool DoStuff() { try { // doing stuff... return true; } catch (SomeSpecificException ex) { return false; } } 它应该被称为IsStuffDone()吗? 用户可能会误解这两个名称:如果名称是DoStuff()为什么它返回布尔值?如果名称IsStuffDone()不明确,则该方法是执行任务还是仅检查其结果。 这种情况有约定吗?还是一种替代方法,因为这被认为是有缺陷的?例如,在具有输出参数的语言(如C#)中,可以将布尔状态变量作为1传递给方法,而方法的返回类型为void。 编辑:在我的特定问题中,异常处理不能直接委托给调用者,因为该方法是接口实现的一部分。因此,调用者不必负责处理不同实现的所有异常。它不熟悉那些例外。但是,调用者可以处理自定义异常,如npinti的answer和comment中StuffHasNotBeenDoneForSomeReasonException建议的那样。

3
Readme.txt与README.txt
我刚刚在Github中创建了一个项目,进行了更改等。这使我感到奇怪:我在开源项目中主要看到README.txt,而我编辑的文件是Readme.txt。这是某种形式的标准化还是我应该保留它?

2
为什么软件使用Win32名称?
如果软件/库对Windows平台有某种支持,则它们几乎总是将其目录和变量命名为win32。这在C / C ++项目中最为普遍。甚至MinGW项目的目标是三重用途win32。是否有一个原因?为什么不使用Windows或Microsoft Windows这样的专有名称?命名选择是否存在法律障碍? 这个问题不是关于API的,而是正在使用的命名约定。当一个库支持其他操作系统时,它们通常使用适当的名称,例如linux,freebsd或需要的任何特殊支持。但是当涉及到Windows时,它通常被缩写为win32,与其他语言相比显得有些奇怪。

2
为什么XMLHttpRequest似乎没有遵循命名约定?
我最近一直在使用JavaScript 处理XMLHttpRequest对象,我不禁注意到该名称的大小写毫无意义。为什么“ XML”全部大写而“ Http”没有大写?他们都是缩写! 当然,将名称用作以下内容之一会更有意义: XmlHttpRequest (PascalCase,JavaScript中类名的最佳实践) xmlHttpRequest (camelCase,虽然不是类,但也很常见) XMLHTTPRequest (大写字母缩写,很少在编程中使用?) 我敢肯定一定有一些原因,并且我不愿意认为它现在是一成不变的,因为当时没有人对此提出质疑。我没有意识到另一种命名约定吗?

2
为什么惯例说数据库表名应该是单数而RESTful资源应该是复数?
至少在SQL中,数据库表名称应为单数,这是一个非常明确的约定。SELECT * FROM user;请参阅此问题和讨论。 RESTful API资源名称应为复数形式,这也是一个相当明确的约定。GET /users/123并POST /users看到这个。 在最简单的数据库支持的API中,URL中的资源名称将是表,URL中的数据元素和请求/响应主体将直接映射到DB中的列。从概念上讲,我认为通过此理论API对数据进行操作与直接通过SQL对数据进行操作之间没有区别。因此,user和之间的命名约定差异users对我来说没有意义。 从概念上来说,当REST API和SQL做相同的事情时,如何证明多元化的合理性?

6
C#的Pascal套管方法名称背后的原理/原因是什么?
此问题是从Stack Overflow 迁移而来的,因为可以在Software Engineering Stack Exchange上回答。 迁移 8年前。 我刚刚开始学习C#。来自Java,C ++和Objective-C的背景知识,我发现C#的Pascal框其方法名称相当独特,并且一开始很难适应。这背后的原因和哲学是什么? 我猜这是因为C#属性。与Objective-C中的方法名可以与实例变量完全相同的情况不同,C#并非如此。我猜想属性(与支持它的大多数语言一样)的目标之一是使属性与变量和方法真正区分开。因此,在C#中可以有一个“ int x”,并且相应的属性变为X。为了确保属性和方法是不可区分的,因此,我猜测的所有方法名称也应以大写字母开头。(这只是基于目前为止我对C#的了解而得出的假设,我仍在学习中)。我很好奇这个好奇的指南是如何产生的(鉴于它是 (编辑:通过Pascal-casing,我的意思是PascalCase(基本上是camelCase,但以大写字母开头)。在大多数语言中,方法名称通常以小写字母开头)

3
“加号”和“减号”是否合适?
的Java SE 8自带的日期,引入了新的机制LocalDate,LocalTime以及LocalDateTime类来表示的时刻。为了操纵这些瞬间,给出了一组方法:LocalDate.plusDays(...),LocalDate.minusDays(...)依此类推。 我一直认为,好的做法是在动词后描述方法的目的来命名方法,因为方法实际上是要执行的操作,它们会执行某种动作。刚才说了,如果你考虑类,比如StringBuilder,例如,方法的名字是append,insert,delete... 这就是为什么我不健全的权利命名的方法plusDays来代替sumDays,minusDays而不是subtractDays。只是我觉得很烦吗?你怎么看? 我能想到的唯一原因是日期是不可变的对象,因此通过调用plusDays您不是在原始对象上添加日期,而是创建具有新属性的新对象,但这非常微妙。

2
具有静态main方法的Java类的命名约定?
在阅读gnat的答案后,为什么在Java和C#中使用静态main方法而不是构造函数?我以他的回答来表示带有静态main方法的Java类的目的是to define a program entry point,而不是要成为程序本身。 可能有更好的方法来执行此操作,但是我通常使用带有静态main方法的类来执行以下简单操作: public class MenuLauncher { public static void main(String[] args) { Menu menu = new Menu(); menu.run(); } } 上面的代码是否是OOP的最佳实践,在这种情况下,具有静态main的类所做的仅是启动或启动包含在单独的非静态对象中的程序逻辑;毕竟main是静态的,所以MenuLauncher类本身不会受到很大限制吗?因为main是一个起点,所以除了作为切入点之外,我没有看到任何其他目的。 是否存在Java命名约定,通常用于包含main方法并用作程序入口点的类的类?

1
您的代码中处理复数形式的标准是什么?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 当使用其复数和单数都相同的变量时,如何命名它们?有没有什么标准? 例如: Series[] series // Plural Series series // Singular 深入: 具体来说,我的系列集合需要称为系列(由于JSON格式),您是否考虑命名要添加到集合中的系列的单数形式Series s? 如: List<Series> series = new List<Series>(); Series s; while (someBool) { s = new Series(); s.Name = "Name"; while (anotherBool) { s.AddValue(someValue); } series.Add(s); }

7
给带有“ Info”后缀的类命名的想法是什么,例如:“ SomeClass”和“ SomeClassInfo”?
我正在一个处理物理设备的项目中工作,而在如何正确命名该项目中的某些类方面一直感到困惑。 考虑到实际的设备(传感器和接收器)是一回事,而它们在软件中的表示是另一回事,我正在考虑使用“ Info”后缀名称模式命名某些类。 例如,虽然a Sensor是代表实际传感器的类(当它实际上连接到某个工作设备时),但SensorInfo将仅用于代表此类传感器的特性。例如,保存文件后,我将序列化为SensorInfo文件头,而不是序列化Sensor,这甚至都没有道理。 但是现在我很困惑,因为在对象生命周期中存在一个中间立场,我无法决定是否应该使用一种或另一种,或者如何从另一种中获取一种,甚至不能将这两种变体实际上只折叠为一个类。 而且,太普遍的示例Employee类显然只是真实人物的表示,但EmployeeInfo据我所知,没有人会建议为该类命名。 我使用的语言是.NET,这种命名模式在整个框架中似乎很常见,例如这些类: Directory和DirectoryInfo班级; File和FileInfo班级; ConnectionInfo班级(无对应Connection班级); DeviceInfo班级(无对应Device班级); 所以我的问题是:使用这种命名模式是否有共同的理由?在某些情况下,具有成对的名称(Thing和ThingInfo)是否有意义,而在其他情况下,仅应存在ThingInfo该类,或者Thing该类没有对应物?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.