我们如何编写易于编写的代码,让其他没有编写任何部分内容的人轻松阅读?
我们如何编写容易被他人阅读并且没有任何编写经验的代码?
解决方案
回答
保持代码美观,清晰和简单。当显而易见时,不要评论我们在做什么(例如,我知道一个foreach或者如果可以,我通常不需要解释)。
使简单的事情占用更少的行的代码技巧(例如自动属性)也是不错的。
回答
可能最重要的一点是保持语法一致。我还将查看我们正在编写的语言的设计准则。
回答
确保其他人可以阅读代码的最佳方法是确保代码简洁明了。即
- 对变量,函数和类使用自记录名称。
- 对复杂的算法进行注释,以使读者不必花太多时间弄清楚它的作用。
- 确保制表符和换行符在整个代码中保持不变。
除了开始涉足某些主观领域之外,大多数人都应该在这些项目上达成共识。
回答
- 记录有关其执行原因的代码。
- 确保所有变量函数等均被一致且描述性地命名
- 使用空格将代码的逻辑部分分组在一起,以便它在读取时流动。
- 按逻辑顺序放置功能/方法等。
- (这是我的个人喜好)请确保无需在屏幕上水平滚动即可轻松读取代码(有些人也说垂直方向,但这似乎并不困扰我)。
回答
这个问题是主观的,应该按照FAQ在StackOverflow上避免
What kind of questions should I not ask here? Avoid asking questions that are subjective, argumentative, or require extended discussion. This is a place for questions that can be answered!
简短的答案是:
- 避免过多评论:
// add one to the count: i++;
- 使用好的变量和方法名称:
int x = i + j; int runSum = prevSum += newValue;
- 在可用的地方使用编码速记:
if (x == y) { z = a; } else { z = b; } z = (x == y) ? a : b;
回答
购买和阅读代码完整版2. 其中包含大量编写易于阅读/维护代码的内容。
回答
我不认为这是一个主观的问题,但这太笼统了!这不仅仅是注释和提供良好的变量名称。它涉及人类如何理解代码。因此,系统必须以某种方式实现,以使读者可以通过两种方式轻松构建其设计的思维模型:
- 自上而下:假设用户了解系统域,则他倾向于对实现方式进行假设,因此他将扫描系统软件包和类以查找可以识别的实体。给类起好名字并适当地模块化它会很有帮助。
- 自下而上:一旦用户到达一部分代码,他将从那里开始导航,建立大量的知识。如果系统具有较低的内聚性和大量的隐式依赖关系,则用户将丢失。
肯特·贝克(Kent Beck)遵循三项原则:沟通,简洁和灵活性。当然,有时我们必须为了灵活性而牺牲简单性,反之亦然。
这可能会继续下去。这个问题的答案很适合一本大书。正如@rmbarnes所建议的那样,购买并阅读Code Complete2. 我还建议Kent Beck的实现模式与问题高度相关。
回答
从成为一名拥有多年开发经验的开发人员开始,这对我来说一直是一个真正的问题。我什至不能说我花了几个小时思考这个问题,并在代码中尝试了不同的事情。上面的答案也很好。我只想添加一两件事。
- 我们每个人都有不同的事物,这使我们的阅读不同于其他事物。我们发现容易阅读的内容可能真的很难被其他人阅读。
- 代码的整洁度是一个非常重要的方面。很快,如果它变得局促,那就别管它了。
- 最重要的是:我们是自己的老师。无论我们采用哪种风格,都需要根据自己的经验来更改一两个东西。随着时间的流逝,我们必须回到以前的版本来获取修复程序或者文档,我们将获得"我不敢相信我编写的代码看起来像这样"的效果。记下我们在代码可读性方面遇到的问题,并确保不要再这样写。
回答
由于其他所有人在阅读此问题时几乎都说出了我的想法,因此,我将只分享两本我们可能感兴趣的与该主题相关的书。这些书使用开放源代码示例来解释如何读写高质量的代码。除了要完成代码外,我想当我们想用任何语言编写好的代码时,它们都是宝贵的资源。
- 阅读代码:开源视角
- 代码质量:开源角度
回答
我很可能是少数派,但我不介意空格。我喜欢白色的空间。由于编译器将其取出并且HD空间非常便宜,因此我希望在代码中保留空白。
例如,我喜欢:
int total = 10; int sum = 0; for (int i = 0; i < total; i++) { sum += i; } // Next coding statement is a space below the bracket return sum;
我不喜欢:
int total = 10;int sum = 0; for (int i = 0; i < total; i++) { sum += i; } return sum;
即使在技术上不需要它们,我也将括号中的内容放进了括号中。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。最好的例子是if语句。我发现它极大地提高了可读性。
if(true) // some action if(true) { // Some action }
对我而言,最好的代码是尽可能简单的代码。用最少的评论,最重要的是。
回答
我的规则:
- 给所有内容起一个有意义的名称,然后命名为它。避免对变量使用" x"和" y"。
- 不要缩写任何内容。我不在乎变量名有多长,即使有注释也不要缩写。缩写的解释是主观的。 Cmp是指计算机吗?电脑?公司?赞扬?使其成为一个强有力的规则,没有例外,并且易于遵循。
- 不要在同一行上放置多个语句。每行执行一个动作。
- 避免像瘟疫一样使用匈牙利符号。还是ntHungarian?
- 即使对于单行(如果适用)子结构,也要使用括号。缩进差异太容易丢失。
回答
我们可能想看看Robert C. Martin的Clean Code。它提供了许多有用的实践来确保代码可读。
此外,如果代码得到大量可以彻底测试代码的单元测试的支持,则它为用户提供了一种通过查看测试功能来理解代码的方式。我们还将发现,如果遵循"测试驱动开发"过程,并为每一个功能编写测试,则功能往往很小,只能做一件事情并且做得很好,并且往往像故事一样流连忘返庞大的"资料"网络。
测试往往比注解保持最新。我经常忽略评论,因为它们很快就会过时了,这是一个简单的事实。
回答
这里有很多很好的答案,我想从喜欢全局的工程师的角度添加一些内容。我经常发现,从类图或者程序包级别概述(图/注释等)的角度出发,获得高层概述,如果文件中不存在10行标题注释,那么该怎么做对我有很大帮助。我们可以使用Doxygen / Javadocs生成它们,或者花10-15分钟在笔记部分中记下一些内容。
它们不必一定是100%准确的,我怀疑类/包的整体结构是否会在没有完全重写的情况下发生变化。
我个人认为这种总体概况非常有帮助,并且肯定还有其他人也有相同的看法。