首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

返回复杂对象或使用引用/输出参数是更好的做法吗?

对于这个问答内容,我的回答如下:

首先,返回复杂对象或使用引用/输出参数并不是更好的做法,因为它们可能会导致不可预测的行为和错误。在编程中,最好使用明确、简单和可预测的接口和输出格式来避免潜在的问题。

相反,更好的做法是使用对象映射(Object Mapping)或函数式编程范式(Functional Programming Paradigm)来处理复杂对象和引用/输出参数。对象映射是一种将复杂对象映射到更简单、更易于使用和测试的格式的技术,而函数式编程范式是一种基于函数和不可变数据的编程范式,可以避免可变状态和并发问题。

此外,如果需要返回复杂对象或使用引用/输出参数,则应该使用适当的错误处理和验证机制来避免不可预测的行为和错误。例如,可以使用类型检查、数据验证和异常处理等技术来确保返回的参数是正确和安全的。

总之,返回复杂对象或使用引用/输出参数并不是更好的做法,而应该使用适当的技术和方法来处理它们。

相关搜索:哪个更好,使用可空或布尔返回+输出参数返回C++引用变量的做法是邪恶的吗?对malloc返回的指针进行类型转换是一种更好的做法吗?Socket.io -使用多个函数参数是不好的做法吗?在Python中使用与kwarg参数同名的参数是不好的做法吗?使用array [array.length - 1]或滚动自己的方法是最佳做法吗?使用触发器是更新计数或时间戳字段的好做法吗?拥有一个基于其成功返回JSON或HTML的ajax是不好的做法吗?当一个参数被遗漏时,返回所有的结果是不好的做法吗?使用内置函数名作为属性或方法标识符是不好的做法吗?在函数中使用布尔型"recursiveCall“参数是一种好的做法吗?在使用ABC模块时,关键字参数是一种好的做法吗?将事件相关参数作为变量附加到对象模型中是一种好的做法吗?在flutter中使用http包进行网络API是一种很好的做法,还是使用Retrofit、斩波器或音频更好?使用(成员)函数返回的对象的引用是否安全,甚至是可能的?在箭头函数中使用name=arguments作为函数参数是一种好的做法吗?如果您知道要返回的类型,您还会使用输出参数吗?在ReactJs中使用事件对象来访问html节点是一种好的做法吗?在WebGL或OpenGL中,使用输出片段变量作为临时存储是不好的吗?在IBM中使用AccessBean或SQL从OOTB表中获取数据是一种好的做法吗?
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

面试题集锦

第二道,好经典的题,为此跟不少人争论过 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 答:是值传递。...Java语言的方法调用只支持参数的值传递。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的 属性可以在被调用过程中被改变,但对对象引用的改变是不会影响到调用者的。...C++和C#中可以通过传引用或传输出参数来改变传入的参数的值。在C#中可以 编写如下所示的代码,但是在Java中却做不到。   ...,这一点在Java 8中仍然没有得到改进,正是如此在Java编写的代码中才会出现大量的Wrapper类(将需要通过方法调用修改的引用置于个Wrapper 类中,再Wrapper对象传入方法),这样的做法只会让代码变得臃肿...compare()方法用来给两个输入参数排序,返回负数,0,正数表明第一个参数是小于,等于,大于第二个参数。equals()方法需要一个对象作为参数,它用来决定输入参数是否和comparator相等。

44641

NullPointerException:Attempt to Invoke a Method on a Null Object Reference

依赖外部输入:使用外部输入或参数时,未进行充分的空值检查。 ️ 如何解决NullPointerException 1....表格总结 解决方法 描述 适用场景 空值检查 在使用对象前进行null检查 所有代码逻辑 Optional类 使用Optional类处理可能为空的对象 处理外部输入或返回值 try-catch块 捕获并处理...A: 是的,NPE在大型项目中非常常见,尤其是在处理复杂对象关系和外部输入时。良好的编码习惯和空值检查可以有效减少NPE的发生。 Q: 我是否应该在所有方法中使用try-catch来捕获NPE?...依赖外部输入:使用外部输入或参数时,未进行充分的空值检查。 ️ 如何解决NullPointerException 1....表格总结 解决方法 描述 适用场景 空值检查 在使用对象前进行null检查 所有代码逻辑 Optional类 使用Optional类处理可能为空的对象 处理外部输入或返回值 try-catch块 捕获并处理

