Sent: Monday, September 23, 2013 10:59 AM

Subject: code review遗留问题: is it necessary to explicitly initialize the exporting parameter within implementation itself

像下图里的exporting parameter需要在method 实现最开始时显式CLEAR么?

答案是it depends.

pass by value checkbox默认未选中,即pass by reference,此时实参的reference直接传到method 实现里,修改method里的形参即直接修改了实参。

如果是pass by value,在runtime进入method执行时,abap runtime自动为输入和输出形参创建local object,然后把输入实参的value copy到local object里,method里的计算都存储在输出形参的local object里,method执行结束后再把local object的值copy到输出实参。

在pass by reference的情况下,exporting参数在进入函数内时不会自动被初始化,而仍然为传入时实参的值,因此需要developer 自己负责去初始化,否则可能会出现unexpepected的behavior。

什么时候用pass by reference,什么时候用pass by value?
Pass by reference性能更好,但需要developer自己在实现里初始化exporting parameter
如果期望输出参数仅当method 成功执行之后才返回给caller,用pass by value
如果参数是一个很复杂的structure,比如nested table,或者按照abap help里面的建议值—超过100bytes后最好用pass by reference。

二者更详细的区别参考abap help。

Extended check会自动把所有违反规则的code 列出来,比如CL_CRM_SOC_FND_ACCESS_IMPL 有17处:


这些issue被categorize成programming guideline violation,不会算作ATC error。

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

ABAP方法的exporting类型参数,需要在方法实现最开始显式初始化么相关推荐

  1. 接口方法javadoc注释_继承Javadoc方法注释

    接口方法javadoc注释 尽管用于javadoc工具的JDK工具和实用程序页面通过实现和继承方法来描述Javadoc方法注释重用的规则,但是当实际上不需要使用{@inheritDoc}时,很容易不必 ...

  2. ABAP search help (搜索帮助) 五种方法

    ABAP 的搜索帮助有很多种方法,掌握下面的几种基本差不多了 *&--------------------------------------------------------------- ...

  3. Angular单元测试框架karma-jasmine里类似ABAP unit框架的setup和class_setup方法

    类似ABAP unit框架的setup和class_setup方法: 使用TestBed的工厂方法创建Component: 最后使用工厂方法新建Component实例: 创建好的Component实例 ...

  4. ABAP 快速找到第二代增强的方法(基于函数出口增强function)

    SAP系统带有增强出口检查函数如下: MODX_ALL_ACTIVE_MENUENTRIES (菜单增强) MODX_FUNCTION_ACTIVE_CHECK (出口函数增强) MODX_MENUE ...

  5. C++中函数模板的返回值是模板类型参数的调用方法

    1 函数模板 模板定义以关键字template开始,后接模板形参表,模板形参表是用尖括号扩住的一个或多个模板形参的列表,形参之间以逗号分隔.关于函数模板的详细介绍,请参考<C++中模板函数及模板 ...

  6. 【Android NDK 开发】JNI 方法解析 ( C/C++ 调用 Java 方法 | 函数签名 | 调用对象方法 | 调用静态方法 )

    文章目录 I . 调用 Java 方法流程 II . 获取 jclass 对象 ( GetObjectClass ) III . 获取 jclass 对象 ( FindClass ) IV . JNI ...

  7. scala 类的多态_Scala多态方法和显式引用

    scala 类的多态 The methods in scala can be parametrized with both value and types. Value parameters are ...

  8. java方法怎么用?【java方法使用教程】

    java方法怎么用?[java方法使用教程] java方法可以理解为是语句的集合,它们在一起执行一个功能.假设有一个游戏程序,程序在运行过程中,要不断地发射炮弹.发射炮弹的动作需要编写100行的代码, ...

  9. html显示数据库图片django,django将图片上传数据库后在前端显式的方法

    1.使用ImageField先安装pillow模块 pip install pillow 2.在app的models中设置 class Image(models.Model): pic_name=mo ...

最新文章

  1. python bytearray拼接_python数据类型 ——bytes 和 bytearray
  2. 提高python执行效率_关于提高python程序执行效率的思路和想法
  3. openstack登陆dashboard提示认证发生错误
  4. 通过pycharm启动django
  5. 进程,线程,消息循环的关系
  6. 【费用流】【线性规划】志愿者招募(luogu 3980)
  7. my-innodb-heavy-4g.cnf
  8. 【转】深入分析JAVA IO(BIO、NIO、AIO)
  9. 解决MSN无法登录问题的意外收获
  10. 项目管理知识体系指南_PMP考前冲刺丨项目管理知识体系指南(PMBOK)串讲(4)...
  11. python面试题之请谈谈.pyc文件和.py文件的不同之处
  12. postgres建表
  13. pip 安装tensorflow==2.1太慢怎么办?(pip安装超时Read timed out)
  14. 微软mysql sqlhelper_微软SqlHelper详细解读
  15. PMP考试备考个人体会
  16. 二维码生成器网站/解码网站
  17. 算法和程序有何异同?
  18. ERROR: Pool overlaps with other one on this address space 解决办法
  19. 文献管理软件Mendeley优缺点分析
  20. 机器学习笔记1.矩估计、极大似然估计。

热门文章

  1. Delphi数据类型
  2. IT英语职场之网管英语大全
  3. 开源界的 5 大开源许可协议
  4. Redis 源码走读(二)对象系统
  5. Django内置的用户认证
  6. phpcms:八、show.html
  7. [Unity3D]Unity3D游戏开发Lua随着游戏的债券(于)
  8. vb和vb.net事件机制
  9. 使用Synergy多台电脑共享键盘鼠标和剪贴板
  10. Orm框架之XUtils简单使用