Questions tagged «conventions»

10
我是否应该仅遵循工作场所中已建立的约定而遵循不良编码风格?
我已经工作了大约一年了。我主要在GUI界面中工作,该界面使用C后端的方法,但是除了返回值外,我通常不必处理它们。考虑到我们的局限性,我们的GUI结构相当合理。 我的任务是向程序的命令行部分添加功能。这些功能大多数都长达300行,难以使用。我正在尝试收集其中的一些信息以获取特定的警报信息,但在保持井井有条的过程中遇到了麻烦。我知道我要通过一个长函数来使测试变得更加复杂。 我应该按照现有功能的样式将所有功能都保留在一个巨大的功能中,还是应该将警报封装在它们自己的功能中? 我不确定是否适合违反当前的编码约定,或者我是否应该硬着头皮让代码编写自己的代码更加混乱。 总而言之,我正在比较 showAlarms(){ // tons of code } 反对 showAlarms(){ alarm1(); alarm2(); return; } alarm1(){ ... printf(...); return; } 编辑:谢谢大家的建议,我决定我将设计我的分解代码,然后询问他们想要什么,如果他们想要全部融合在一起,我可以从分解的代码中切下来,然后将其重新变成1大功能。即使他们希望所有代码都在一个定义中,这也应该允许我编写它并更轻松地对其进行测试。 更新:他们最终对分解式代码感到满意,并且有一个以上的人感谢我树立了这一先例。


5
仅通过参数名称(而不是类型)来区分方法是否足够?
仅通过参数名称(而不是类型)来区分方法就足够了吗?还是更明确地命名呢? 例如T Find<T>(int id)VS T FindById<T>(int id)。 是否有充分的理由更明确地命名(即添加ById)而不是仅保留参数名称? 我能想到的一个原因是方法的签名相同但含义不同。 FindByFirstName(string name) 和 FindByLastName(string name)

4
我是否应该对常数全部使用大写?
我是一名Python程序员,主要使用pylint整理源代码。我可以消除除以下警告以外的所有警告:常量名称无效。将名称更改为全部大写可以解决此问题,但是我真的应该这样做吗?如果这样做,我发现我的代码看起来很丑陋,因为大多数变量都是常量(根据pylint)。


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

3
“状态”还是“状态”?变量名称何时应包含单词“状态”,变量名称应何时包含单词“状态”?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 在阅读代码和有关代码的讨论时,我经常看到“状态”和“状态”这两个词可以互换使用,但是似乎存在以下趋势: 当变量具有旨在指示某物处于某种状态的值时,该变量的名称通常不包含单词“状态”或其缩写。 但是,当函数的返回值用于指示某种状态时,我们倾向于将该值称为“状态码”;当该值存储在变量中时,该变量通常称为“状态”或类似名称。 我想孤立地很好,但是当上述变量实际上是相同的时,就需要做出选择,涉及英语(或一般人类语言)的错综复杂。 当要在两者之间进行歧义消除时,目前流行的编码标准或约定是什么?还是应该始终避免这两者之一? 我想,这个english.stackexchange问​​题也很重要。

3
为什么树木向下生长?
为什么树木在计算机科学中会向下生长? 我感觉它可以回溯到打印机,并且遍历树的程序首先打印根,然后使用无底纸叠的概念来表达可能遇到的不确定的递归级别。 参考文献: 树木向下生长,其根在页面顶部,叶子在下方 从“ 神圣的战争”和“和平请愿”谈起。 按照惯例,树木被画成向下生长 摘自Wikipedia上有关树数据结构的文章。 真实的树木从根部向上生长到天空,而计算机科学的树木从根部向下生长 摘自David Schmidt的讲义。

5
可以用全大写字母命名枚举来简化其String表示吗?
几次我见过人们对枚举常量使用标题大小写或什至所有小写字母命名,例如: enum Color { red, yellow, green; } throw new IllegalStateException("Light should not be " + color + ".")例如,如果要这样做,这使得使用它们的字符串形式变得简单容易。 如果枚举是private,这似乎可以接受,但我仍然不喜欢它。我知道我可以使用String字段创建一个枚举构造函数,然后重写toString以返回该名称,如下所示: enum Color { RED("red"), YELLOW("yellow"), GREEN("green"); private final String name; private Color(String name) { this.name = name } @Override public String toString() { return name; } } 但是,看那还要多久。如果您有一堆小的枚举要保持简单,那么继续这样做很烦人。可以在这里只使用非常规大小写格式吗?
14 java  conventions  enum 

1
iOS / OSX开源项目的命名约定
并非总是如此,但在大多数情况下,您会发现iOS或Mac OS X开源项目,其名称以作者姓氏和名字的首字母开头。如果项目要由Nick Leblanc创作,则该项目将被读取为NLMyProject。 例子: 符文·马德森(Rune Madsen)的RMSwipeTableViewCell, Ezequiel Becerra的EBCardCollectionViewLayout, SDiPhoneVersion塞巴斯蒂安Dobrincu, Leo Natan的LNNotificationsUI。 那是哪里来的 是否有人首先以这种方式编写的,然后其他人都遵循? 即使在《苹果指南》中,我也找不到任何相关信息。那个成语写在任何地方吗?

6
JavaScript命名约定
我来自Java,对JavaScript还是陌生的。我注意到许多使用单个字符参数名称的JavaScript方法,例如以下示例。 doSomething(a,b,c) 我不喜欢它,但是一位JavaScript开发人员说服我这样做是为了减小文件大小,并指出必须将JavaScript文件传输到浏览器。 然后我发现自己正在与另一位开发人员交谈。他向我展示了Firefox将截断变量名以更快地加载页面的方式。这是Web浏览器的标准做法吗? 使用JavaScript编程时应遵循的最佳实践命名转换是什么?标识符长度重要吗?如果有,程度如何?

4
为什么在方法名称中使用连词是不好的命名约定?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 5年前关闭。 在我的团队中,我们与一些软件架构师紧密合作。他们批准我们项目的所有设计决策,进行一些代码审查等。 我们的项目主要包括使用Symfony 2框架以PHP实现的后端功能。因此,在语法上,代码,命名约定和项目结构看起来几乎与Java的外观相同(Symfony 2鼓励采用这种结构)。我之所以这样说是因为特定于Java的约定也适用于我们的情况(如果可能)。 最近,他们提出了一些令我感到很奇怪的东西:所有方法的名称中都应带有连词,例如getEntityOrNull,setValueOrException等等。 这样的命名约定对我来说是非常错误的,但是我无法提出任何具体的论据或在线文章/页面来专门挑战这一点。 我想到的唯一的东西是: 此类信息应出现在方法的注释中,例如@return或@throws 在方法名称中使用连词(“和”,“或”等)通常表明未适当遵守“单一责任原则” 反对该命名约定的其他一些具体论点是什么?

2
C#编程语言中变量的命名约定
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 我正在观看有关变量的C#视频。作者在方法内声明了一个变量,并按如下方式命名:string MyName =“ James”; 我的问题是:.Net Framework建议使用哪种约定。是上面示例中的Pascal机壳,还是骆驼皮?

1
“ TILT”在评论中是什么意思?
我正在阅读Robert C. Martin的Clean Code,该短语TILT在某些代码示例中莫名其妙地出现。示例(顺便说一下,它是在Java中): ... public String errorMessage() { switch (status) { case ErrorCode.OK: // TILT - Should not get here. return ""; case ErrorCode.UNEXPECTED_ARGUMENT: return "Unexpected argument"; case ErrorCode.MISSING_ARGUMENT: return "Missing argument"; ... } ... 从上下文来看,我猜测是TILT指定一个无法访问的状态,并且仅包含该状态以满足编译器的要求(例如,在上面的代码中,TILT出现这种ErrorCode.OK情况是因为如果状态为OK,则不会出现错误消息),但是我不确定。 有人知道TILT代表/意味着什么吗?

3
如何处理具有相同名称的类(不同的包)
我和我的研发团队维护着庞大的代码库。我们已经将业务逻辑分为多个包。其中一些具有相同名称的类。 如您所料,当在同一Java文件中引用两个类时,名称冲突。 例如: com.myapp.model (package) - Device (class) - ... com.myapp.data (package) - Device (class) - ... 我们就治疗这些病例的最佳实践进行了辩论,并提出了以下选择: 第一种选择 重命名类,添加前缀 ModelDevice DataDevice 第二选择 同时引用包和类的完整名称 com.myapp.model.Device com.myapp.data.Device 在代码管理和可伸缩性方面,更正确的是什么? 我们目前正在混合使用这两种方法,并开始出现不一致之处

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.