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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


相关推荐

  • linux 下一个 osw先从操作系统和标准脚本主动发起

    linux 下一个 osw先从操作系统和标准脚本主动发起

    2022年1月3日
    38
  • js中settimeout和setInterval区别_JavaScript set

    js中settimeout和setInterval区别_JavaScript setsetTimeout描述setTimeout(code,millisec)setTimeout()方法用于在指定的毫秒数后调用函数或计算表达式。注:调用过程中,可以使用clearTimeout(id_of_settimeout)终止参数描述code必需,要调用的函数后要执行的JavaScript代码串。millisec必需,在执行代码前需等待的毫秒数。setTimeintervalsetIn…

    2022年10月4日
    0
  • c语言位运算符的用法_c语言运算符大全

    c语言位运算符的用法_c语言运算符大全一、位运算符C语言提供了六种位运算符:&按位与|按位或^按位异或~取反>>右移1.按位与运算按位与运算符”&”是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1,否则为0。参与运算的数

    2022年10月5日
    0
  • Java的文件读写操作

    Java的文件读写操作file(内存)—-输入流—->【程序】—-输出流—->file(内存)当我们读写文本文件的时候,采用Reader是非常方便的,比如FileReader,InputStreamReader和BufferedReader。其中最重要的类是InputStreamReader,它是字节转换为字符的桥梁。你可以在构造器重指定编码的方式,如果不指定的话将采用底层操作系统的默认编

    2022年7月26日
    4
  • Sample rate 理解「建议收藏」

    Sample rate 理解「建议收藏」在Gnuradio中,我们可以看到很多模块中都有Samplerate这个概念然后看到一个说明 Anyprocessingblock’s’SampleRate’parameterisusedforDSPcalculation,notforcontrollingtherateatwhichsamplesareproduced.Thisisdis

    2022年10月17日
    0
  • jquery动画效果实例_动画js

    jquery动画效果实例_动画js文章目录JS动画实现概述平滑动画无缝连续滚动特效轮播图轮播图淡入淡出效果JS动画实现概述在CSS3中可以通过transition过渡属性可以实现动画JS可以利用CSS3中的transition属性实现元素动画平滑动画利用CSStransition属性实现平滑动画效果<button>开始动画</button><divid=”box”></div><script>varbtn=document.queryS

    2022年10月16日
    0

发表回复

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

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