问题标签 [readability]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
language-agnostic - 单一决策和行动陈述的首选风格是什么?
对于支持不带括号的单一决策和动作的语言,例如以下示例:
写这个的首选方式是什么?应该始终使用括号,还是应该将它们的使用保留为个人开发人员的偏好?此外,这种做法是否取决于代码块的大小,例如以下示例:
readability - 您如何编写易于被没有编写任何部分的其他人阅读的代码?
您如何编写易于被其他人阅读并且没有亲自编写过代码的任何部分的代码?
python - 提高 Python 的可读性?
最近我真的很喜欢 Python 编程。我来自一个对基于 C 的编码的强烈热爱的背景,在那里一切可能都比它应该的更复杂(但至少在你的胸前有头发)。因此,对于不需要大量速度的更复杂的事情,从 C 语言切换到 Python 对编写项目来说更像是一个福音而不是祸根。
然而,从肉眼所见的方括号、括号和结构的土地上,我遇到了一个小问题:我发现 Python 难以阅读。
例如,除非我盯着它看,否则我很难解读以下文本块(我不喜欢这样做):
问题出现在 if 块的末尾:所有的标签然后突然回到一个不和谐的块感觉几乎令人不安。作为一种解决方案,我开始像这样编写我的 Python 代码:
出于某种奇怪的原因,这让我更能阅读自己的代码。但我很好奇:有没有其他人遇到我的奇怪问题找到更简单的方法来使他们的标签式代码更具可读性?在这对我来说成为一个巨大的习惯之前,我很想知道是否有更好的方法来做到这一点。
language-agnostic - 生成的代码是否需要人类可读?
我正在开发一个工具,该工具将为一个接口和几个实现该接口的类生成源代码。我的输出并不是特别复杂,所以让输出符合我们正常的代码格式标准并不难。
但这让我开始思考:自动生成的代码需要如何具有人类可读性?什么时候应该花费额外的精力来确保生成的代码易于阅读和理解?
就我而言,我生成的类本质上只是一些与构建的另一部分相关的数据的容器,其中包含获取数据的方法。没有人需要查看类本身的代码,他们只需要调用类提供的各种 getter。因此,代码是否“干净”、格式正确且易于人类阅读可能并不重要。
但是,如果您生成的代码中包含大量简单逻辑,会发生什么情况?
coding-style - 是否可以在代码库中嵌入 Cockburn 风格的文本 UML 用例内容以提高代码可读性?
在代码中试验 Cockburn 用例
我正在编写一些复杂的 UI 代码。我决定将 Cockburn 用例用于鱼、风筝和海平面(由 Martin Fowler 在他的《UML Distilled》一书中讨论)。我将 Cockburn 用例封装在静态 C# 对象中,以便我可以针对代表 UI 工作流程中步骤的静态常量测试逻辑条件。这个想法是您可以阅读代码并知道它在做什么,因为包装的对象及其公共内容通过名称空间为您提供了英语用例。
此外,我打算使用反射来抽出包含所描述用例的错误消息。这个想法是堆栈跟踪可以包含一些英语用例的 UI 用例步骤。结果证明这是一种有趣的方式来实现一个迷你的、伪轻量级的域语言,但无需编写 DSL 编译器。所以我的问题是这是否是一个好方法?有没有人做过类似的事情?
c# 示例片段如下
假设我们有一些 aspx 页面,它有 3 个用户控件(有很多可点击的东西)。用户必须单击一个特定用户控件中的内容(可能进行某种选择),然后 UI 必须在视觉上提示用户选择成功。现在,当该项目被选中时,用户必须浏览网格视图以在其他用户控件之一中找到项目,然后选择某些内容。这听起来很容易管理,但代码可能会变得丑陋。
在我的例子中,用户控制主页捕获的所有发送的事件消息。这样,页面就像 UI 事件的中央处理器一样,可以跟踪用户点击时发生的情况。
因此,在主 aspx 页面中,我们捕获了第一个用户控件的事件。
因此,在 MyCompany.MyApp.Web.UseCases 命名空间中,我们可能有这样的代码:
嵌入在类中的工作流用例可以是内部类或静态方法或枚举或任何为您提供最干净命名空间的东西。我不记得我最初做了什么,但你明白了。
python - Python 中的通用异常处理是“正确的方式”
有时我发现自己处于想要执行几个顺序命令的情况,例如:
当只需要忽略异常时,也会出现同样的模式。
这感觉是多余的,过多的语法导致阅读代码时难以理解。
在 C 语言中,我可以使用宏轻松解决此类问题,但不幸的是,这不能在直接 python 中完成。
问题:遇到这种模式时,如何最好地减少代码占用并提高代码可读性?
c++ - 您可以在 VS 2008 中的 C++ 中创建类似 #Region 的可折叠范围吗?
我非常想念它(在 C# 中经常使用它)。你能用 C++ 做吗?
php - 填充 PHP 数组:首先检查索引?
如果我深陷于循环嵌套中,我想知道其中哪一个更有效:
或者
就可读代码而言,第二种形式更可取。实际上,名称更长,数组是多维的。所以第一种形式最终在我的程序中看起来很粗糙。
但我想知道第二种形式是否会更慢。由于代码是程序中最常执行的函数之一,我想使用更快的形式。
一般来说,这段代码会以相同的“$key”值执行多次。所以在大多数情况下 $array[$key] 已经被设置,并且 isset() 将返回 FALSE。
为了澄清那些担心我将不同代码视为相同的人:就程序的这一部分而言,$val 是一个常量。直到运行时才知道,但它是在程序的早期设置的,在这里不会更改。所以这两种形式产生相同的结果。这是获取 $val 最方便的地方。
performance - 是否应该在 for 循环中使用 < 或 <=
如果您必须遍历一个循环 7 次,您会使用:
或者:
有两个考虑:
- 表现
- 可读性
为了性能,我假设使用 Java 或 C#。使用“小于”或“小于或等于”是否重要?如果您对其他语言有见解,请指出是哪一种。
为了便于阅读,我假设基于 0 的数组。
UPD:我提到的基于 0 的数组可能会让人感到困惑。我不是在谈论遍历数组元素。只是一个一般的循环。
下面有一个很好的观点,即使用一个常数来解释这个幻数是什么。所以如果我有“ int NUMBER_OF_THINGS = 7
”,那么“ i <= NUMBER_OF_THINGS - 1
”会看起来很奇怪,不是吗。
performance - 开发人员应该首先关注可读性还是性能?
开发人员通常会面临两种解决问题的可能方法之间的选择——一种是惯用且易读的,另一种不太直观,但性能可能更好。例如,在基于 C 的语言中,有两种方法可以将数字乘以 2:
和
对于技术和非技术读者来说,第一个版本更容易上手,但第二个版本可能表现更好,因为位移比乘法更简单。(现在,让我们假设编译器的优化器不会检测到这一点并对其进行优化,尽管这也是一个考虑因素)。
作为开发人员,最初的尝试哪个更好?