不以善小而不为,不以恶少而为之

本文通过一个简单的触发器编写案例,强调了代码规范对于软件质量的重要性。作者指出,即使在小型软件公司中,良好的代码编写习惯和严谨的开发流程也是至关重要的。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

记得在大学的时候 ,有一次上C的实践课(就是上机咯^^),虽然我们专业与编程分不了家,不过喜爱这个玩意的同学却寥寥无几,所以上机调程序都一个比一个慌.小弟不才,不过这行当还玩得可以,所以课间很多同学的程序问题都求教于我,短短二十来分钟,连续调了N个小程序,初哥的程序都不难,调起来很容易,都不记得内容了,但有一个细节却让我至今难以忘怀,就是基本我在帮他们看程序之前都要做一件事,就是把他们的程序从头到脚认认真真的重新排版一次.没有办法啦,他们当时根本都不知道编写风格为何物,代码一行过,定义函数不分家,括号重重叠叠的多得很,一接手根本无法调试.依稀记得梁肇新在他的<编程高手箴言>中痛斥过这些非职业行为,好像还说到还要有文件头什么的,很久之前看了,不知道是不是^)^.

到现在工作N年了,当上一个梦寐以求的小小PG(正确来说还只是coder而已),终于能接触到职业的代码了,但却让我大失所望,能接触到的代码的编写风格差的要命,文件头没,变量申明定义规则没,函数说明没...
反动的我多次向上头反映我的不满,要求改善这种低效的开发状态,但回答往往是"历史问题","太理想","很好,但行不通",老前辈们还说小公司都这样的了,劝我省省.难道这就是中国小软件公司的通病吗,真不明白...

直到离开那家公司前,我终于明白了一句话,搞软件的搞得好,不在乎技术有多高,就看管理有多好!

(PS:这个"好"不是指卖的好,中国软件销售,明眼人都知道是靠什么,这里不想讨论这个)

今天,一位好友求教于我关于触发器的编写的问题,我就按着他的需求写了一个很简单的测试脚本,如下

/*----------------------------------------------------------------
脚本名称:            test_tirgger.sql
脚本功能:            测试触发器
脚本相关资料:
脚本相关脚本:
脚本来由:            
脚本创建人:            林清风
脚本创建日期:        2007-8-31
脚本最后修改人:        林清风
脚本最后修改日期:    2007-9-1
----------------------------------------------------------------
*/



/*----------------------------------------------------------------
创建用于测试的表
----------------------------------------------------------------
*/

--t_pm_project
CREATE TABLE t_pm_project
(
    ID                
INT        NOT    NULL    IDENTITY   (1,    1)    PRIMARY KEY,
    FNumber            
INT        NULL,                                            --测试要更新的字段
    FName            INT        NULL,                                            --测试要更新的字段
    KEY_3            INT        NULL                                            --不更新的字段
)
GO

--t_Item
CREATE TABLE t_Item
(
    ID                
INT        NOT    NULL    IDENTITY   (1,    1)    PRIMARY KEY,
    FNumber            
INT        NULL,                                            --测试要更新的字段
    FName            INT        NULL,                                            --测试要更新的字段
    FItemClassID    INT        NOT NULL,
    FExternID        
INT        NOT NULL,
    FParentID        
INT        NOT NULL
)
GO

/*----------------------------------------------------------------
创建触发器
----------------------------------------------------------------
*/

CREATE TRIGGER test_tirgger ON t_pm_project 
FOR INSERT
AS
--取t_pm_project表中要插入的值
DECLARE @Fname INT
DECLARE @Fnumber INT
SELECT TOP 1 @Fname = Fname, @Fnumber = Fnumber
FROM t_pm_project
ORDER BY ID DESC
--完成t_Item表的插入操作
INSERT INTO t_Item (Fname, Fnumber, FItemClassID, FExternID, FParentID)
VALUES (@Fname@Fnumber3007-10); 
GO


/*----------------------------------------------------------------
测试触发器运作
----------------------------------------------------------------
*/

INSERT INTO t_pm_project
VALUES (101112);

INSERT INTO t_pm_project
VALUES (1314,    15);
GO

/*----------------------------------------------------------------
查看测试结果
----------------------------------------------------------------
*/

SELECT * FROM t_pm_project;
SELECT * FROM t_Item;
GO

/*----------------------------------------------------------------
测试完毕,清除数据
DROP TABLE t_pm_project;
DROP TABLE t_Item;
GO
----------------------------------------------------------------
*/

 

大虾们不要见笑小弟笨拙的代码,大家只看里面包含的东西--文件头,注释,功能代码,测试代码.

我只想说明一个问题,如果我们就是连编写一个这么简单的应用都随随便便,但求写出那些功能能运作的那部分代码就可以的话,那么我最后能得到的是什么,是一个良好的软件吗,这样的源码有意义吗?

一些小软件公司用尽很多方法防止代码外漏,但很多拿来一看,真想叫一句"OH!MY GOD!".全世界都都知道开源世界的项目文档是最缺乏的,但在我看来代码很多比国内很多软件公司的代码要长得漂亮多了,至少人家的五官还俱全,不像国内很多出来吓人的都是没嘴巴,没眼睛,没耳朵...

傍晚开收工时,那位好友又发来的信息,说他编写的脚本把字符串当整型来处理了,一个晕~
我问他编写脚本的时候没有先把要更改的表的脚本反编译出来核对过才开始么?没有先编写测试脚本才写功能的么?...

开发是一门艺术,也是一门严肃的生产活动,严格的流程造就过硬的产品.

不以善小而不为,不以恶少而为之,同行奋斗的兄弟们共勉吧!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值