Questions tagged «coding-style»

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

6
单引号与双引号[关闭]
我刚从Java背景开始从事Python的工作,并且注意到其他开发人员倾向于使用单引号('')而不是双引号("")来引用字符串。例如: line1 = 'This is how strings typically look.' line2 = "Not like this." 除了个人喜好之外,还有其他特殊原因吗?这是引用字符串的正确方法吗?具体来说,我想知道的是,是否存在某种类型的标准或公认的最佳实践来推动这种编码方式。

12
为什么最近转向从Java脚本中删除/省略分号?
最近,从Java语言中省略分号似乎很流行。几年前有一篇博客文章强调,在Javascript中,分号是可选的,并且文章的主旨似乎是您不必理会它们,因为它们是不必要的。该帖子被广泛引用,并没有给出任何令人信服的理由不使用它们,只是将它们排除在外几乎没有副作用。 甚至GitHub都跳上了无分号的潮流,要求它们省略任何内部开发的代码,并且其维护者最近对zepto.js项目的承诺已从代码库中删除了所有分号。他的主要论据是: 这是他团队的优先事项; 打字少 还有其他好的理由将其排除在外吗? 坦白说,我看不出没有理由忽略它们,当然也没有理由回过头来删除它们。这也违背了(多年的)推荐做法,我并不真的赞成“货运崇拜”的说法。那么,为什么最近都讨厌分号?短缺迫在眉睫吗?还是这只是最新的Javascript时尚?

30
您曾经必须遵循的最糟糕的编码标准?[关闭]
您是否曾经努力过编码以下标准: 大大降低了您的生产率? 最初是出于充分的理由被包括在内,但在最初的关注变得无关紧要之后被保留了很长时间? 列表中的时间很长,以至于不可能全部记住它们? 您是否认为作者只是想留下自己的印记而不是鼓励良好的编码习惯? 您不知道为什么将它们包括在内? 如果是这样,您最不喜欢的规则是什么?为什么? 这里的一些例子


10
为什么“ ifif else”语句实际上从不采用表格式?
if i>0 : return sqrt(i) elif i==0: return 0 else : return 1j * sqrt(-i) VS if i>0: return sqrt(i) elif i==0: return 0 else: return 1j * sqrt(-i) 给定以上示例,我不明白为什么我实际上从来没有在代码库中看到过第一种样式。对我来说,您将代码转换为表格格式,可以清楚地显示所需内容。第一列实际上可以忽略。第二列标识条件,第三列为您提供所需的输出。至少在我看来,它直截了当且易于阅读。但是我总是看到这种简单的案例/切换情况是以扩展的,制表符缩进的格式出现的。这是为什么?人们是否发现第二种格式更具可读性? 唯一可能出现问题的情况是代码更改并变得更长。在那种情况下,我认为将代码重构为长缩进格式是完全合理的。每个人都只是因为它总是做第二件事而做第二种吗?作为恶魔的拥护者,我想还有另一个原因可能是因为人们根据if / else语句的复杂性找到了两种不同的格式,这令人困惑?任何见识将不胜感激。

10
永远不要在Java中使用字符串?[关闭]
我偶然发现了一个博客条目,不鼓励在Java中使用字符串来使您的代码缺乏语义,建议您改用瘦包装器类。这是该条目提供的用于说明问题的示例的前后: public void bookTicket( String name, String firstName, String film, int count, String cinema); public void bookTicket( Name name, FirstName firstName, Film film, Count count, Cinema cinema); 根据我阅读编程博客的经验,我得出的结论是90%都是胡说八道,但是我想知道这是否是正确的观点。不知何故,我觉得不合适,但是我无法确切指出编程风格的不对之处。

15
定义变量来命名方法参数是否是一种好习惯?
为了便于阅读,我经常发现自己在调用函数时定义了临时变量,例如以下代码 var preventUndo = true; doSomething(preventUndo); 这个的简短版本是 doSomething(true); 但是,当我回到代码时,我常常想知道true所指的是什么。这种难题是否有约定?

13
在存储库上定期运行代码格式化程序会是个坏主意吗?
我正在考虑创建一个cron作业,以检出代码,在其上运行代码格式化程序,如果有任何更改,则提交更改并将其推回。 大多数使用自动格式化程序的项目都将它们放在git钩子中,但是每隔几个小时自动执行一次会减轻每个开发人员安装git钩子的负担。 我仍然鼓励大家编写干净,格式正确的代码,也许我可以让系统在对他们编写的代码进行重新格式化后自动对开发人员执行ping操作,以便他们知道将来要做什么。

