Questions tagged «coding-style»

编码样式是一组准则,有助于提高可读性和对源代码的理解。

9
您对代码注释中的句点/句号有何看法?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 5年前关闭。 我在SO Tavern中看到了这个问题,所以我在这里发布问题。我认为这是一个有趣的问题。(当然,它不属于SO,但是我认为在这里还可以。) 您是否在代码注释中添加了句点(或者,正如OP所写,“句号”)? 为了保持相关性,为什么?

7
将返回值的计算和return语句拆分为单行方法?
我曾与一位同事讨论过如何中断一条return语句以及该语句在两行中计算返回值。 例如 private string GetFormattedValue() { var formattedString = format != null ? string.Format(format, value) : value.ToString(); return formattedString; } 代替 private string GetFormattedValue() { return format != null ? string.Format(format, value) : value.ToString(); } 在代码方面,我在第一个变量中看不到任何值。对我来说,后者更清晰,尤其是对于较短的方法。他的论点是,前一种变体更易于调试-这是一个很小的优点,因为当由于断点而停止执行时,VisualStudio允许我们对语句进行非常详细的检查。 我的问题是,是否仍然需要编写不太清晰的代码,只是为了使调试一目了然?拆分计算和语句后,该变体还有其他参数return吗?

11
维护方面,在不进行大括号干预的情况下“其他时间”是否被认为安全?
是否在else while不使用大括号的情况下将其视为“安全”的维护方法? 编写if-else没有括号的代码,如下所示... if (blah) foo(); else bar(); ...带有风险,因为缺少花括号,很容易在不经意间更改代码的含义。 但是,下面是否也有风险? if (blah) { ... } else while (!bloop()) { bar(); } 还是else while不使用大括号将其视为“安全”的?

9
注释代码的样式和建议
此问题是从Stack Overflow 迁移而来的,因为可以在Software Engineering Stack Exchange上回答。 迁移 8年前。 我想听听您在代码中编写注释的任何建议和经验。您如何以最简单,最有用的方式编写它们?注释部分代码时有什么习惯?也许一些异国情调的建议? 我希望这个问题能收集到最有趣的建议和建议,以供大家参考。 好,我开始。 通常,/* */即使我需要注释很多行,我也不使用注释。 优点:与在单行注释中混合使用这种语法相比,代码在视觉上看起来更好。大多数IDE都具有注释选定文本的功能,并且通常使用单行语法来注释。 缺点:没有IDE,很难编辑这样的代码。 在所有已完成评论的末尾放置“点”。 例如: //Recognize wallpaper style. Here I wanted to add additional details int style = int.Parse(styleValue); //Apply style to image. Apply(style); 优点:仅在您完成的注释中放置“点”。有时您可以写时间信息,因此缺少“点”将告诉您您要返回并在此注释中添加一些其他文本。 对齐枚举中的文本,注释参数等。 例如: public enum WallpaperStyle { Fill = 100, //WallpaperStyle = "10"; TileWallpaper …

16
短标识符不好吗?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 短标识符不好吗?标识符长度与代码理解如何相关?在命名标识符时,还需要考虑哪些其他因素(除了代码理解能力之外)? 只是为了保持答案的质量,请注意,已经对该主题进行了一些研究! 编辑 奇怪的是,当我提供的两个链接都表明大标识符有害时,每个人都认为长度不相关或倾向于使用更大的标识符! 断链 下面的链接指向对该主题的研究,但现在已断开,我似乎没有与该文件的复印件,而且我不记得它是什么。我把它留在这里,以防别人弄清楚。 http://evergreen.loyola.edu/chm/www/Papers/SCP2009.pdf

7
指定可选参数名称,即使不是必需的?
请考虑以下方法: public List<Guid> ReturnEmployeeIds(bool includeManagement = false) { } 和以下调用: var ids = ReturnEmployeeIds(true); 对于刚接触该系统的开发人员来说,很难猜得出是什么true。您要做的第一件事是将鼠标悬停在方法名称上或转到定义(都不是丝毫大的任务)。但是,出于可读性考虑,编写以下代码是否有意义: var ids = ReturnEmployeeIds(includeManagement: true); 在编译器不需要您时,是否有任何地方正式讨论是否明确指定可选参数? 以下文章讨论了某些编码约定:https : //msdn.microsoft.com/zh-cn/library/ff926074.aspx 与上面的文章类似的东西会很棒。

