问题标签 [code-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.

0 投票
2 回答
234 浏览

coding-style - 具有多个出口点的功能:这是一种好方法吗?

在使用 VBScript 编程期间,我在函数开始执行操作之前在函数中编写了很多错误检查代码。因此,如果某些预先要求不满足,那么我会执行“退出功能”。因此,例如:

所以,我可以从多个点退出函数。这是好方法吗?在这种情况下,我会得到 if 语句的长 else 分支

也许最好写:

请分享你的想法。

0 投票
4 回答
661 浏览

c# - 使用 IComparable.Compare 没有幻数

我真的很讨厌使用IComparer——直到今天,在使用 .Net 多年之后,我仍然经常被那些 1 和 -1 弄糊涂。

我可以以某种方式用一些不言自明的名称替换比较结果值,而不必在每次比较调用后将输出整数转换为其他值吗?

我试图定义一个这样的枚举:

但这当然不会在没有演员表的情况下编译。

这当然也适用于IComparable.CompareTo

谢谢你的想法

0 投票
7 回答
707 浏览

java - 只调用一次的代码块 - 值得自己的方法吗?

通过观察各种 Android 应用程序(不是我编写的)的源代码,我注意到将某些代码段放入自己的方法中的模式,尽管实际上没有任何代码重用,因为这些方法在整个过程中只被调用一次应用。

到目前为止,我有一条经验法则,即如果一段代码在应用程序代码中使用了两次或多次,那么它应该有自己的方法,仅仅是为了消除代码冗余。

但是看到那些整齐地分解成自己的方法(和自己的方法调用开销)的代码块,我开始可能我错过了一些东西。

除了文档目的之外,还有什么其他原因可以证明只将 4 行代码(仅调用一次!)放入自己的方法中?

0 投票
1 回答
487 浏览

javascript - Javascript lambda 作用域和代码分解

我想在其中一些函数中创建一个简单易用的 API,但无法将函数绑定到它所属的新范围 IE 中!除了那种疯狂的 eval 废话或用它做疯狂的事情,这让事情变得更加混乱之外,我想不出一种方法来做到这一点。

从概念上讲,我正在失去理智,因为过滤器参数应该在完成回调的上下文中运行。我想这是我的问题过滤器参数不是回调它是一个参数并且应该具有它运行的范围而不是它定义的范围。

有人请告诉我,我只是错过了一些愚蠢的事情。

是否有任何语言支持将 lambda 的范围绑定到调用它的位置而不是定义它的位置?

0 投票
2 回答
454 浏览

php - 整洁地编写 MySQL 查询以提高可读性的推荐方法是什么?

有一段时间,我总是把我的疑问放在一行:

现在我已经多次被告知不要使用*,我一直在尝试找到一种方法来使更长的查询可读。到目前为止,我有这样的事情:

这似乎没问题,但是我应该看看周围有什么最佳实践吗?

我的 MySQL 东西是在 PHP 的上下文中完成的。

0 投票
2 回答
426 浏览

c - 标头充满了内联函数,我可以将代码移到头文件之外并且仍然内联所有内容吗?

我已经结束了将许多小的内联函数放入我包含在许多编译单元中的头文件中,编译器正确地内联了代码,并且程序像一个魅力一样工作。

但是现在头文件是非常不寻常的(作为头文件),为了使其更具可读性,我想这样做:

该文件my_header.inline.c将如下所示:

然后,当我想要这些功能时,我只包含头文件。

我的问题是:有没有更好的方法来完成这个而不用太多代码填充头文件?或者我可以这样做并期望其他开发人员能够毫无问题地理解这段代码?

0 投票
8 回答
1858 浏览

clojure - 管理clojure中的括号数量

我是 clojure 的新手,我正在努力解决的主要问题是编写可读的代码。我经常会得到像下面这样的函数。

有很多末端支架的堆积。减少这种情况或以一种更容易发现缺失括号的方式对其进行格式化的最佳方法是什么?

0 投票
6 回答
41619 浏览

javascript - 在 JavaScript 事件代码中对回调和参数使用匿名函数而不是命名函数有什么好处?

我是 JavaScript 新手。我了解该语言的许多概念,我一直在阅读原型继承模型,并且我正在用越来越多的交互式前端内容来刺激我的口哨。这是一种有趣的语言,但我总是对许多非平凡交互模型中典型的回调意大利面条感到厌烦。

我一直觉得奇怪的是,尽管 JavaScript 嵌套回调嵌套是可读性的噩梦,但我在许多示例和教程中很少看到的一件事是使用预定义的命名函数作为回调参数。我白天是一名 Java 程序员,摒弃了对代码单元的 Enterprise-y 名称的刻板印象,我喜欢使用一种具有强大功能 IDE 选择的语言的一件事就是使用有意义的、如果很长,名称可以使代码的意图和含义更加清晰,而不会使实际生产变得更加困难。那么为什么在编写 JavaScript 代码时不使用相同的方法呢?

考虑一下,我可以提出支持和反对这个想法的论点,但是我对语言的天真和新奇使我无法得出关于为什么这在技术层面上会很好的任何结论。

优点:

  • 灵活性。具有回调参数的异步函数可以通过许多不同的代码路径之一访问,并且可能不得不编写一个命名函数来解决每个可能的边缘情况。
  • 速度。它在很大程度上影响了黑客的心态。用螺栓固定它,直到它起作用。
  • 其他人都在做
  • 更小的文件大小,即使是微不足道的,但每一点在网络上都很重要。
  • 更简单的 AST?我会假设匿名函数是在运行时生成的,因此 JIT 不会将名称映射到指令,但我只是在猜测这一点。
  • 发货更快?这个也不确定。再次猜测。

缺点:

  • 这是可怕的和不可读的
  • 当您将坚果嵌套在回调沼泽的深处时,它会增加混乱(公平地说,这可能意味着您一开始就编写了结构不佳的代码,但这很常见)。
  • 对于没有功能背景的人来说,这可能是一个奇怪的概念

由于有如此多的现代浏览器显示出比以前更快地执行 JavaScript 代码的能力,我看不出使用匿名回调如何获得任何微不足道的性能提升是必要的。似乎,如果您处于使用命名函数可行的情况(可预测的行为和执行路径),那么没有理由不这样做。

那么是否有任何我不知道的技术原因或陷阱使这种做法如此普遍是有原因的?

0 投票
1 回答
126 浏览

css - 在使用modernizr 时,混合技术是一种不好的做法,即支持或反对特定功能?

我正在尝试modernizr。在同一个样式表中混合“针对/反对各种功能”是否可以,如果可以,是否有关于如何混合它们的一般规则?

例如,这是好的还是不好的做法。我只是想知道混合约定是否会造成混淆,以及通常坚持一种约定是否会更好,仅在必要时使用例外;或者以避免所有异常的方式进行编程是否重要。

0 投票
3 回答
79 浏览

jquery - 这个jQuery代码可以重构吗

我正在努力提高我的 jQuery 技能,并且我有这段代码。它的基本目的是调整背景的大小和调整大小以使其与响应式滑块保持相同的高度,从而匹配窗口的大小;并跟踪它是否由用户调整大小。

是否可以更好地重构它,或者它是否良好。