Tag: 可读性

布尔方法命名可读性

简单的问题,从可读性的angular度来看,你喜欢哪种方法名称的布尔方法: public boolean isUserExist(…) 要么: public boolean doesUserExist(…) 要么: public boolean userExists(…)

如何让我的代码更易于下一位开发人员理解?

我已经进行了大约8个月的第一次编程工作,到目前为止我已经学到了不可思议的数字。 不幸的是,我是内部应用程序的小创业公司的唯一开发者。 有史以来第一次,当我离开这个工作时,我会把我的一些项目交给别人。 我已经完整地logging了我的所有项目(至less我是这么认为的),但是对于别人阅读我的代码,我仍然感到紧张。 例如,我一直都是这样做的。 for (int i = 0; i < blah.length; i++) { //Do stuff } 我应该说“我”是描述性的吗? 这只是一个临时variables,并且只会存在于这个循环中,似乎很明显,循环对'i'做了什么。 这只是一个例子。 另一个是我的variables名称不同…除了开始所有私人成员的下划线之外,我没有真正遵守一个命名标准。 有没有什么资源可以告诉我如何让下一个开发者更容易? 这种types的东西有标准吗?

开发人员是否应该首先考虑可读性或性能?

通常情况下,开发者将面临两种解决问题的可能方式之间的select – 一个是惯用的,可读的,另一个不那么直观,但可能performance更好。 例如,在基于C的语言中,有两种方法可以将数字乘以2: int SimpleMultiplyBy2(int x) { return x * 2; } 和 int FastMultiplyBy2(int x) { return x << 1; } 第一个版本对技术和非技术读者来说都比较简单,但是第二个版本可能performance更好,因为位移比乘法更简单。 (现在,让我们假设编译器的优化器不会检测到并优化它,但这也是一个考虑因素)。 作为一个开发人员,这将是一个更好的初始尝试?

为什么我应该大写我的SQL关键字?

可能重复: T-SQL关键字使用大写是否有很好的理由? 简单的问题。 我个人发现一串小写字符比一串大写字符更可读。 是一些旧的/stream行的SQL的大小写敏感的东西? 以供参考: select this.Column1, case when this.Column2 is null then 0 else this.Column2 end from dbo.SomeTable this inner join dbo.AnotherTable another on this.id = another.id where this.Price > 100 与 SELECT this.Column1, CASE WHEN this.Column2 IS NULL THEN 0 ELSE this.Column2 END FROM dbo.SomeTable this INNER JOIN dbo.AnotherTable another ON this.id […]

如果已知背景颜色,如何find好看的字体颜色?

似乎有这么多的颜色轮,颜色select器和颜色匹配networking应用程序在那里,你给一种颜色,他们会发现一些其他颜色,将创build一个谐波布局,当组合使用。 然而,其中大多数只关注背景颜色,任何印在每种背景颜色上的文本(如果在预览中都打印文本)是黑色或白色。 我的问题是不同的。 我知道我想用于文本区域的背景颜色。 我需要帮助的是select一些颜色(越多越好),我可以在这个背景上使用字体颜色。 最重要的是,颜色将确保字体是可读的(对比度不能太低,也可能不太高,以避免眼睛受到压力),当然,前景和背景的组合看起来不错。 任何人都知道这样的应用程序? 我更喜欢一个Web应用程序,我必须下载任何东西。 谢谢。

应该在for循环中使用<或<=

如果你不得不遍历一个循环7次,你会使用: for (int i = 0; i < 7; i++) 要么: for (int i = 0; i <= 6; i++) 有两个考虑因素: 性能 可读性 为了performance我假设Java或C#。 如果使用“小于”或“小于或等于”,这是否重要? 如果你有不同的语言洞察力,请指出。 为了可读性,我假设了基于0的数组。 UPD:我提到基于0的数组可能会使事情混淆。 我不是在讨论数组元素的迭代。 只是一个普遍的循环。 下面有一个好的一点是使用一个常数来解释这个幻数是什么。 所以,如果我有“ int NUMBER_OF_THINGS = 7 ”,那么“ i <= NUMBER_OF_THINGS – 1 ”看起来很奇怪,不是吗?

是(true)与破坏编程实践?

我经常使用这种代码模式: while(true) { //do something if(<some condition>) { break; } } 另一位程序员告诉我,这是不好的做法,我应该用更标准的代码replace它: while(!<some condition>) { //do something } 他的推理是,你可以“轻松地忘记”rest,并有一个无止境的循环。 我告诉他,在第二个例子中,你可以轻而易举地处于一个永不回头的状态,所以就像循环一样容易,所以两者都是同样有效的做法。 而且,我经常更喜欢前者,因为当有多个中断点时,代码更容易阅读,即多个条件脱离循环。 任何人都可以通过为一方或另一方添加证据来丰富这一论点吗?

StringBuilder / StringBuffer与“+”运算符

我正在阅读“ 更好,更快,更轻的Java ”(由Bruce Tate和Justin Gehtland撰写),并且熟悉敏捷类团队的可读性要求,例如Robert Martin在其干净的编码书中所讨论的内容。 在现在的团队中,我被明确地告诉不要使用+运算符,因为它在运行时创build额外的(和不必要的)string对象。 但是这篇文章 ,在'04年写回来谈到如何对象分配是关于10个机器指令。 (基本上免费) 它还谈到GC如何帮助降低这种环境下的成本。 什么是使用+ , StringBuilder或StringBuffer之间的实际性能折衷? (在我的情况下,它只是StringBuffer因为我们仅限于Java 1.4.2。) 对于我来说, StringBuffer结果是丑陋的,可读性较差的代码,正如Tate书中的几个例子所演示的那样。 而且StringBuffer是线程同步的,似乎有自己的成本超过使用+运算符的“危险”。 思想/意见?

如何在JavaScript中将长正则expression式分成多行?

我有一个非常长的正则expression式,我希望在我的JavaScript代码中分成多行,按照JSLint规则保持每行长度为80个字符。 我想,阅读才更好。 这是模式示例: var pattern = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;

是“for(;;)”比“while(TRUE)”更快? 如果没有,为什么人们使用它?

for (;;) { //Something to be done repeatedly } 我已经看到了这种东西,但是我觉得这很奇怪……说实话,说这些话不是很清楚吗? 我猜(这是许多程序员求助于隐藏代码的原因),这是一个微小的利润更快? 为什么,这真的值得吗? 如果是这样,为什么不这样定义: #define while(true) for(;;) 另见: 哪个更快:while(1)或while(2)?