5
用共享的编码范例就好像用语言Y编写程序一样,用语言X编写内容为什么不好?
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 不久前,我在SO上问了一些用C ++编写的东西,但是并没有得到解决这个问题的答案,而是对我的编码风格发了疯,即使当我指出这是WIP的一段代码时那是我打算在运行基本案例时清理它。(我的否决票太多了,因此我决定提出这个问题,因为我在SO上的代表已经非常糟糕了) 这让我想知道为什么人们会采取这样的强硬态度:“你是菜鸟,自己去他妈的”。我被指控像编写Java一样编写C ++。我无法理解的东西仍然让我感到困惑。 我已经用很多OOP语言编程了很多年了,尽管有时是间隔的。我会根据可用的库和最佳的执行环境选择要使用的语言。我在OOP代码中采用了设计模式,并且我非常有信心自己对模式的使用是正确的,并且在OO方面,我可以坚持自己的想法。我了解OOP工具箱,但仅在我认为确实需要时才选择使用这些工具,而不仅仅是使用整洁的技巧来展示我的编码才智。(我知道这不是一流的,但我认为也不是n00b级别)。 在写一行之前,我先设计代码。为了定义测试,我列出了某个类的目标及其必须遵守的测试标准。因为创建序列图然后编写代码对我来说比较容易,所以我选择在界面变得明显之后编写测试。 我必须承认,在我在问题中发布的代码段中,我仍在使用指针,而不是使用智能指针。我会尽可能使用RAII。我知道适当的RAII意味着要防范空指针,但是我会逐步工作。这是一项正在进行的工作,我打算稍后对其进行清理。强烈谴责这种工作方式。 我认为,首先应该有一个可行的示例,这样我才能确定基本案例是否是可行的思维方式。我也碰巧认为,在证明了基本情况之后,清理代码是敏捷重构阶段的典型操作。我必须承认,尽管我慢慢地了解Cxx标准,但我更喜欢使用自己了解的内容,而不是冒着使用尚未在生产代码中掌握的概念的风险。我偶尔会尝试一些新东西,但通常是在我为此而做的游戏项目中。 [edit]我想澄清一下,在我开始提出问题之前,我的搜索结果中并未显示的建议[1]。但是,尽管他的建议确实涵盖了该问题的一个方面,但他所链接的问题并没有回答我问题的核心,只是一部分。我的问题更多是关于我对编码风格的反应以及处理不同编码风格和(明显)技能水平的专业方面。关于我之前关于SO的问题,它就是一个恰当的例子。[/编辑] 然后的问题是:为什么嘲笑不使用您的编码风格的人? 我手头的事务/细分是: 如果重构使重构后的代码更健壮,为什么在原型情况下使用更多容易出错的代码将是不好的编程习惯呢? 用C ++编写的程序如何像用Java编写的一样?是什么使它成为不好的程序,(考虑到我指出了当前风格的意图以及计划中的改进工作)? 如果选择使用某种编程范例(例如OOP / DP)中使用的构造,我将如何成为一名糟糕的专业人员? [1] 快速发展,然后修正错误或缓慢,注意每一行代码?

5
是否有科学严谨的编码风格原则研究?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为软件工程堆栈交换的主题。 4年前关闭。 编码风格原则(例如单出口原则)真的是件好事吗?总是还是只是有时候?到底有什么不同? 无论您有什么意见,这些显然都是主观的问题。还是他们? 是否有人试图对编码样式原则进行客观,科学严谨的研究? 我无法想象有人会对可读性进行双盲研究,但也许可能是双重无知-将不了解所学原理的学生作为学科,并使用非程序员来管理这项研究。

5
在Java中,私有助手应该放在公共方法之上还是之下?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 5年前关闭。 我注意到一个同事和我在Java类中对方法的排序有相反的做法。我们中的一个人开始使用主要的公共方法上课,然后再放置所有私人帮手。我们中的另一个人确保公共方法在最后。 显然,这只是样式问题,没有正确的答案。但是,在我们决定这件事只是Yooks vs Zooks的另一场争执而只是任意选择一个之前,我想知道是否存在标准的Java风格指南推荐,或者某种可行的理由,为什么一种方法比另一种更好。

