最近有朋友在公众号后台给我留言,“Jerry啊,你最近写的都是一些SAP研究院里面用到的新技术,能不能写点SAP传统的开发技术比如ABAP相关的东西”?

其实Jerry在刚开始写这个公众号的时候,是写过很多ABAP的技术文章:

因为Jerry最近的工作,需要使用ABAP编程的场景不多,所以近期这方面的文章少了点。

在Jerry之前的文章 写在Github被微软收购之际 - Github的那些另类用法 曾经提到,SAP在Github上也有很多开源项目:

https://github.com/sap

截至到今天(2019年7月26日),已经有399个仓库了。

Jerry年初去成都天府软件园一家SAP partners公司拜访时,这家公司的技术主管曾经问过我,有没有推荐的ABAP编程规范。Jerry当时想了想,回答说,虽然SAP研究院内部确有严格清晰写成文档,多达七八十页的ABAP编程规则,但Jerry不确定这些编程规则是否能直接发给非SAP员工。

今天Jerry觉得这个问题我已经有完美的答案了:我们来聊聊上述SAP开源的Github仓库其中之一,包含了SAP官方推荐的ABAP编程规范:

https://github.com/SAP/styleguides

cheat-sheet文件夹里主要包含了CleanABAPCheatSheet和CleanABAPTheGoldenRules两个文件,前者包含了SAP认为要写出Clean的ABAP代码,需要遵循的准则和尽量避免的误区。

而CleanABAPTheGoldenRules这个文件,包含的就是SAP推荐的关于ABAP编程方方面面的最佳准则:

而Sub-sections文件夹里包含了一些话题的深入阐述:

这些话题每一个都值得用一篇文章展开聊,Jerry先挖个坑在这里,有机会再填:

Avoid Encodings

SAP这个github文件给出的推荐是,建议在给方法实现里的变量名取名时,避免使用前缀。下图红色高亮的代码是推荐的做法,而黑色的代码是应该避免的代码。

这很有趣,因为Jerry在SAP内部做ABAP开发,遵循的原则恰恰就是第二种做法。

作者也深知这个建议和SAP官网help.sap.com上定义的ABAP编程规范里变量命名规范有相矛盾的地方,但还是坚持认为变量名不要前缀,是更加符合现代编程规范的做法,并且让变量有更好的可读性。

Jerry的个人意见是,对于SAP partners的开发团队来说,不必纠结到底应该遵循help.sap.com上的变量命名规范,还是应该按照本文介绍的SAP github上介绍的规范来——更重要的是,整个团队内部达成一致,选择一套坚决执行。

Enumerations.md

在ABAP里使用枚举类型的几种方式:

Exceptions

ABAP异常处理的最佳实践。

Function Groups vs. Classes

给了为什么坚决推荐不再使用function group / function module,而是鼓励大家投入到面向对象编程怀抱的原因。

Modern ABAP Language Elements

搜集了一些现代的ABAP语法和ABAP关键字的用法。

Upper vs. Lower Case

ABAP 语言的大小写规范,经常会让很多刚刚从其他编程语言转过来的程序员觉得摸不着头脑,Jerry当年刚刚从C++编程转到ABAP编程也是如此。

这个子话题给出了推荐的大小写使用场景。

因为Jerry的日常工作几乎不会用到ABAP,所以我也没有时间就这些话题深入展开,大家可以好好利用这个Github仓库,让自己的团队都能开发一套clean的ABAP代码出来,感谢阅读。

更多阅读

