一次"失败的"SQL开发经历

简介: 趁着项目上线的空闲,给大家总结一下,在开发项目过程中遇到的一些问题。之所以说它是"失败的"项目,是因为遇到的一些问题是完全可以避免,即使最后按要求完成了任务需求。

原创: 丶平凡世界
公众号:SQL数据库开发
原文链接:https://mp.weixin.qq.com/s/z4I16VNgZsqdhbp0AwfTvQ

image.png

最近一直在忙公司的一个SQL项目,好久都没有给小伙伴们写原创文章了。

趁着项目上线的空闲,给大家总结一下,在开发项目过程中遇到的一些问题。之所以说它是"失败的"项目,是因为遇到的一些问题是完全可以避免,即使最后按要求完成了任务需求。

项目背景

公司新上线了一套OA系统,希望将公司成本类的真实数据实时反应到报表上,并且使用新的OA系统来呈现。希望从各个角度监控公司在产品开发上所花的成本情况。

已有资源

成本类的部分数据已经存在于BI报表平台,每天都有更新,这些业务逻辑的指标可以直接从BI报表平台获取。

待开发内容

此次项目开发需求新增了不同时期的指标对比,部分指标的经营曲线。

image.png

遇到的问题

1、需求未明确
在项目开发过程中,因为是公司内部开发,没有明确的需求文档,都是依靠口口相传,或通过邮件等来确认指标定义。

可能有些同学对需求这方面不太了解,觉得我表述清楚,你做出来就是了呀。道理是这个道理,但是这个做出来的过程,如果有很多不确定的因素存在,那么就会极大的影响开发效率。

在每开发一个指标之前,总是需要人再三确认才能开始写代码。开发过程中还是遇到一个“我以为”是这样,而实际上并非是这样的指标。导致之前写的逻辑需求推翻重写。

2、整体未规划好
整个项目,看着不大,无非就是新增几个版本对比和一些历史记录曲线而已。正是由于这种想法,导致一开始没有一个整体的规划,代码写到哪里就是哪。

原本有一些可以复用的代码,最后还是一个个单独使用。导致后续因为修改代码逻辑,得一个一个的全部再修改一遍。

如果前期规划好,可以将能复用的代码做成视图,把其他逻辑需要的字段予以保留,在开发其他逻辑时直接使用该视图即可。

例如,有一个总成本费用,需要看到各个项目的总成本,各个区域公司的总成本,以及集团的总成本。从项目——>区域公司——>集团这是一个非常清晰的向上汇总逻辑。

只需要把项目的总成本做成视图,在取区域公司和集团的数据时,向上汇总项目的总成本即可。

image.png

但因为没有做前期规划,从一开始做成了从集团——>区域公司——>项目的逻辑,导致每一个都是独立的代码,这样就浪费了很多开发时间和后续的逻辑修改时间。

3、代码版本未控制
刚开始在没有遇到频繁的修改逻辑时,代码文件的名称直接按照代码的功能进行了命名。等到后来逻辑频繁的修改后,保存的代码文件越来越多,名称也越来越乱。因为没有使用版本控制,已经分不清最后正确的文件是哪个了。

说到底还是对项目开发不够重视,比较随性,当然这也有项目整体规划不足的原因。

如果在一开始就想到这些问题,给每个逻辑代码加一个版本编号就可以很好区分问题了,同时也可以做好版本对比。

image.png

可取之处

1、业务逻辑清晰,注释完整
不管业务逻辑如何修改,每次修改后的代码,都会在其中更新当前代码的功能和注释,以防下次更新时不知道代码片段意义。

但是与标准的代码声明还是有差别,标准的代码声明如下:

/*
代码功能:XXXX

作者:XXX
修改人:XXX
创建日期:XXXX
修改日期:XXXX
*/
--代码片段功能注释
SQL代码
--代码片段功能注释
SQL代码 ...

由于整个项目由我负责,所以没有写作者和修改日期等内容。

2、代码执行效率较高
虽然开发的项目数据量较小,但是考虑到未来数据量增多带来的效率问题,代码统一做了优化处理。

最基本的优化处理方法就是减少返回的数据行,尽量保持代码的简洁。具体的优化方法可以查看公众号里的历史文章,这里就不赘述了。

3、将所有功能单独做成视图
由于要内嵌到OA系统,减少代码在OA系统上产生不可预见的异常,将报表的所有逻辑功能均建立为视图,OA系统直接查询视图即可返回所需的数据。

类似这种跨系统之间的数据传输,视图是比较好的规避异常的方式,在排查异常时只需检查视图上的查询逻辑即可。

