Maison > Questions et réponses > le corps du texte
先举个例子
public Result doSomething(String balabala);
public class Result{
private Long productId;
....
}
上面接口是其他部门的程序员提供给你的。没有文档,接口没有注释。
首先,我调用这个接口,
Result result= doSomething("fuck");
调用之后,我要返回的productId再去请求其他接口,做其他一些事情。
问题来了:
对这个返回的result,你是直接result.getProductId(); 还是先判断一下,result!= null 然后再result.getProductId();那productId又是Result里的引用类型,你拿到productId要不要再productId != null
,Result还有其他的引用类型,是不是我每用一个非得判空?
可能每个人的习惯不一样,比如写那个接口,有的人是哪怕什么信息都没有返回,也返回一个空的result。有的人是如果没有信息返回就返回null。如果只要是引用类型,我都判断是否为空,是不是显得“过于谨慎”了。文档,注释也不可能规定的那么细,程序员之间的约定吧,那一个几百人的团队,难免会有不遵循约定的。你们是如何处理的?
又比如一条记录,业务上规定,productId不可能为空的,但是这条记录的插入涉及到两条sql语句,一个程序员的失误没有保证原子性,导致productId为空的记录被插入进去了。这时候,我一旦涉及到处理productId,没有判空,则很有可能导致异常
伊谢尔伦2017-04-18 09:56:07
Je pense que ce problème réside d'abord dans la définition de l'interface.
Si l'interface est clairement définie et ne renvoie pas null, alors il n'est pas nécessaire de gérer le cas d'une valeur de retour nulle. Sinon, il faut s'en occuper.
Si un problème survient, vous pouvez signaler un bug à l'autre partie et lui demander de le corriger.
S'il n'y a pas de définition claire, ou si le fournisseur d'interface ne fait pas partie de notre société, ou si l'autre partie a des problèmes et ne peut pas les corriger à temps, vous ne pouvez créer que vous-même un code défensif. Et vous pouvez envelopper l'interface de votre propre côté pour vous assurer que null n'est pas renvoyé.
怪我咯2017-04-18 09:56:07
Je peux vous le dire très clairement rien qu'en lisant le titre, je n'arrive pas à y croire. Même si la définition de votre interface est standardisée et transparente au début, croyez-moi, si vous ne faites pas de tolérance aux pannes et de gestion des exceptions. , tu finiras encore par pleurer~~
高洛峰2017-04-18 09:56:07
Puisqu'il s'agit d'une interface, le fournisseur d'interface doit fournir des descriptions claires des paramètres et des valeurs de retour. C'est du bon sens pour le fournisseur d'interface. Si ce n'est pas possible, vous devez savoir quoi faire.
怪我咯2017-04-18 09:56:07
La définition de l'interface doit clairement indiquer quand null est renvoyé et ce que signifie renvoyer null.
Si vous n’êtes pas clair, laissez l’autre personne le dire clairement. Une fois que c’est clair, faites-le. Si vous rencontrez toujours des problèmes après avoir suivi ces instructions, c'est généralement le problème de l'autre partie et demandez-lui de le corriger.