文档章节

学编程,先知规范

cnbo
 cnbo
发布于 2017/08/13 22:26
字数 1476
阅读 60
收藏 0

我为什么要写这篇博客

写博客一直是我想去做的事,可是一直没有付诸于行动。虽然看别人的博客很容易,但当自己开始在键盘上敲打的时候,我发现太痛苦了。

八月初,和我同一批校招进厂的同学们都已上岗工作了。因为我们的水平不太统一,有的基础好点,有的基础差点,所以老大每周会给我们布置作业,同时也会对我们的作业进行讲评。经过最近两次作业,我发现有部分同学的编码规范有待提高。其实这也可以理解,因为他们之前没有接触过,在学校的时候也没人告诉他们编码要讲究规范。

我是四月份进的厂,老大安排我维护两个系统。当我看见系统的源码的时候,我的心里有着一万匹叫做曹里的马在奔腾。包含几百行代码的方法随处可见;一个方法有几十个形式参数是正常现象;各种代码风格混杂在一起特别杀马特;在JSP里掺杂着 Java、JS、HTML、CSS 代码,有种 56 个民族一家亲的味道;整个系统有一半的逻辑是写在存储过程里的,先喝口水压压惊。

其实公司老系统代码令人恶心的一个很重要的原因就是上梁不正,下梁歪。由于刚进来的新人也不分不清代码风格的好坏,他们只能学着前人的风格。这样的恶性循环非常可怕。我希望所有学习编程的同学,从开始就养成一个非常好地编码习惯。

高级程序语言诞生的目的

我们现在接触到的绝大多数编程语言都是高级语言,例如: C、C++、Java、JavaScript 等。我们在这里不论各种高级程序语言的优劣。

我们一定要铭记,用高级语言写出来的代码是给人看的。我相信高级语言诞生时最宏伟的一个目标就是:即使没有学过编程的人,他们可以通过类名、方法名和变量名大概知道程序的功能。

像写好一篇文章一样写代码

我相信一篇优秀的文章,一定是内容精彩,同时字迹漂亮,文章格式人性化。如果一篇文章的内容非常的不错,但是作者的字及其丑陋,同时文章的格式乱糟糟的。我相信那依然是一篇没人喜欢看的天书。写代码也是同样的道理,即使你的代码所实现的功能非常牛逼,但我们这些凡夫俗子都看不懂,那你的代码也没有多大的价值。

我们简单看一下写出好代码要掌握哪些规范:

  • 每个方法所能容纳的代码行数不要超过 30 行,一行代码的字符数量控制在 120 以内。
  • 一个方法只做一件事, 就好比我们在家只吃饭,却不做饭。
  • 在给类名、方法名和变量命名时尽量做到见名知意,这会比你们的注释更加给力,因为这时你们的代码自带注释功效。
  • 类名的每个单词的首字母大写;方法名和变量名的第一个单词的首字母小写,后面单词的首字母大写,这就是传说中的驼峰命名法;常量名的所有字母都要大写,并且每个单词间用下划线隔开。
  • 如果一个方法的形式参数中有太多的基本类型,或者数量超过了 5 个,这时你可以将这些参数封装成一个类。
  • 当一个方法的逻辑比较复杂的时候,一定要加上注释;给类加上注释,以阐明一个类有哪些功能。

我们也是自己嘴中的那个傻 BI

如果你们觉得养成良好的编码习惯并不重要,或者是很难。那么你们可以时隔一个月、半年或者一年再去看你们之前写过的代码,我相信你们会喷嚏连连,因为你们会骂这是哪个傻*写的,很不幸那个傻BI就是你们自己。

不要抱着侥幸的心态,自以为只要是自己写的代码自己就能看懂。其实,你们写的代码并不是你们自己的,随着时间的推移,你们的代码就是别人的啦。为了不让别人(包括你们自己)在背后骂你们,一定要养成良好的编码习惯。

总结

