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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 从零开始学习UCOSII操作系统2–UCOSII的内核实现「建议收藏」

    从零开始学习UCOSII操作系统2–UCOSII的内核实现「建议收藏」从零开始学习UCOSII操作系统2–UCOSII的内核实现参考书籍:《嵌入式实时操作系统μCOS-II原理及应用》、《嵌入式实时操作系统uCOS-II邵贝贝(第二版)》1、任务的结构–任务控制块首先这个任务控制块是非常的大的,这里面使用很多的宏定义,估计是可以让使用者使用的时候按需配置。所以这里只是整理一些必须要用到的功能,不常用的不讲,讲了就会变成一本书了。(1)任务的关键 OS_ST…

    2022年6月4日
    43
  • 值得推荐的五个源码网站[通俗易懂]

    值得推荐的五个源码网站[通俗易懂]CSDN下载-IT资源大本营CSDN下载是一个提供学习资源、源码、在线学习视频、IT电子书、各类免费软件等下载服务的IT资源大本营,致力于为软件开发者提供知识传播、资源共享、共同学习的优质学习资源平台·码云Gitee.com是OSCHINA.NET推出的代码托管平台,支持Git和SVN,提供免费的私有仓库托管。目前已有超过500万的开发者选择Gitee。·Github作为开源代码库以及版本控制系统,Github拥有超过900万开发者用户。随着越来越多的应用程序转移到了云上,G

    2022年7月20日
    21
  • mbus总线是什么意思_Can总线如何配置500k波特率

    mbus总线是什么意思_Can总线如何配置500k波特率MBus总线上自动波特率识别1、通过前导字节0x68,捕获引脚通过1、0比特的两个上升沿的差值除以2来自动识别出波特率。2、为什么是通过两个上升沿,而不是一个上升沿一个下降沿,比如两个比特11的长度除以2来计算?因为两条平行的MBUS总线间存在电容效应,在实验室里面由于线比较短,不容易测试出来,但在实际产品使用中是真实存在的,因此在实验室里面分别用10nf、47nf、23n…

    2022年10月8日
    0
  • 链表排序算法_怎么对链表进行排序

    链表排序算法_怎么对链表进行排序排序算法概述盗个图转自:https://www.cnblogs.com/onepixel/articles/7674659.html排序算法复杂度由于是链表排序,首先定义链表节点数据结构common.htypedefstructNodeLNode;structNode{intdata;LNode*next;LNode*prev;};备注:以下排序…

    2022年10月11日
    0
  • Chrome内核浏览_三大浏览器内核

    Chrome内核浏览_三大浏览器内核C#开发Chrome内核浏览器(WebKit.net)WebKit.net是对WebKit的.Net封装,使用它.net程序可以非常方便的集成和使用webkit作为加载网页的容器。这里介绍一下怎么用它来显示一个网页这样的一个最简单的功能。第一步:下载WebKit.net的bin文件。别小看这一步,你不一定能下载成功,原因你懂的。WebKit.net的主页是http://webkitdotnet.sourceforge.net/直接下载0.5版本的windowsbin文件地址为:h

    2025年7月7日
    0
  • js 保留两位小数的方法总结「建议收藏」

    js 保留两位小数的方法总结「建议收藏」1、四舍五入的情况varnum=2.446242342;num=num.toFixed(2);//输出结果为2.452、不四舍五入第一种,先把小数边整数:Math.floor(15.7784514000*100)/100//输出结果为15.77第二种,当作字符串,使用正则匹配:Number(15.7784514000.toString().match(/^\d+(?:\.\d{0,2})?/))//输出结果为15.77,不能用于整数如10必须写

    2022年8月10日
    4

发表回复

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

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