反思

从上面的问题可以发现,一个优秀的项目:
首先要明确业务需求,磨刀不误砍柴工,需求不明确乃开发大忌;
其次需要有一个整体的规划然后才能实施,什么地方可以简化开发步骤,什么地方可以优化需要安排好;
最后要对代码的版本进行控制,不管是使用工具,还是在做一些小项目手动控制。

总结

从这个简单的项目中发现,我在开发方面能力尚可,但是项目管理方面的经验不足。导致开发效率较低,这也为以后开发新的项目做了一个很好的警醒。

从失败中总结,从失败中成长,希望这个“失败的”项目对你有所启发和帮助。

目录
相关文章
|
1月前
|
SQL 关系型数据库 MySQL
【MySQL】根据binlog日志获取回滚sql的一个开发思路
【MySQL】根据binlog日志获取回滚sql的一个开发思路
|
5天前
|
SQL 安全 Go
SQL注入不可怕,XSS也不难防!Python Web安全进阶教程,让你安心做开发!
在Web开发中,安全至关重要,尤其要警惕SQL注入和XSS攻击。SQL注入通过在数据库查询中插入恶意代码来窃取或篡改数据,而XSS攻击则通过注入恶意脚本来窃取用户敏感信息。本文将带你深入了解这两种威胁,并提供Python实战技巧,包括使用参数化查询和ORM框架防御SQL注入,以及利用模板引擎自动转义和内容安全策略(CSP)防范XSS攻击。通过掌握这些方法,你将能够更加自信地应对Web安全挑战,确保应用程序的安全性。
26 3
|
1月前
|
SQL NoSQL 数据库
开发效率与灵活性:SQL vs NoSQL
【8月更文第24天】随着大数据和实时应用的兴起,数据库技术也在不断发展以适应新的需求。传统的SQL(结构化查询语言)数据库因其成熟的数据管理机制而被广泛使用,而NoSQL(Not Only SQL)数据库则以其灵活性和扩展性赢得了众多开发者的青睐。本文将从开发者的视角出发,探讨这两种数据库类型的优缺点,并通过具体的代码示例来说明它们在实际开发中的应用。
50 1
|
20天前
|
SQL 分布式计算 大数据
大数据开发SQL代码编码原则和规范
这段SQL编码原则强调代码的功能完整性、清晰度、执行效率及可读性,通过统一关键词大小写、缩进量以及禁止使用模糊操作如select *等手段提升代码质量。此外,SQL编码规范还详细规定了代码头部信息、字段与子句排列、运算符前后间隔、CASE语句编写、查询嵌套、表别名定义以及SQL注释的具体要求,确保代码的一致性和维护性。
22 0
|
28天前
|
SQL 关系型数据库 MySQL
SQL Server、MySQL、PostgreSQL:主流数据库SQL语法异同比较——深入探讨数据类型、分页查询、表创建与数据插入、函数和索引等关键语法差异,为跨数据库开发提供实用指导
【8月更文挑战第31天】SQL Server、MySQL和PostgreSQL是当今最流行的关系型数据库管理系统,均使用SQL作为查询语言,但在语法和功能实现上存在差异。本文将比较它们在数据类型、分页查询、创建和插入数据以及函数和索引等方面的异同,帮助开发者更好地理解和使用这些数据库。尽管它们共用SQL语言,但每个系统都有独特的语法规则,了解这些差异有助于提升开发效率和项目成功率。
110 0
|
2月前
|
JSON 数据格式 SQL
SQL开发问题之直接使用join方法在处理字符串类型属性时可能会遇到性能问题如何解决
SQL开发问题之直接使用join方法在处理字符串类型属性时可能会遇到性能问题如何解决
|
2月前
|
SQL
SQL开发问题之使用distmapjoin的问题如何解决
SQL开发问题之使用distmapjoin的问题如何解决
|
2月前
|
SQL
SQL开发问题之当从数据源读取多个字段时优化 COUNT(DISTINCT ...) 的查询的问题如何解决
SQL开发问题之当从数据源读取多个字段时优化 COUNT(DISTINCT ...) 的查询的问题如何解决
|
2月前
|
SQL 分布式计算 MaxCompute
SQL开发问题之对于ODPS中的UNION操作,执行计划的问题如何解决
SQL开发问题之对于ODPS中的UNION操作,执行计划的问题如何解决
|
2月前
|
分布式计算 MaxCompute SQL
SQL开发问题之如何判断mapjoin是否生效
SQL开发问题之如何判断mapjoin是否生效