Questions tagged «readability»

可读性衡量代码易于阅读和理解。


7
如何在程序中管理大量规则和幻数?
我是编程的新手(我是行业的机械工程师),并且在停机期间正在开发一个小程序,该程序将根据工厂周围各个人员的输入生成一个(solidworks)零件。 仅基于少量输入(准确地说是6个),我需要进行数百个API调用,每个API调用最多可以包含十二个参数。所有这些都是我在采访处理零件的每个人之后收集的一组规则所产生的。我的代码的规则和参数部分为250行,并且还在不断增加。 那么,保持我的代码可读性和可管理性的最佳方法是什么?如何分隔我所有的幻数,所有规则,算法和代码的程序部分?如何处理非常冗长而细致的API? 我的主要目标是能够在没有我输入的情况下将我的消息传递给某人,并让他们了解我在做什么。

8
您喜欢代码中的简洁性还是可读性?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 语言快捷方式通常可用于使代码更简洁。 例如,三元和空合并运算符可以减少代码量,但是可以说会损害可读性: 在C#中: Person newGuy = new Person(); if (boss == null) { newGuy.Boss = GetDefaultBoss(); } else { newGuy.Boss = boss; } 在功能上等效于: Person newGuy = new Person(); newGuy.Boss = boss ?? GetDefaultBoss(); 但显然要冗长得多。 简洁性与可读性之间的界限是什么?

4
当JSP scriptlet不好时,为什么JSX好呢?
React.js提供JSX作为类似于XHTML的语法,用于构造组件和元素的树。JSX编译为Javascript,而不是在JSX中正确提供循环或条件,而是直接使用Javascript: <ul> {list.map((item) => <li>{item}</li> )} </ul> 我还无法解释的是,如果在JSP中类似的构造被认为是不好的,为什么这被认为是好呢? 在JSP中类似这样的东西 <ul> <% for (item in list) { %> <li>${item}</li> <% } %> </ul> 被认为是可读性问题,可以使用标记来解决<c:forEach>。JSTL标签背后的理由似乎也可以应用于JSX: 当您不在类似XHTML的语法(尖括号,嵌套)和Java / Javascript(卷曲,逗号,括号)之间切换时,阅读起来会更容易一些 当您具有可在渲染功能中使用的完整语言和平台时,可以阻止您添加不属于该逻辑的逻辑。 我能想到的JSX不同的唯一原因是: 在Java中,您有动机去做错事-JSP会被热重载,因此很想将代码放入JSP中以避免重新生成/重新启动周期。为了立即获得生产力,牺牲了可维护性。放逐scriptlet并限制为一组固定的模板结构是有效地增强可维护性的一种方法。JS世界中不存在这种失真。 JSP和Java语法笨拙,<% ... %>无法将Java代码与元素生成区分开来,并且Java的本机语法缺乏foreach概念或一流的功能(直到最近)。在我看来,在JSX中将本机Javascript用于循环和条件的语法代价是非零的,但不如JSP差,并且可以说不足以保证引入特定于JSX的循环和条件元素。 还有其他我想念的东西吗?

6
使用TDD时如何删除功能或功能
在有关TDD的文章中,我经常在重构步骤中读到“删除重复项”或“提高可读性”。但是,什么使我删除了未使用的功能? 例如,假设有一个C带有方法a()和的类b()。现在我认为有一个f()被驱动的方法会很不错C。实际上,除定义/描述的单元测试外,f()所有对的调用都将替换。不再需要-测试除外。b()b() 删除b()和使用它的所有测试是否保存?那是“提高可读性”的一部分吗?


