文档章节

代码里的命名规则:错误的和正确的对比

编走编想
 编走编想
发布于 2013/06/11 15:02
字数 666
阅读 199
收藏 11

编程初学者总是把大量的时间用在学习编程语言,语法,技巧和编程工具的使用上。他们认为,如果掌握了这些技术技巧,他们就能成为不错的程序员。然而,计算机编程的目的并不是关于精通这些技术、工具的,它是关于针对特定领域里的特定问题创造出相应的解决方案,程序员通过相互合作来实现这些。所以,很重要的一点,你需要能精确的用代码表达出你的思想,让其他人通过代码能明白你的意图。

让我们先看看编程大师Robert C. Martin的杰作《Clean Code | 代码整洁之道》里的一句话:

“注释的目的是为了弥补代码自身在表达上的不足。”

这句话可以简单的理解为如果你的代码需要注释,最有可能是你的代码写的很烂。同样,如果在没有注释的情况下你无法用代码完整的表达你对一个问题或一个算法的思路,那这就是一个失败的信号。最终,这意味着你需要用注释来阐明一部分的思想,而这部分在代码里是看不出来的。好的代码能够让任何人在不需要任何注释的情况下看懂。好的编码风格能将所有有助于理解这个问题的所有信息都蕴含在代码里。

在编程理论中,有一个概念叫做“自我描述的源代码”。对于一段代码,一种常见的自我描述机制是遵循某种非严格定义的变量、方法、对象命名规则。这样做的主要作用就是使源代码更易读易懂。所以,也就更容易维护和扩展。

这篇文章里,我将举出一些例子,说明什么是“不好的代码”,什么是“清楚的代码”

命名要能揭示意图

如何命名,在编程中这永远都是个老大难问题。有些程序员喜欢简化、缩短或加密名称,使得只有他们自己能懂。下面让我们看一些例子:

不好的代码:

<!-- lang: java -->
int d;
// 天数
int ds;
int dsm;
int faid;

“d”可以表示任何东西。作者使用注释来表明他的意图,却没有选择用代码来表示。而“faid”很容易导致误解为ID。

清楚的代码:

<!-- lang: java -->
int elapsedTimeInDays;
int daysSinceCreation;
int daysSinceModification;
int fileAgeInDays;

全文:http://blog.jobbole.com/41022/

© 著作权归作者所有

共有 人打赏支持
编走编想
粉丝 138
博文 126
码字总数 107958
作品 0
海淀
程序员
加载中

评论(2)

编走编想
编走编想

引用来自“冷海圣”的评论

文章内容不明确,没有举例出所有或大部分的错误和正确的示例

这是转载的,所以只有一部分内容,全部内容的在最后的链接里
冷三叔
冷三叔
文章内容不明确,没有举例出所有或大部分的错误和正确的示例
Puppet代码书写规范(十九)

Puppet代码的规范 puppet对agent的配置清单主要集中在manifests和modules两个目录中,manifests和modules目录中清单代码文件的符号间距、缩进与空白的使用规范. *.pp文件 建议使用两个空格的软...

青衫解衣
06/29
0
0
C语言基础学习基本数据类型-变量的命名

变量的命名 变量命名规则是为了增强代码的可读性和容易维护性。以下为C语言必须遵守的变量命名规则: 1、 变量名只能是字母(A-Z,a-z),数字(0-9)或者下划线(_)组成。 2、 变量名第一个...

MayaTeacher
2016/08/16
3
1
常用 Java 静态代码分析工具的分析与比较

简介: 本文首先介绍了静态代码分析的基本概念及主要技术,随后分别介绍了现有 4 种主流 Java 静态代码分析工具 (Checkstyle,FindBugs,PMD,Jtest),最后从功能、特性等方面对它们进行分析...

IBMdW
2011/07/01
41.7K
20
区块链 100 讲:风格指南 (style guide) 说明----solidity 语言中文文档

1 概 述 本指南旨在约定solidity代码的编码规范。本指南是不断变化演进的,旧的、过时的编码规范会被淘汰, 而新的、有用的规范会被添加进来。 许多项目会实施他们自己的编码风格指南。如遇冲...

yanyan
07/10
0
0
「数控干货」基于UG CLS文件使用 C 语言制作智能后处理工具

  莫莫小贴士:点击上方↑↑"UG数控编程"即可免费订阅如此好的数控平台哦!   1 前言   UG 后处理操作是 UGCAM 数控加工工作中一个重要环节,主要任务是把在 UG 加工环境下生成的加工刀...

UG数控编程
06/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

C++ gflags

gflags是google一个开源的处理命令行参数的库,相比getopt,更加容易使用。 定义参数 gflags主要支持的参数类型包括 DEFINEbool: boolean DEFINEint32: 32-bit integer DEFINEint64: 64-bit ...

SibylY
24分钟前
0
0
intellij IDEA Properties中文unicode转码问题

在IDEA中创建了properties文件,发现默认中文不会自动进行unicode转码。如下 在project settings - File Encoding,在标红的选项上打上勾,确定即可 效果图如下: unicode转码后效果...

muzi1994
25分钟前
0
0
Java IO类库之PipedWriter

一、PipedWriter介绍 PipedWriter是字符管道输出流,继承自Writer,功能与PipedOutputStream类似,通过与PipedReader组合使用实现类似管道的功能,在多线程环境下,一个线程使用PipedWriter...

老韭菜
29分钟前
0
0
精简分页组件(手写)

需要引入CSS(没错就是这4行) .pagelist { text-align: center; color: #666; width: 100%; clear: both; margin: 20px 0; padding-top: 20px }.pagelist a { color: #666; margin: 0 2px;......

AK灬
30分钟前
3
0
29 岁成为阿里巴巴 P8,工作前 5 年完成晋升 3 连跳,他如何做到?

泡泡是我的好朋友。今年 31 岁,毕业后就进了阿里巴巴,工作五年内从 P4 晋升至 P6、P7、P8。 和他很少聊到工作,但总觉得他有很棒的职场心得,应该分享出来,于是有了这次采访。希望对职场新...

Java填坑之路
32分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部