我在文章中并没有详细地列举具体地编码规则,因为这些规则已经有人给出来了。阿里巴巴为我们贡献了一套 Java 开发规范,这套规范不仅适用于 Java 开发,同样对其他的编程开发有借鉴意义。这里是阿里巴巴 Java 开发手册的下载地址。[PS: 阿里巴巴的 Java 开发团队是国内最牛逼的]

最后我给大家推荐一本非常好的书[编写可读代码的艺术],它会教你如何写出一手漂亮的代码,在书中有各种编程语言的实例。
输入图片说明

© 著作权归作者所有

共有 人打赏支持
cnbo
粉丝 5
博文 9
码字总数 15846
作品 0
深圳
程序员
私信 提问
杰尔夫CTT团队/weapp-jief-bilibili

本系列教程开始 微信小程序11月4日开始公测,做技术的我们又得解锁新技能了,所以决定一边学一边写,分享走过的坑。 以《微信小程序 - 哔哩哔哩弹幕视频网》移动端网站为基础开发微信小程序版...

杰尔夫CTT团队
2016/11/14
0
0
开源的ios程序在哪可以看到呢?

开源这个词谁都知道,程序员可以通过开源的程序学很多东西。 我做了两年的ios,想学更多的东西,想看看别人写的代码,别人写的项目,我该去哪看呢?我一般都是看看常用第三方库的源码。可是我...

任我飞啊000
2014/07/06
242
2
JavaScript 异步

JavaScript怎么使用循环代替(异步)递归 问题描述 在开发过程中,遇到一个需求:在系统初始化时通过http获取一个第三方服务器端的列表,第三方服务器提供了一个接口,可通过分页形式获取列表。...

掘金官方
01/02
0
0
阿里云先知:为中国公益机构投入200万安全基金,为全球企业避免15亿经济损失

6月16日,2018阿里云先知 · 白帽大会在京召开。近千名安全研究者和白帽子齐聚,分享其近一年来的成长与技术突破。 现场,阿里云先知负责人王昱(猪猪侠)宣布:先知将成立“先知红队”,在业...

云安全2016
06/17
0
0
关于Java中的英文?不会英文就不能学习Java吗?

好多学生问,不会英语就不能学Java吗?不是。英语和Java完全没关系。但是就算你不会英语也没关系。Java中系统规定的单词也就200个作用。然后其他的就是你根据意思可以自定义构造一些单词。像...

虞姬-lu
01/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

ConcurrentHashMap 高并发性的实现机制

ConcurrentHashMap 的结构分析 为了更好的理解 ConcurrentHashMap 高并发的具体实现,让我们先探索它的结构模型。 ConcurrentHashMap 类中包含两个静态内部类 HashEntry 和 Segment。HashEnt...

TonyStarkSir
今天
3
0
大数据教程(7.4)HDFS的java客户端API(流处理方式)

博主上一篇博客分享了namenode和datanode的工作原理,本章节将继前面的HDFS的java客户端简单API后深度讲述HDFS流处理API。 场景:博主前面的文章介绍过HDFS上存的大文件会成不同的块存储在不...

em_aaron
昨天
2
0
聊聊storm的window trigger

序 本文主要研究一下storm的window trigger WindowTridentProcessor.prepare storm-core-1.2.2-sources.jar!/org/apache/storm/trident/windowing/WindowTridentProcessor.java public v......

go4it
昨天
6
0
CentOS 生产环境配置

初始配置 对于一般配置来说,不需要安装 epel-release 仓库,本文主要在于希望跟随 RHEL 的配置流程,紧跟红帽公司对于服务器的配置说明。 # yum update 安装 centos-release-scl # yum ins...

clin003
昨天
9
0
GPON网络故障处理手册

导读 为了方便广大网络工作者工作需要,特搜集以下GPON网络处理流程供大家学习参考。开始—初步定为故障—检查光纤状况—检查ONU状态--检查设备运行状态—检查设备数据配置—检查上层设备状态...

问题终结者
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部