Tag: 代码可读性

格式化LINQ查询的最佳方法

在你忽略/投票结束这个问题之前,我认为这是一个有效的问题,因为代码清晰性是讨论的一个重要话题,所以编写可维护的代码是非常重要的,我非常感谢那些曾经遇到过。 我最近遇到了这个问题,因为大量的嵌套,LINQ查询可以非常快速地实现。 下面是我所想到的格式差异的一些例子(对于相同的非复杂的查询) 没有格式化 var allInventory = system.InventorySources.Select(src => new { Inventory = src.Value.GetInventory(product.OriginalProductId, true), Region = src.Value.Region }).GroupBy(i => i.Region, i => i.Inventory); 格式boost var allInventory = system.InventorySources .Select(src => new { Inventory = src.Value.GetInventory(product.OriginalProductId, true), Region = src.Value.Region }) .GroupBy( i => i.Region, i => i.Inventory); 块格式化 var allInventory = system.InventorySources .Select( src […]

Python列表理解 – 希望避免重复评估

我有一个列表理解近似于: [f(x) for x in l if f(x)] 其中l是一个列表,f(x)是一个返回列表的昂贵函数。 我想避免f(x)每f(x)的非空发生两次评估。 有什么方法可以将其输出保存在列表理解中? 我可以删除最后的条件,生成整个列表,然后修剪它,但这似乎是浪费。 编辑 : 已经提出了两种基本方法: 内在的发电机理解: [y for y in (f(x) for x in l) if y] 或记忆。 我认为内在的生成器理解对于所述的问题是优雅的。 其实我简化了这个问题来说清楚,我真的很想: [g(x, f(x)) for x in l if f(x)] 对于这种更复杂的情况,我认为备忘录产生了一个更清洁的最终结果。

在使用map.get()时使用java Map.containsKey()是多余的

我一直在想,在最佳实践中是否允许使用java.util.Map上的containsKey()方法,而不是对get()的结果进行空检查。 我的理由是,查看值的两次似乎是多余的 – 首先为containsKey() ,然后再为get() 。 另一方面, Map大多数标准实现可能会caching最后一次查找,或者编译器可以以其他方式取消冗余,并且为了代码的可读性,最好维护containsKey()部分。 我非常感谢您的意见。

最佳代码宽度的研究?

如果您在IDE中启用“查看右边距”,则可能会默认为80个字符。 除了几年前我曾经在一家公司工作过的标准,我没有理由把它改成120,没有别的公司告诉我做不同的事情。 我的问题是,是否有任何研究显示80个字符是代码可读性的最佳宽度,或者这个值只是“这是它永远存在的方式”,没有人真正知道为什么会这样? 而且,一行代码的宽度应该是你编码标准的一部分吗?