13510
  • 100道最新Java面试题,常见面试题及答案汇总

    Q22:我们能不能通过引用向函数传递参数? 答案:不能,我们只能通过引用将值传递给函数。 Q23:对象在java中如何序列化?...根据参数,将调用适当的参数: Q47:如何制作一个Java对象的副本? 答案:使用克隆,我们可以创建具有对象的实际状态的副本。...Q59:可以有两个方法,它们方法名和参数都相同,但返回值类型不同? 答案:相同的方法指的是方法名、参数以及返回类型都相同,因此返回类型不同的两个方法是可以并存的。 Q60:以下代码的输出是什么?...equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同 下例中,equals()返回true,而==操作符则返回false: Q73:Java类中定义方法,可否使用其他语言代码实现...答案:可以,main()方法是Java应用程序的入口方法,代码总是从特定类的main方法开始。 Q93:如果我想要保留对象的数据以供以后使用,最好的做法是什么? 答案:使用序列化。

    5.2K21

    【C++修行之道】类和对象(五)日期类的实现、const成员、取地址及const和取地址操作符重载

    这个参数仅仅是为了前缀和后缀区分而存在的。 前置运算符的语义是“先操作,再返回”。 语义上:前置运算符的语义是先对对象进行递作,然后返回操作后的对象。这里的关键是“操作后的对象”。...效率:返回引用避免了不必要的创建和返回对象的拷贝。在C++中,对象的复制可能是一个昂贵的操作。 链式操作:通过返回引用,可以支持链式操作。...语义上:后置运算符的语义是先返回操作后的对象,然后对对象进行递作。后置运算符的关键在于返回操作前的状态。 安全性:返回拷贝还避免了潜在的外部修改,此时得到的是一个独立的值,而不是对原始数据的直接引用。...而temp是临时对象,因此只能以值的方式返回,不能返回引用 1.7 输入输出流重载 // 友元函数声明,声明后可访问私有成员变量 friend ostream& operator做法是不推荐的,因为它破坏了const的正确性和对象的常量性质,可能导致未定义行为或程序错误。通常来说,应该尽量避免这种做法。

    10410

    编写干净的C#代码技巧

    换句话说,不要在应用程序中使用硬编码的字符串或值。当应用程序增长时,跟踪这些字符串是很困难的。此外,这些字符串可以与某种外部引用相关联,如文件名、文件路径、URL等。...宁愿使用Git而不是注释掉代码。 使用方法链接 这是Microsoft在默认生成代码中广泛使用的一种常见技术。在这里,每个方法返回一个对象,这些函数将被链接在一起。认识吗?...考虑另一个例子,下面是一个接受Student对象作为参数并检查空对象的小函数。如果为空,返回一个带有数据的新对象,否则返回相同的对象。...; 避免太多参数 太多的参数总是一场噩梦。如果你倾向于有超过3个参数输入到任何方法,为什么不把它包装到一个请求对象或其他东西,然后传递?让我们看一个小例子。...我们添加了一个try-catch块并忽略了错误处理,对吗?处理此类错误并将其记录到表或磁盘是一种很好的实践。

    25230

    Null 值及其处理方式

    在 Java 中,null 是一个关键字,用来表示一个引用类型的对象没有被初始化,或是没有引用任何对象的状态,这也是类似于 C 的做法。...因为你并不知道一个东西到底是一个具体的对象还是一个 null 值。一个函数说它会返回一个 String 类型的对象,这是真的吗?...注意这里并没有进行强制类型转换,之前不能调用对象的方法而现在可以的原因是编译器认为此时该对象的值不可能为 null。这个方式可以解决问题吗?...所以说,复杂情况的完全确定性的分析本来就没有办法做,如果做了一部分复杂情形而不做另一部分复杂情形,反而更加怪异,所以只做最简单情况的分析是更好的选择。...包裹的 A 类型对象返回了 Some(b) 则结果为 Some(b),如果 optA 或调用 getOptionB 返回的值有一个为 None,则整个的结果为 None。

    1.2K40

    Java 编程问题:十二、`Optional`

    不要将Optional用于字段:举例说明声明Optional类型字段的不良做法。 在构造器参数中不要使用Optional:说明在构造器参数中使用Optional的不良做法。...不要在设置器参数中使用Optional:举例说明在设置器参数中使用Optional的不良做法。 不要在方法参数中使用Optional:举例说明在方法参数中使用Optional的不良做法。...不要使用Optional返回空的或null集合或数组:举例说明使用Optional返回空的/null集合或数组的不良做法。...Method.invoke()的第一个参数表示要调用此特定方法的对象实例。如果方法是static,那么第一个参数应该是null,因此不需要对象的实例。...这次让我们讨论一下方法参数中Optional的用法。 在方法参数中使用Optional只是另一个用例,可能会导致代码变得不必要的复杂。

    1.3K20

    爆肝 50 道 Python 面试题 (上)

    当然,更为简便的做法是使用锁对象的with上下文语法来进行隐式的加锁和解锁操作。 方法二:使用元类实现单例模式。...集合中的元素必须是hashable对象,因此上面的代码在列表元素不是hashable对象时会失效,要解决这个问题可以给函数增加一个参数,该参数可以设计为返回哈希码或hashable对象的函数。...match方法是从字符串的起始位置进行正则表达式匹配,返回Match对象或None。search方法会扫描整个字符串来找寻匹配的模式,同样也是返回Match对象或None。...因为Python内置的max函数既可以传入可迭代对象找出最大,又可以传入两个或多个参数找出最大;最为关键的是还可以通过命名关键字参数key来指定一个用于元素比较的函数,还可以通过default命名关键字参数来指定当可迭代对象为空时返回的默认值...__new__方法的返回值是创建好的Python对象(的引用),而__init__方法的第一个参数就是这个对象(的引用),所以在__init__中可以完成对对象的初始化操作。

    76310

    我的C++奇迹之旅:值和引用的本质效率与性能比较

    这隐藏了底层是通过地址操作原变量ra和rb的实现细节。从使用者的角度看,代码读起来就像直接交换ra和rb,而不是通过复杂的地址操作实现。...以值作为参数或者返回值类型,在传参和返回期间,函数不会直接传递实参或者将变量本身直接返回,而是传递实参或者返回变量的一份临时的拷贝,因此用值作为参数或者返回值类型,效率是非常低下的,尤其是当参数或者返回值类型非常大时...,真的是正确吗?...c的引用,但是在main函数中又调用了一次Add函数,这时第一次调用返回的引用ret已经指向了一个不存在的对象,所以输出结果也是未定义的。...但这种行为是不可靠的,因为它依赖于具体的编译器实现细节。在不同的编译器或环境下,输出可能会完全不同。 正确的做法:是要么返回值,要么返回一个在调用者作用域内仍然存在的对象的引用。

    21110

    2019年Java面试题基础系列228道(1),快看看哪些你还不会?

    18、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?...实现高质量的 equals 方法的诀窍包括: (1) 使用==操作符检查”参数是否为这个对象的引用”; (2) 使用 instanceof 操作符检查”参数是否为正确的类型”; (3) 对于类中的关键属性...18、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 是值传递。Java 语言的方法调用只支持参数的值传递。...当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的属性可以在被调用过程中被改变,但对对象引用的改变是不会影响到调用者的。...C++和 C#中可以通过传引用或传输出参数来改变传入的参数的值。在 C#中可以编写如下所示的代码,但是在 Java 中却做不到。

    1.1K00

    代码重构:函数重构的 7 个小技巧

    提炼函数使用成本比较高,并且难以进行时…… 当逻辑表达式过于复杂,并且只使用一次的时候(如果会被复用,推荐使用 提炼函数 方式) 6:避免修改函数参数 虽然不同的编程语言的函数参数传递会区分:“按值传递...”、“按引用传递”的两种方式(Java 语言的传递方式是按值传递),这里不就讨论两种传递方式的区别,相信大家都知道。...所以我们正确的做法应该是使用一个临时变量来处理对参数的修改,代码如下: int discount (int inputVal) { int result = inputVal; if (inputVal...,应该了解它的输出会如下: arg in triple: 15 x after triple: 5 但是如果函数的参数是对象,你可能就会觉得困惑了,我们再看一下代码,把函数对象改为对象试试: public...,如果你有更好的实现方案(保证输入输出相同的前提下),就应该直接替换掉它 记得通过单元测试后,再提交代码(不想被人打的话) 参考文献: 《重构:Refactoring: Improving the Design

    64230

    c# 误区系列(二)

    既然是值类型,那么就存在装箱和拆箱过程,那么这个过程有什么不同吗? 装箱时检查是否为null,如果为null则直接返回null,如果不是null则获取值进行装箱。...很多回答是这样子的,值变量的本身是具体的值。那么难道引用类型不是指的具体的地址吗?...委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性...所以说为什么值类型在创建的时候要清空分配的地址,是在使用的时候抹除的。 引用类型的有点在于传递,因为引用类型不用复制整个地址块,只需要复制堆上对象的指定位置,32位是4个字节,64是8个字节。...void doSomething(Student student) { } doSomething(a); 那么问题是student是如何赋值的过程?是将这个a对象赋值给他吗?

    62340

    Java杂谈之行为参数化

    让我们把例子再弄得复杂一点儿。这位农民又跑回来说:“要是能区分轻的苹果和重的苹果就太好了。重的苹果一般是重量大于150克。”...需要一种比添加很多参数更好的方法来应对变化的需求。让我们后退一步来看看更高层次的抽象。一种可能的解决方案是对的选择标准建模:考虑的是苹果,需要根据Apple的某些属性(比如它是绿色的吗?...重量超过150克吗?)来返回一个boolean值。我们把它称为谓词(即一个返回boolean值的函数)。...这就是行为参数化:让方法接受多种行为(或战略)作为参数,并在内部使用,来完成不同的行为。...的做法就类似于在内联“传递代码”,因为是通过一个实现了test方法的对象来传递布尔表达式的。 6、对付啰嗦 人们都不愿意用那些很麻烦的功能或概念。

    40430

    写了挺久的代码,却还被异常支配?

    (); } 当我们需要引用对象 t,但是有可能 t 对象尚未被初始化,所以在使用这个对象之前,我们会对引用进行检查。...异常参数 异常对象与其他 Java 对象一样,都可以通过 new 关键字在 堆上 创建异常对象,因此,这也伴随着存储空间的分配和构造器的调用。...所有标准的异常类都有两个构造器,一个是 默认构造器, 一个是 接受字符串作为参数的构造器 这样子我们能把相关的异常信息放入异常对象的构造器中: throw new NullPointException(...使API更易于学习和使用,因为它与程序员已经熟悉的习惯用法一致 对于用到这些API的程序而言,它们的可读性会更好,因为它们不会出现很多程序员不熟悉的异常 异常 描述 NullPointerException...finally执行前确定的 4、finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值 异常使用指南 上面我们复习了一遍Java 中的异常,下面是一段来自

    57110

    JAVA:一篇文章理清多态

    ());//输出1300,Mechanic年薪为13倍月薪   从结果上看,a、b都是Employee类对象变量,然而对a调用getAnnualSalary()返回的是15*salary,对b调用getAnnualSalary...基于这样的想法,甚至有一些人将多态扩展到了更广泛、更复杂的情况,比如下面这种,连泛型都算进了多态中: ?   那么,多态真的是有那么多种情况吗?...真的是只要方法名相同,而参数或者内部实现方式不同,就要看成是多态吗?不不不,这种说法纯属扯淡,JAVA中的多态有且只有一种情况:对象变量是多态的。...时依然返回12薪吗?...类对象变量a调用getAnnualSalary()时,编译器会先进行静态绑定,即筛选,从而确定此处的方法调用不可能是带参数的版本,但有可能是Employee类的该方法,也有可能是Enginner或Mechanic

    44130

    我的 Web 前端面试经历——百度

    使用instance检测 在 JavaScript 中,判断一个变量的类型尝尝会用 typeof 运算符,在使用 typeof 运算符时采用引用类型存储值会出现一个问题,无论引用的是什么类型的对象,它都返回...type: function( obj ) { // 若传入的是null或undefined,则直接返回这个对象的字符串 // 即若传入的对象obj是undefined,则返回"undefined...function类型;高版本已修正,返回object类型 // 若使用typeof检测出的obj类型是object或function,则返回class2type的值,否则返回typeof检测的类型...可以看到,用的是非常巧妙的一种做法: 正常继承的情况如下: newMyDate()返回实例对象 date是由 MyDate构造的 原型链回溯是: date(MyDate对象)->date....注意⚠️:关于 new.target, MDN中的定义是:new.target返回一个指向构造方法或函数的引用。 嗯哼,也就是说,返回的是构造函数。

    65110

    【Java】Stream流、方法引用

    但循环是遍历的唯一方式吗?遍历是指每一个元素逐一进行处 理, 而并不是从 第一个到最后一个顺次处理的循环 。前者是目的,后者是方式。...或 entry 等情况: 根据数组获取流 如果使用的不是集合或映射而是数组,由于数组对象不可能添加默认方法,所以 Stream 接口中提 供了静态方法 of ,使用很简单...首先是函数式接口: 第一种写法是使用Lambda表达式: 但是使用方法引用的更好写法是: 在这个例子中,下面两种写法是等效的: Lambda 表达式: n - > Math.abs...首先是函 数式接口: 然后是父类 Human 的内容: 最后是子类 Man 的内容,其中使用了Lambda的写法: 但是如果使用方法引用来调用父类中的 sayHello 方法会更好,例如另一个子类...首 先是一个简单 的 Person 类: 然后是用来创建 Person 对象的函数式接口: 要使用这个函数式接口,可以通过Lambda表达式: 但是通过构造器引用,有更好的写法

    1.3K20

    50道JavaScript详解面试题,你需要了解一下

    2、控制台输出是什么? 答案是输出为10,因为将对象传递给函数时的对象相似,仅传递其值,而不传递对内存位置的实际引用。这就是为什么更改仅影响函数范围内的参数的原因。 3、控制台输出是什么?...该对象位于原型链的顶部,当浏览器查找访问属性的值时,它将遍历原型链,直到找到该值或直到不再遍历所有原型为止。 15、空值合并运算符做什么? 当左侧操作数为null或未定义时,它将返回右侧操作数。...但是,可以在JavaScript中通过在未将所有可能的参数都传递给函数时返回不同的输出来执行重载。 29、return语句在数组的forEach循环中做什么?...例如,执行范围(变量,参数等)与子例程一起存储。 36、我们可以使用eventHandlers剪切和复制来防止用户将内容从浏览器复制到剪贴板吗? 是的,这些事件处理程序是Web API的一部分。...它提供Web组件的封装。 46、使用哪种方法将影子DOM树附加到指定的元素,并返回对其ShadowRoot的引用? Element.attachShadow()。 47、控制台输出是什么,为什么?

    3.5K40

    C语言和C++的区别和联系

    5、缺省参数 缺省参数是声明或定义函数时为函数的参数指定一个默认值。在调用该函数时,如果没有指定实参则采用该默认值,否则使用指定的参。...· 缺省参数不能同时在函数的声明和函数定义中出现,二者只能选其一。 · 缺省值必须是常量或者全局变量。 · 缺省参数必须通过值参或常参传递。...我们看到对a的值的修改,指针p的做法是*p = 20;即进行解引用后替换值。 再来看看引用修改: 我们看到修改a的值的方法也是一样的,也是解引用。...只是我们在调用的时候有所不同:调用p时需要*p解引用,b则直接使用就可以。由此我们 推断出:引用在直接使用时是指针解引用。p直接使用则是它自己的地址。...这样我们也了解了,我们给引用开辟的这块内存是根本访问不到的。如果直接用就直接解引用了。即使打印&b,输出的也是a的地址。

    1.2K10
    领券