存在软件可以解决您的问题(例如 TFS)的情况并不罕见,但由于某种原因,您无法在您的环境中使用它。有一些方法可以滥用源代码控制软件——比如流氓开发人员开始在“他的”沙箱之外运行所有报告。而且,版本控制软件并不能解决您的所有问题。例如,它与代码中的注释或命名约定无关。
以下是一些帮助数据库软件维护的“标准”:
当不允许使用版本控制软件时,我有一个描述更改历史的注释块。看起来像:
/*
* GSL 2013-06-08 Modified foo at Jean's request
* GSL 2013-06-01 Created
*/
这适用于视图、存储过程和用户定义的函数。如果我注意到没有评论的更改,那么我会使用“在电子邮件中或当面尴尬”的方法来哄骗坚持。
以下与版本控制无关。
命名约定:不同表中的相同事物始终具有相同的名称。甚至主键。一般来说,我以复数形式命名一个表,然后删除“s”并添加“id”作为主键。
列约定:几乎所有表都有一个主键(表名的单数形式,附加“id”)CreatedAt
和CreatedBy
列。后者回答了这个问题:“最后一件事是什么?” 和“谁不知道?”
列前缀:对于源列来自数据库外部的表,我使用前缀来指示它们来自何处。类似于jl_telephonenumber
Jane 列表中某物的电话号码。
捕获错误:我将存储过程包装在try/catch
块中并尝试在本地处理错误。通常,存储过程采用 astatus
和ErrMsg
输出变量,因此我可以将状态信息传回给调用者。而且,调用者总是检查状态。
缩进:这是宗教,我有我的宗教。用一种非常特殊的缩进风格写一本书有一定的优势,这就是我使用的那种。我有足够的经验知道不能把一种特定的风格强加给每个人。但是,代码必须清晰,并且必须能够清楚地区分子查询块。
表别名: Eschew a
, b
, c
, x
, y
, z
. 别名应该是相关表格的缩写。
最后(目前),如果你真的想保证代码的准确性,那么你应该进行代码审查。这将是每周一次 60 分钟左右的会议,将通过一份报告并讨论报告的编码方面。通过指出现有报告中的缺陷,此类审查极有可能证明是非常有价值的。