SAP官方发布的ABAP编程规范的更多相关文章

  1. 在SAP云平台ABAP编程环境上编写第一段ABAP程序

    距2017年秋季的SAP TechEd大会上一位大佬Björn Goerke,SAP's Chief Technology Officer宣布了SAP Cloud Platform即将支持ABAP至今 ...

  2. 华为C语言编程规范

    DKBA华为技术有限公司内部技术规范DKBA 2826-2011.5C语言编程规范2011年5月9日发布 2011年5月9日实施华为技术有限公司Huawei Technologies Co., Ltd ...

  3. 学而不思则罔 - SAP云平台ABAP编程环境的由来和适用场景

    最近Jerry写了一系列关于SAP云平台ABAP编程环境的技术文章,这些文章都是围绕着在云上的ABAP编程环境的具体知识点来分享,比如要完成一个具体的开发需求,所需要的编程步骤.这些文章陆续收到一些读 ...

  4. SAP云平台上的ABAP编程环境里如何消费第三方服务

    在ABAP On-Premises环境下,使用ABAP编程消费第三方服务,相信很多ABAP顾问都已经非常熟悉了,无非就是使用CL_HTTP_CLIENT或者CL_REST_HTTP_CLIENT来发送 ...

  5. 如何在SAP Cloud Platform ABAP编程环境里创建一个employee

    用ABAP Development Tool登录SAP Cloud Platform ABAP编程环境后,对ABAP项目点击右键,选择属性,从而找到该环境的web访问的url: https://325 ...

  6. 各大厂 C/C++ 编程规范详解

    来吧!各大厂知名规范体系~ 各有特点各有侧重~ Google C++ Style Guide Google C++ Style Guide,[中文版],简称 GSG,谷歌的 C++ 编程规范,在国内有 ...

  7. 中兴软件编程规范C/C++

    Q/ZX 深圳市中兴通讯股份有限公司企业标准 (设计技术标准) Q/ZX 04.302.1–2003      软件编程规范C/C++                               20 ...

  8. C#编程规范

    C#编程规范 Version 1.0   目录 第一章 概述.... 4 规范制定原则.... 4 术语定义.... 4 Pascal 大小写.... 4 Camel 大小写.... 4 文件命名组织 ...

  9. WCF技术剖析之二十七: 如何将一个服务发布成WSDL[编程篇]

    原文:WCF技术剖析之二十七: 如何将一个服务发布成WSDL[编程篇] 对于WCF服务端元数据架构体系来说,通过MetadataExporter将服务的终结点导出成MetadataSet(参考< ...

随机推荐

  1. 阶段5 3.微服务项目【学成在线】_day09 课程预览 Eureka Feign_05-Feign远程调用-客户端负载均衡介绍

    2 Feign远程调用 在前后端分离架构中,服务层被拆分成了很多的微服务,服务与服务之间难免发生交互,比如:课程发布需要调用 CMS服务生成课程静态化页面,本节研究微服务远程调用所使用的技术. 下图是 ...

  2. 阶段5 3.微服务项目【学成在线】_day18 用户授权_08-动态查询用户的权限-用户中心查询用户权限

    3.3 用户中心查询用户权限 3.3.1 需求分析 认证服务请求用户中心查询用户信息,用户需要将用户基本信息和用户权限一同返回给认证服务. 本小节实现用户查询查询用户权限,并将用户权限信息添加到的用户 ...

  3. Qt编写自定义控件44-天气仪表盘

    一.前言 天气仪表盘控件是所有控件中唯一一个使用了svg矢量图的控件,各种天气图标采用的矢量图,颜色变换采用动态载入svg的内容更改生成的,其实也可以采用图形字体来做,本次控件为了熟悉下svg在Qt中 ...

  4. c# 结构体struct注意事项

    c# 结构struct注意事项 1,不能定义无参构造函数,因为隐式的默认无参构造函数不能被重写 2,当为某个结构编写带有参数的构造函数时,必须显式初始化所有成员,否则编译不过. 3,不允许在结构的实例 ...

  5. CentOS安装文件共享samba

    参考:https://jingyan.baidu.com/article/03b2f78cdf811c5ea237aebc.html https://www.linuxidc.com/Linux/20 ...

  6. MySQL数据同步交换

    一.为了解决数据同步汇聚,数据分发,数据转换,数据维护等需求,TreeSoft将复杂的网状的同步链路变成了星型数据链路.     TreeSoft作为中间传输载体负责连接各种数据源,为各种异构数据库之 ...

  7. Linux与windows的对比

    Linux与windows的对比 声明:下面的内容总结自实验楼的linux教程,特在此说明. Linux与windows一样,是一个操作系统. Linux与Windows的区别 软件与支持 windo ...

  8. php 获取文件mime类型的方法

    php 获取文件mime类型的方法 使用fileinfo需要安装php_fileinfo扩展. 如已安装可以在extension_dir目录下找到php_fileinfo.dll(windows),f ...

  9. SrpingBoot入门到入坟04-配置文件

    SpringBoot使用一个全局的配置文件,名称是固定,作用就是修改SpringBoot自动配置的默认值. *application.properties *application.yml 先看看两者 ...

  10. (七)Session 对象知识点总结(来自那些年的笔记)

    如果你想要转载话,可不可以不要删掉下面的 作者信息 呀!: 作者:淮左白衣 写于 来源笔者自己之前学javaWeb的时候,写的笔记 : 目录 Session对象 Session和cookie的主要区别 ...