【第22期】观点:IT 行业加班,到底有没有价值?

命名与设计

原创 2016年08月29日 09:47:34

前言

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

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

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

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

名字的目的

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

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

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

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

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

我的命名原则

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

名字空间

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

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

和编程语言的关系

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

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

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

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

WebUI设计命名规范

这套规范并非单纯的CSS、html或JavaScript命名规范,它涉及了很多使用PhotoShop这类设计工具进行网页设计过程中的命名规范 Web UI 设计命名规范 一.网站设计及基本...

数据库设计中的命名规范

该篇博客是紧接着上篇博客的总结博客,上篇博客具体说了下工作总结需要包括的几项及总结的意义。这篇博客是对机房收费系统整个实现过程进行总结,主要分为三个阶段:第一,系统数据库的设计;第二,系统窗体的设计;第三,系统代

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

MySQL命名、设计及使用规范

MySQL开发规范
  • abbie
  • abbie
  • 2017-07-10 10:33
  • 86

Web UI 美工设计命名规范(有利于团队协作,培训新人)

网站用户界面设计(俗称网页设计)命名规范。 这套规范并非单纯的CSS、html或JavaScript命名规范,它涉及了很多使用PhotoShop这类设计工具进行网页设计过程中的命名规范。首先作者是出于公司几位美工的设计效果图源文件没有对图层命名而开始考虑总结一套的,还有一个原因就是网上大多命...

数据库设计原则、表&字段命名规则、索引调优建立规则

1.数据库设计14规则 1. 原始单据与实体之间的关系    可以是一对一、一对多、多对多的关系。在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体。  在特殊情况下,它们可能...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)