6
可读性是在(参考)参数中不使用const的正当理由吗?
在编写一些函数时,我在这样的参数中找到了const关键字: void MyClass::myFunction(const MyObject& obj,const string& s1,const string& s2,const string& s3){ } 通常会导致在IDE或vim中将一行分成两行,因此我想删除参数中的所有const关键字: void MyClass::myFunction(MyObject& obj,string& s1,string& s2,string& s3){ } 这是不使用const的正当理由吗?手动保持参数对象不变是否可以维护?

7
我的“代码示例”应该是什么样?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为软件工程堆栈交换的主题。 4年前关闭。 我刚刚接受了不错的电话面试(对于CakePHP相关职位,这并不是一个特别重要的问题)。面试官似乎对我的简历和个性印象深刻。但最后,他要求我通过电子邮件将我现有工作项目中的代码示例发送给他,“以检查您是否不是秘密地可怕的程序员,哈哈!” 我不太担心我的代码不能站立自己的两只脚,但是我非常是一名中级程序员,而不是专家。有什么明显的缺陷,我应该确保我的代码示例不他们统治我出去当场陷入,万一?其次,这可能是问题最难回答的部分,代码示例中的哪些功能会如此令人印象深刻,以至于它们立即使您更倾向于程序员? 欢迎所有想法或建议!

6
如果只使用一次,是否应该定义一个字符串常量?
我们正在为Jaxen(Java的XPath库)实现一个适配器,该适配器允许我们使用XPath来访问应用程序的数据模型。 这是通过实现将字符串(从Jaxen传递给我们的)映射到数据模型的元素的类来完成的。我们估计我们将需要大约100个类,总共超过1000个字符串比较。 我认为,执行此操作的最佳方法是将字符串直接写入代码的简单if / else语句-而不是将每个字符串都定义为常量。例如: public Object getNode(String name) { if ("name".equals(name)) { return contact.getFullName(); } else if ("title".equals(name)) { return contact.getTitle(); } else if ("first_name".equals(name)) { return contact.getFirstName(); } else if ("last_name".equals(name)) { return contact.getLastName(); ... 但是,总是有人告诉我,我们不应该将字符串值直接嵌入代码中,而应该创建字符串常量。看起来像这样: private static final String NAME = "name"; private static final String TITLE …

8
在什么时候禁忌在循环中循环?
只是好奇。我曾经遇到过的最多的是for循环中的for循环,因为从Linus Torvalds读取以下内容后: 制表符是8个字符,因此缩进也是8个字符。有些异端运动试图使缩进量增加4个(甚至2个!)字符,这类似于试图将PI的值定义为3。 原理:缩进的整个思想是明确定义控制块的开始和结束位置。尤其是当您连续20个小时查看屏幕时,如果压痕较大,则发现压痕的工作原理要容易得多。 现在,有些人会声称具有8个字符的缩进会使代码向右移得太远,并使得在80个字符的终端屏幕上难以阅读。 答案是,如果您需要三个以上的缩进级别,那么无论如何您都会被搞砸,应该修复程序。 https://www.kernel.org/doc/Documentation/CodingStyle 我认为进入第三层循环对我来说是不可接受的做法,并且会重组我的代码(Primally Qt)。 莱纳斯在开玩笑吗? 是否取决于语言或应用程序? 是否有某些事情绝对需要三级或更多级循环?

2
提供执行相同操作的不同功能签名是一个好主意吗?
这是一个用三个值构造的C ++类。 class Foo{ //Constructor Foo(std::string, int, char); private: std::string foo; char bar; int baz; }; 所有参数类型都不同。 我可以重载构造函数,因此顺序无关紧要。 class Foo{ //Constructors Foo(std::string, char, int); Foo(std::string, int, char); Foo(char, int, std::string); Foo(char, std::string, int); Foo(int, std::string, char); Foo(int, char, std::string); private: std::string foo; char bar; int baz; }; 但这是个好主意吗? 我开始这样做是因为我知道一个类/函数需要什么东西。 我并不总是记得他们接受了什么命令。 …

7
'var'和null合并运算符'??'应该走多远 在不影响可读性的情况下进行娱乐?
该问题是从Code Review Stack Exchange 迁移而来的,因为可以在Software Engineering Stack Exchange上回答。 迁移 8年前。 我知道问题的标题是非常主观的,但是??我的同龄人遇到了使用运算符的问题,而与此同时,我对申请var新的即将出现的代码并不满意/不满意。 使用??operator 给出的参数是,它占用了代码的可读性。 我的问题是,开始使用时会发生同样的事情var吗?

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.