Rumah > Soal Jawab > teks badan
先举个例子
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
Saya rasa masalah ini terletak pada definisi antara muka dahulu.
Jika antara muka ditakrifkan dengan jelas dan tidak mengembalikan null, maka tidak perlu mengendalikan kes nilai pulangan null. Jika tidak, ia perlu ditangani.
Jika masalah berlaku, anda boleh memfailkan pepijat dengan pihak yang satu lagi dan meminta pihak yang satu lagi untuk membetulkannya.
Jika tiada definisi yang jelas, atau pembekal antara muka bukan dari syarikat kami, atau pihak lain mempunyai masalah dan tidak dapat membetulkannya dalam masa, maka anda hanya boleh membuat beberapa kod pertahanan sendiri. Dan anda boleh membungkus antara muka di sebelah anda sendiri untuk memastikan null tidak dikembalikan.
怪我咯2017-04-18 09:56:07
Saya boleh memberitahu anda dengan jelas hanya dengan membaca tajuk, saya tidak boleh mempercayainya Walaupun definisi antara muka anda diseragamkan dan telus pada peringkat awal, percayalah, jika anda tidak melakukan toleransi kesalahan dan pengendalian pengecualian. , anda tetap akan menangis akhirnya~~
高洛峰2017-04-18 09:56:07
Memandangkan ia adalah antara muka, penyedia antara muka mesti memberikan huraian yang jelas tentang parameter dan nilai pulangan Ini adalah perkara biasa bagi penyedia antara muka. Jika itu tidak mungkin, anda harus tahu apa yang perlu dilakukan.
怪我咯2017-04-18 09:56:07
Takrifan antara muka mesti menyatakan dengan jelas bila null dikembalikan dan maksud mengembalikan null.
Jika anda tidak menjelaskannya, biarkan orang lain menjelaskannya. Sebaik sahaja ia jelas, lakukan sahaja. Jika anda masih menghadapi masalah selepas mengikuti arahan ini, selalunya ia adalah masalah pihak lain dan minta mereka membetulkannya.