5
描述性命名与80个字符行的比较[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 6年前关闭。 我经常听到这两种有价值的编程实践:(1)代码行应少于80个字符,并且(2)为变量,方法,类等使用描述性名称。我理解这两个建议的含义,它们似乎常常是彼此权衡的。如果我将代码的字符数保持在80个字符/行以下,那么最终我将使用较少的描述性名称(特别是在Python中,每个缩进均计为4个字符),但如果使用的描述性名称较多,则最终将使用80个字符以上的行。 因此,我的问题是,如果必须做出选择,那么遵循这两个建议中哪个更重要?我想作为一个独立的(业余爱好者)程序员来这件事,但更重要的是,从一个为大公司工作的软件工程师的角度来看。

4
如何确定编程语言是冗长还是简洁?
编程语言通常可以描述为冗长或简洁。 根据我的理解,冗长的语言易于阅读和理解,而简洁的语言简洁明了,但更难于阅读。定义中是否应该考虑其他事项? 当今许多流行的编程语言似乎是冗长的,并且这两个术语仅用于描述一种语言,相对于另一种语言而言,该语言或多或少。 我们如何确定一种编程语言是否比另一种更为冗长/简洁? 示例:C#比Java更冗长吗?

4
具有多个参数的单个方法与必须按顺序调用的许多方法
我有一些原始数据,我需要做很多事情(移动它,旋转它,沿某个轴缩放它,将它旋转到一个最终位置),而且我不确定保持代码可读性的最佳方法是什么。一方面,我可以使用具有多个参数(10个以上)的单个方法来执行我需要的操作,但这是一场代码阅读的噩梦。另一方面,我可以使用1-3个参数制作多个方法,但是这些方法需要以非常特定的顺序调用才能获得正确的结果。我已经读过,最好的方法是做一件事情并且做好事,但是似乎有很多需要调用的方法才能打开代码以查找难以发现的错误。 我是否可以使用一种编程范例来使错误最小化并使代码更易于阅读?
16 java  readability 

7
如何提高C#,Java和类似语言中面向数学的代码的可读性?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 作为C程序员和C#程序员,我不喜欢C#的一件事就是数学函数的详细程度。例如,每次您必须使用正弦,余弦或幂函数时,都必须在Math静态类之前。当方程本身非常简单时,这将导致代码很长。如果您需要强制转换数据类型,则问题将变得更加严重。因此,我认为可读性受到影响。例如: double x = -Math.Cos(X) * Math.Sin(Z) + Math.Sin(X) * Math.Sin(Y) * Math.Cos(Z); 相对于简单 double x = -cos(X) * sin(Z) + sin(X) * sin(Y) * cos(Z); 在其他语言(如Java)中也是如此。 我不确定这个问题是否真的有解决方案,但是我想知道C#或Java程序员是否使用任何技巧来提高Math代码的可读性。但是我意识到C#/ Java / etc。不是像MATLAB之类的面向数学的语言,所以这很有意义。但是有时候,人们仍然需要编写数学代码,如果可以使其更具可读性,那就太好了。
16 java  c#  math  readability 

4
关于程序员如何以不熟悉的语言理解代码的研究?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使它成为软件工程堆栈交换的主题。 5年前关闭。 对于认真使用多种语言(例如X和Y)的人来说,是否有认真的研究对掌握X语言的经验丰富的程序员如何理解由合格的程序员使用Y语言编写的代码有多好的了解? 当然,现实世界并不是那么简单,因为程序员只知道一种语言。我们想知道的是:如果我们使用C#进行项目,并且某天某些仅认识Fortran和Algol的老物理学家对此进行研究,这对他们有多大意义?如果他们忽略了某些随机标点符号,那么其中的数学部分可能对他们来说没问题。还是,Python专家能够找到我聪明的Ruby脚本中的缺陷? 从表面语法级别到大概念级别(例如对象,模板元编程,功能等),都可能存在问题。我不希望一个程序员能够完全理解“外语”中代码的每个语法细节,也不会遵循某些宏伟概念的宗教信仰,而是想知道他们将在多大程度上获得控制的主要作用,找到解决方法?如果屏幕上画了什么东西,并且决定了它的颜色或大小,请验证编程为驾驶汽车的机器人在完成后会关闭引擎,诸如此类。 高质量的研究应包括已发表的学术研究,一些行业组织或大型软件公司的官方报告,尽管我将接受经验丰富的研讨会和课程的领导者或其他来源的系统公正的观察。对简短的博客,单例示例或轶事不感兴趣。(好吧,也许有一些轶事可以使他们读得很好。)

6
零为常数?
我最近遇到了这个编程习惯用法: const float Zero = 0.0; 然后用于比较: if (x > Zero) {..} 任何人都可以解释一下,这实际上是否比以下方法更有效,可读性或可维护性: if (x > 0.0) {..} 注意:我可以想到定义此常量的其他原因,我只是想知道它在此上下文中的使用。

6
C#变得更难阅读了吗?
随着C#的进步,添加了许多语言功能。对我来说,它已经变得难以理解了。 作为一个例子,考虑Caliburn.Micro代码下面的代码剪断这里: container = CompositionHost.Initialize( new AggregateCatalog( AssemblySource.Instance. Select(x => new AssemblyCatalog(x)) .OfType<ComposablePartCatalog>() ) ); 现在,这只是一个小例子。 我有几个问题: 这是常见问题还是已知问题? C#社区是否找到相同的东西? 这是语言问题还是开发人员使用的样式? 是否有任何简单的解决方案可以更好地理解其他代码并避免以这种方式编写代码?
15 c#  readability 

4
善用try catch块吗?
我总是觉得自己很努力……试图在try / catching和代码之间保持正确的平衡,而这些代码又不会变成令人讨厌的选项卡,方括号和异常,就像火薯一样被扔回到调用堆栈中。例如,我有一个正在开发的使用SQLite的应用程序。我有一个抽象SQLite调用的数据库接口,以及一个接受要进出数据库的事物的模型...因此,如果/当发生SQLite异常时,必须将其扔给模型(被称为模型) ),谁必须将其传递给调用AddRecord / DeleteRecord / whatever ... 我喜欢异常,而不是返回错误代码,因为错误代码可以忽略,遗忘等,而本质上必须处理异常(允许,我可以立即捕获并继续前进...)肯定有比我现在要做的更好的方法。 编辑: 我应该用一些不同的措辞。我知道要重新投掷不同类型的球,我的措辞很差,这是我自己的错。我的问题是……这样做时如何最好地保持代码干净?过了一会儿,它才开始让我感到非常混乱。

6
为什么许多语言不支持命名参数?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 我只是在想,如果在调用函数时可以编写以下代码,那么读取代码会容易得多: doFunction(param1=something, param2=somethingElse); 我想不出任何缺点,它会使代码更具可读性。我知道您可以将数组作为唯一的参数传递,并将数组键作为参数名称,但是这样的可读性仍然不高。 我缺少这种缺点吗?如果不是,为什么许多语言不允许这样做?

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.