代码大全检查清单:防御式编程要注意哪些?

代码大全检查清单:防御式编程要注意哪些?

首页角色扮演代号沧海更新时间:2024-05-11

解读代码大全检查清单:防御式编程要注意哪些?

这本小册子简直就是沧海遗珠。昨天不是给大家推荐了一本代码大全2吗,我竟然没有发现里面是包含了一本小册子的。翻了一下之后我没想到这本小册子简直就是沧海遗珠。

这本小册子其实是一本高质量架构代码的Checklist。检查清单,我今天先给大家简单解读一下,后面做一个详细解读的系列。先给大家解读一下防御式编程的Checklist。

·看第一点,也是初级程序员非常容易犯的。此程序是否可以保护自己免受错误输入造成的破坏?大家可以看一下初级程序员代码基本上对入参没有进行任何判断。什么判空、判错、合法性、校验都是没有的,这样很容易产生什么空指针、数组越界的异常。

·还有大家比较熟悉的注入漏洞,就是因为没有仔细的做防御式编程的检查才造成的。

·什么是注入漏洞呢?如果你的sql是直接拼接的并且有一个模糊查询名称的功能,正常来说直接输张三是没问题的。但如果有人输入了单引号:/1=1,想想看会发生什么是不是可能会造成数据泄露?别小看这个问题,以前哪怕在微软的官方网站都出现过注入漏洞。

·再看这一点,在项目中是否定义了一种标准化的异常处理方法。现在一般写接口会定义一个全局异常处理类,并且有一个标准返回对象,包含什么code、message、data。这三个参数有些会加个success表示是否调动成功。

但是有没有见过五花八门的错误返回?有些直接返回错误对象,有些返回对战,有些0代表成功,有些0代表不成功,有些扣的是死菌,有些扣的是inter,一会儿message是简写msg,一会儿是全写,让调用者直接到抓狂。这些都是写代码时候的大忌。

除此之外的检查上还有是否考虑异常替代方案。我举个例子,大家看下git,如果git输入了一个错误的命令,不光是报错,还会给一个相似的正确命令的提示。是不是一个非常好的方案大家可以学一下。

还有这一点很重要,代码中有没有空的catch快?是否检查了所有如果真的是空的catch的话,有没有明确声明?我印象真的很深刻。你们有没有经历过有些同事在catch里面没有做异常处理或者抛出直接打了一个info级别的日志,导致生产出问题了也无法排查。如果当时我有这本书真想甩他脸上。

除此之外这本小册里还包含需求检查、架构检查、质量检查、数据使用检查、变量名检查、基本数据类型检查等三十几个检查清单。如果你把这些检查项自己好好理一遍,并且仔细思考,写代码的坑就会少很多。

所以我说这本小册子是沧海遗珠,一点都不过分。

查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved