命名与设计

来源:互联网 发布:巨人网络纪学锋离职 编辑:程序博客网 时间:2024/05/18 03:30

前言

几乎所有的程序语言,都会告诉你某种形式的命名方法,比如八十年代早期的匈牙利表示法(猪一样的命名方法,不推荐),到后来linux推荐的小写和下划线的表示法等等。在我们迷失在这些五花八门的表示法之前,我给大家一个当头棒:别沉迷在这些表示法里头去了!你知道名字是用来干什么的吗?你起的这些名字,有没有帮助你实现你的目的?

这就是这篇文章的第一个目的:让我们从花里胡哨的命名方法,回到名字的目的的源头:改善对程序的理解和阅读中去。

这篇文章的第二个目的,是在我看到程序代码普遍存在的这个现象之后思考的:我们大多数同学,在写程序的时候,尤其java程序,会非常注意命名的规范、合理,对程序里头的数据结构和成员变量,都有不错的命名,可是一到了数据库、表、字段的命名的时候,就好像中了邪一样,乱七八糟,不知所云。完全忘记了数据库本身实际上是整个业务中最核心的数据结构的处理软件。

所以本文的第二个目的是提醒大家:数据库是应用软件的真实数据结构的基础容器,数据库、表、字段设计和程序中的数据结构设计具有同等甚至更加关键的重要程度。

名字的目的

总结一下,计算机里头的名字的目的是:

  1. 让人便于记忆某个事物
  2. 给事物赋予一定的定义

也就是说,好的名字应该是看到就知道是做什么的。

数据库表设计就是你的核心数据结构设计

很多同学思维里头并不认为数据库表设计实质上就是数据结构的设计,看到这个现象的时候,我会很惊讶。很多同学对数据库的认识,依然停留在一个数据永久保存的层面上,我在这篇文章里要大大声的吼叫一嘴:同学!你错了!数据库表的设计,就是你的应用软件的核心数据结构设计啊!

我的命名原则

言简意赅,表达准意思为主
像语言那样,充分利用数据库的完整的环境,做好库、表的名字空间管理
尽量避免使用关键字或者保留字
尽量用简单的词语
奥卡姆剃刀原则——意思就是去掉没啥用的花哨完页
保持一致的习惯
必要的时候去掉元音用辅音

名字空间

和许多编程语言一样,数据库/sql语言也具备名字空间的概念,名字空间是什么呢?简单说,名字空间就是一个名字的可见范围,这样我们就可以有效地对付重名问题。程序会和现实社会一样,名字也可能会重复。这个时候,名字空间就可以帮助我们区分究竟指的是哪个人。
在计算机世界里头,比较古老的名字空间是我们的目录路径。这个想必大家都很熟悉了。另外一个例子是java的CLASSPATH,实际上,仅仅从PATH这个关键字样就可以看出它是一个名字空间。

事实是:在计算机命名范畴里,所有叫 PATH 的东西,基本上都是某种形式的名字空间。我们可以利用全路径(全称)的办法,来唯一的指明某个可能重名的名字。

和编程语言的关系

我拿java举例,java里头,有包(package)、类(class)、方法(function)等名字空间,数据库里头其实也有对应的名字空间:数据库(这个在java里头没有对应的)、模式(schema)这个对应java的package、表(table)对应java的类、函数和java的方法对应。然后呢,成员变量对应的是字段。

这样写出来,希望能帮助java的同学做表设计。

注:以上文章源自敬爱的何老师(何伟平)

0 0
原创粉丝点击