文档章节

学编程,先知规范

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
250
2
玩游戏学编程:CodeCombat中国新活动[宝石争霸赛]

国庆,我们来啦! 经过一个多月的内测,CodeCombat中国现在已完全开放! What is CodeCombat中国? CodeCombat中国的原身是国外团队沥尽心血打造的一款编程学习游戏:CodeCombat CodeCombat...

Crokily
2015/10/06
2
0
JavaScript 异步

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

掘金官方
2018/01/02
0
0
Go语言基础学习:变量

Go语言基础学习(一)变量 猜你喜欢 Ceylon语言学习笔记(1) 《从零开始学Swift》学习笔记(Day 69)——Swift与Objective-C混合编程之语言 go语言学习-常量 GO语言学习-复杂类型(2) Go语言学习...

d_watson
2016/04/15
12
0

没有更多内容

加载失败,请刷新页面

加载更多

自定义线程池

自定义线程工厂: public class CustomThreadFactory implements ThreadFactory { private static final Logger LOGGER = LoggerFactory.getLogger(CustomThreadFactory.class); pu......

hensemlee
12分钟前
1
0
【剑指offer纪念版】-- 面试题目录

2.实现Singleton模式 3.二维数组中的查找 4.替换空格 5.从尾到头打印链表 6.重建二叉树 7.用两个栈实现队列 8.旋转数组的最小数字 9.斐波那契数列 10.二进制中1的个数 11.数值的整数次方 12...

细节探索者
25分钟前
1
0
记一次oom内核优化记录:vm.lower_zone_protection

情景 最近gitlab服务会偶发性500,当前机器部署了gitlab、nfs等服务,经过排查发现是nfsd引发oom,导致系统运行不畅。处理过程如下: 事故现场 开发在使用gitlab的时候发现,偶发性的出现500...

阿dai
57分钟前
4
0
Spring Batch JSON 支持

Spring Batch 4.1 开始能够支持 JSON 格式了。这个发布介绍了一个新的数据读(item reader)能够读取一个 JSON 资源,这个资源按照下面的格式: [  {    "isin": "123",    ...

honeymose
今天
0
0
浏览器缓存

HTTP缓存类型 200 from cache:直接从本地缓存获取响应,可细分为from disk cache, from memory cache 304 Not Modified:协商缓存,本地未命中发送校验数据到服务端,如果服务端数据没有改变,则读...

关元
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部