5
为什么CSS和SVG可以接受大量的幻数?
很多时候,我看到了热网的问题列表像问题这个,基本上问“我怎么画这个任意形状的CSS”。答案总是是几个CSS或SVG数据块,它们带有一堆看似随机的硬编码值,这些值构成了所需的形状。 当我看着这个时,我会想:“好极了!多么丑陋的代码块。我希望我在项目中再也不会看到这种类型的东西。但是,我经常看到这类问答,并且投票数很高,因此很明显,社区并不认为这很糟糕。 但是为什么可以接受呢?从我的后端经验来看,这对我来说毫无意义。那么为什么CSS / SVG可以呢?

4
如果可以提高代码的清晰度,那么调用一个没有效果的函数是否更好?
我的程序(iOS应用程序)中有三个视图。它们中只有一个同时处于活动状态,因此我关闭了其中两个的可见性,并在用户按下按钮时切换可见性。视图被初始化为可见,因此我在显示主视图之前在代码中设置了可见性。 我可以 [view1 setAlpha:0.0f]; [view2 setAlpha:0.0f]; 对于其中两个视图,但现在未解决第三个视图(应在应用程序开始时显示的视图)。我把 [view3 setAlpha:1.0f]; 在前两个视图之后,因为我认为这很清楚,实际上存在三个视图,而不是看到代码时可​​能会想到的两个视图。其他程序员如何做到这一点?纯粹是偏爱还是有一些约定? 如果调用非常繁琐,那么最好不要在不需要时调用它,但是我想知道像我的示例这样的小事情。

18
处理别人的代码[关闭]
我几乎没有一年的编码经验。开始工作后,大多数时候我都会处理别人的代码,或者在现有功能上添加新功能,或者修改现有功能。编写实际代码的人在我公司不再工作。我很难理解他的代码并完成任务。每当我尝试修改代码时,我都会以某种方式弄乱正常工作的功能。在处理别人的代码时,我应该牢记什么?

16
为什么在布尔值变量上使用!boolean_variable == false
关于此问题的评论:检查方法是否返回false:将结果分配给临时变量,还是将方法调用直接置于条件中?说应该在测试条件时使用!boolean而不是boolean == false。为什么?对我boolean == false来说,英语更加自然,也更加露骨。抱歉,这仅是风格问题,但我想知道是否还有其他原因导致这种偏好!boolean?

12
我应该重用变量吗?
我应该重用变量吗? 我知道许多最佳实践表明您不应该这样做,但是,稍后,当不同的开发人员调试代码并具有3个看起来相似的变量时,唯一的区别是它们是在代码中的不同位置创建的,困惑。单元测试就是一个很好的例子。 但是,我确实知道,最佳实践通常都是反对的。例如,他们说不要“覆盖”方法参数。 最佳做法甚至是反对使以前的变量为空(在Java中,Sonar会在您分配null给变量时发出警告,因为Java 6不需要调用它来调用垃圾回收器。您无法始终控制哪些警告已关闭;大多数情况下默认设置为开启。)

17
如果是块,则使用单个语句-大括号或否?[关闭]
哪个更好/更普遍被接受? 这个: if(condition) { statement; } 要么: if(condition) statement; 我倾向于第一个,因为我认为它可以更容易地判断if块中的实际内容,它可以避免其他人以后添加花括号(或忘记创建错误),并使所有if语句统一,而不是一些带有大括号,而另一些则没有。但是,第二个在语法上仍然是正确的,并且绝对更紧凑。我很好奇,尽管看到哪个更受其他人青睐。

9
可读性与可维护性,编写嵌套函数调用的特殊情况
我的嵌套函数调用的编码样式如下: var result_h1 = H1(b1); var result_h2 = H2(b2); var result_g1 = G1(result_h1, result_h2); var result_g2 = G2(c1); var a = F(result_g1, result_g2); 我最近转到了一个部门,该部门非常使用以下编码样式: var a = F(G1(H1(b1), H2(b2)), G2(c1)); 我的编码方式的结果是,在功能崩溃的情况下,Visual Studio可以打开相应的转储并指出发生问题的行(我特别担心访问冲突)。 我担心,如果因第一种方式编程的相同问题而导致崩溃,我将无法知道是哪个函数导致了崩溃。 另一方面,行上进行的处理越多,一页上得到的逻辑就越多,从而增强了可读性。 我的恐惧是正确的还是我缺少什么?总的来说,在商业环境中这是首选吗?可读性还是可维护性? 我不知道它是否相关,但是我们正在使用C ++(STL)/ C#。

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.