问题标签 [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 投票
7 回答
7316 浏览

c# - 如何实现 NotOfType在 LINQ 中有很好的调用语法吗?

我正在尝试提出一个实现 for NotOfType,它具有可读的调用语法。NotOfType应该是补充OfType<T>并因此产生所有类型元素T

我的目标是实现一个方法OfType<T>,就像在这段代码的最后一行中一样:

但是,我无法提出支持该特定调用语法的实现。

这是我迄今为止尝试过的:

调用这些方法如下所示:

我认为这两个电话的风格都存在重大缺陷。第一个具有冗余的“类型/类型”构造,而第二个则没有意义(我想要一个既不是动物也不是长颈鹿的动物列表?)。

那么,有没有办法完成我想要的?如果没有,在该语言的未来版本中是否有可能?(我在想也许有一天我们会命名类型参数,或者我们只需要显式提供无法推断的类型参数?)

还是我只是傻?

0 投票
5 回答
215 浏览

c# - 在 C# 中重写此 If 的最简洁/最惯用的方法

我有这个if-else声明可以满足我的要求。正如您应该能够说的那样,它正在做的事情非常简单。

enum所指的是:

它是如此简单,我确信有一种更简洁、更易读的方式来表达这一点。

注意,如果不是因为 VS 默认强制实施的荒谬的“每行一个大括号”规则,我可能不会那么烦恼。例如,在 VB 中,我可能会从这个代码块中丢失大约 10 行!(对此有什么想法吗?)

0 投票
7 回答
377 浏览

coding-style - 代码结构:我应该使用很多函数来增加可读性吗?

我的问题考虑到了 Bash 和 PowerShell 脚本,但我想它也适用于其他语言。

据我了解,函数的目的是多次执行相同(或非常相似)的任务。这减少了脚本中的代码量,也使其更易于维护。

考虑到这一点,如果您发现您的脚本只调用一次函数,那么该函数没有理由作为函数存在。相反,您应该获取函数的代码并将其放置在调用该函数的位置。

说了这么多,这是我的问题:

如果我有一个复杂的脚本,我是否应该将每一段代码移动到它自己的函数中,即使每个函数只会被调用一次?这将大大增加脚本的可读性,因为它的逻辑(函数)都将位于脚本的顶部,而执行流程将位于脚本的底部。由于 50 行代码仅由 1 行表示,因此更容易理解脚本在做什么。

其他人会这样做吗?这种方法有缺点吗?

0 投票
4 回答
1608 浏览

c - 避免大量 if-else 检查

我正在处理一个中等大小的 C 文件,我需要针对 3 个不同的排他条件进行处理。(如果条件 1 存在,则执行此操作,如果条件 2 存在,则执行其他操作,同样如此)。因此,在该文件的许多地方,我需要进行 if/else 检查——这看起来很脏。我有大约 50 个地方在做这些检查。

有没有更好的方法,让代码看起来更干净?

0 投票
2 回答
131 浏览

c# - .NET 应用程序的众所周知的编码标准?

我正在使用 Silverlight、WCF 和 EF 开发 Intranet 应用程序。

我应该遵循什么标准来确保我的代码可以被未来的开发人员轻松维护?

0 投票
3 回答
658 浏览

c# - 哪个快:查询语法与循环

以下代码提供了两种方法来生成总和小于 100 的整数对,并且它们根据与 (0,0) 的距离以降序排列。

这段代码摘自 Bill Wagner 的《Effective C# 》一书,第 8 条。在整篇文章中,作者更多地关注代码的语法、紧凑性和可读性,而很少关注性能,几乎没有讨论它。

所以我基本上想知道,哪种方法更快?什么通常在性能上更好(通常):查询语法或手动循环?

请详细讨论它们,如果有的话,请提供参考。:-)

0 投票
1 回答
102 浏览

ruby-on-rails - 在 Ruby on Rails 中,什么样的设计模式是使用 false 表示不进行 DB 查找,使用 nil 表示可以查找?

Restful Authentication中,我发现这current_user是相当复杂的,当@current_user设置为 false 时,这意味着不要尝试再次查找用户(通常来自 DB),而nil意味着没关系,可以在 DB 中再次查找:

第 8 行lib/authenticated_system.rb

复杂的事情是,如果它试图从login_from_session等中查找数据库并且找不到它,那么分配给的最终值@current_usernil,并且该方法返回nil(这是该方法中的最后一个评估值)。除非其他地方的代码中还有另外两个地方实际上可以设置@current_user为 false,这将触发unless,导致整个语句返回nil,而@current_user保持为false,并且方法返回nil......

对于依赖这些错综复杂的事实的代码,我几乎说不出话来。 false有特殊含义,nil在代码中有特殊含义,但没有文档,没有注释,current_user可以是nil,而@current_user可以继续是false。难道它实际上是一种设计模式,所以人们对它很熟悉,很了解吗?

0 投票
9 回答
38966 浏览

python - 多行“if”语句缩进的代码样式?

当缩进长 if 条件时,你通常会做这样的事情(实际上,PyDev 缩进是这样的):

但是,这会使 if 语句开始的块与 if 条件的最后部分处于相同的缩进级别,这使得它非常难看/在我看来很难阅读,因为您不会立即看到块的开始位置。

我想到的其他一些风格:

这看起来非常不一致,因为第二行的缩进比第一行多得多,但它是可读的。

这也比第一个示例更具可读性,但缩进不再是 4 的倍数,此外它看起来是错误的,因为第二行的缩进少于第一行条件开头的缩进。


所以,我的主要问题是:对于不需要过长行(即单行条件)的情况,是否有建议的缩进样式?如果不是,更喜欢这样的情况?

0 投票
2 回答
856 浏览

c# - 如何使用 C# 从集合中的第二个表开始枚举 DataSet 的 DataTables

从索引 1 开始的 for 循环是一个明显的答案。我相信还有很多其他方法可以做到这一点。但是什么是最易读的方式?

问题是使用 C# 4.0。LINQ 是可选的。

0 投票
3 回答
395 浏览

database - 在 Perl 中外部存储散列数据

我目前正在重构一个依赖于三个哈希(简单哈希)的脚本,这些哈希在脚本的开头进行了初始化。这些哈希值总共占用了脚本中的一百多行。为了提高代码的整体可读性和清洁度,我是否应该将此信息存储在脚本之外并在开始时读取信息?数据本身应该大部分是静态的(有时可能需要更改个别条目)。

如果是,我将如何将其存储在数据库/建议的存储介质中?(谈到 SQL,我是个菜鸟)。