你的代码完成了吗?(末篇)——对系统总体的影响以及安全性

你的代码完成了吗?(末篇)——对系统总体的影响以及安全性

四. 从总体上对系统的影响

当编写和修改一个程序的时候,由于一般来说它都是存在于一个更大的系统之中,而不是孤立的单个程序,所以,在编写或者修改完了之后,就必须检查它从总体上对系统的影响。

如果测试代码非常完善的话,这一点当然可以放在可测试性一起,那就是说,需要编写相应的整合测试的代码,并测试通过。然而,在很多情况下,如果没有实行测试驱动开发,并且编写相应的测试代码,这一项还是可以独立出来的。

不由地想到之前曾经修改过的一本程序。当时的需求是这样的:在做了对保单的保全操作之后(主要是新增附加险),在重新打印保单的时候,需要根据具体的情况显示最后缴费日。而此时又分为几种不同的情况,包括保单周年日新增长险、非保单周年日新增长险、保单周年日新增短险和非保单周年日新增短险。当时由于是第一次修改保全方面的程序,所以考虑就欠妥,只顾着达到自己的目的,而没有考虑到对整体的影响。当时我的修改方法是,找到数据库中存储最后缴费日的字段,然后在做保全操作的程序中,在执行相应的操作的时候将最后缴费日置为报表想要显示的日期。在做完之后,报表程序的确是没有问题了。但是在运行了几天之后,财务缴费的程序出现了问题,因为在缴费的时候是根据最后缴费日来判断何时需要产生应收数据的。仔细考虑一下,正是因为没有考虑到一次修改对系统整体上的影响,才导致出现了如此严重的bug。

因此,在进行新的程序编写或者修改原有程序的时候,一定需要做的就是考虑这个程序是否会对系统中的其他模块产生影响,如果有的话,就必须对相应的地方都进行测试,否则就可能产生不必要的麻烦。

另外,还有一个问题在那篇文章中没有提到,就是安全性的问题。如果一个程序没有考虑到必要的安全性问题,那么也不能算是完成了所有的代码。

举例来说,一个用户能够访问不属于自己权限之内的功能,或者程序中有安全漏洞,黑客能够很容易地对其进行SQL注入、OS命令注入、跨站点脚本攻击等等,那样就会给系统带来更多潜在的问题。虽然用户可能会感觉不到,但是信息的泄露和被篡改,对于公司来说风险是非常高的。

陆陆续续写了好多文字,想表达的就是,想要说自己的代码真的完成,需要做的工作真的是非常多。但是,也只有真正完成了的代码,才是高质量的代码,才会节省许多之后维护和修改的工作,也会防范很多潜在的问题。

最后,希望大家在写完一本程序之后,都会自问一声,我的代码真的完成了吗?

p.s. 之前几篇的链接:

你的代码完成了吗?(之一)——可用性和易用性

你的代码完成了吗?(之二)——可维护性和规范性

你的代码完成了吗?(之三)——可测试性和健壮性

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/110789.html原文链接:https://javaforall.net

(0)
上一篇 2021年8月5日 下午7:00
下一篇 2021年8月5日 下午8:00


相关推荐

  • 作为测试负责人如何规范测试团队建设_测试人员如何开展测试工作

    作为测试负责人如何规范测试团队建设_测试人员如何开展测试工作前言:今天是2021年11月17日,我入职新公司工作的第20天,工作也确实比较忙,准确的来说在公司大家都忙,我基本上都是早上7点半起床,晚上12点到家,睡午觉的时间忙中偷闲更新下博客!作为测试负责人如何规范测试团队?一、我的提问二、你会发现存在的问题1、流程不规范2、缺乏沟通3、没有共享文档4、没有输出三、如何做好流程规范1、测试进度及计划面板2、技术评审3、提测规范4、测试用例评审四、如何做好流程规范1、测试进度及计划面板一、我的提问当你来到一个项目不规范的技术团队,你会怎么处理呢?二、你会发现存

    2025年8月5日
    5
  • 用JAVA判断一个数是否为素数(质数)

    素数(primenumber)又称质数,有无限个。质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数的数称为质数。有时经常遇到用java判断素数的问题,为大家贴上怎么用java判断出一个数是否为素数。publicstaticbooleanisPrime(intN){if(Nfor(inti=2;i*iif(N%i=

    2022年4月12日
    250
  • win10修改ntp服务器地址,win10怎么设置ntp服务器地址

    win10修改ntp服务器地址,win10怎么设置ntp服务器地址win10怎么设置ntp服务器地址内容精选换一换以NTP服务器、DNS服务器的操作系统均为SUSE为例:登录Linux弹性云服务器。执行以下命令,切换至root用户。sudosu-sudosu-执行以下命令,编辑ntp.conf文件。vim/etc/ntp.confvim/etc/ntp.conf添加以下语句,配置NTP服务器。serverNTP服务器域名或IP地址示例:有,该NT…

    2022年6月10日
    69
  • 2021.9 idea MyBatis Log Plugin 激活码(JetBrains全家桶)

    (2021.9 idea MyBatis Log Plugin 激活码)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月26日
    95
  • 缓冲区溢出流程

    缓冲区溢出流程缓冲区溢出流程一、ImmunityDebugger最好以管理员的身份运行Innunitydebugger通常有两种方法可以使用ImmunityDebugger来调试应用程序:确保应用

    2022年7月3日
    39
  • ICML 2023 | RACE:使用进化算法大幅提升多智能体强化学习算法学习

    ICML 2023 | RACE:使用进化算法大幅提升多智能体强化学习算法学习

    2026年3月16日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号