头图

本系列第一篇文章,介绍了 Clean ABAP:聊聊 SAP 原版技术书籍,以及如何购买(一)

本文接着介绍 Clean SAP UI5 这本书。

官网地址在此

本书总共 563 页,内容概括:

  • 学习编写可读且可维护(readable & maintainable)的 SAP UI5 代码
  • 改进开发人员使用 JavaScript 语言、模块、函数、变量的方式
  • 介绍如何创建自描述性(descriptive)的函数名称、编写清晰的注释并正确格式化代码

为了便于 SAP UI5 初学者阅读,本书开始的章节,简要介绍了 JavaScript 和 SAP UI5 基础,包括 JavaScript ES6 关键功能,例如箭头函数、扩展语法等。然后针对不同类型的 SAP UI5 项目,即 Freestyle UI5 应用和 Library 项目进行讲解。

作为本书核心内容,重点讲解了书写 SAP UI5 应用的最佳实践,通过实际案例展示 Clean SAPUI5 的编码规则,深入探讨了解耦模块、构造函数、声明变量和字面量、使用控制流语句和循环、处理错误、执行自动化测试等理念。

本书目录

1 Introduction
2 JavaScript and SAPUI5
3 Project Structure
4 Modules and Classes
5 Functions
6 Naming
7 Variables and Literals
8 Control Flow
9 Error Handling
10 Formatting
11 Comments
12 Static Code Checks and Code Metrics
13 Testing
14 TypeScript and Related Technologies

本书六位大佬作者列表如下。

本书试读版地址在此

试读版总共 27 页,从第七章,JavaScript 变量和字面量开始介绍,探索了 JavaScript 变量的声明、初始化和其在 SAP UI5 控制器实现中的不同用法。作用域规则(Scoping Rule)是让很多从 ABAP 转型 SAP UI5 开发的朋友,在学习过程中觉得困惑的一个知识点,本章也做了针对性的讲解。

在探索数组和对象字面量的部分,讨论了解构(Desctructing)和扩展(Spread)语法,这也是 JavaScript 区别于 ABAP 的一大特色。

同 ABAP 只能用 DATA 关键字声明变量不同,在 JavaScript 中,可以使用关键字 var、let 和 const 来声明变量。

用 var 声明的变量,其声明会被提升到(hoisted)声明它们的函数(或全局范围)的开头。但提升过程中并不伴随着变量的初始化。 因此用 var 声明的变量可以在声明之前被访问,但它的值将是未定义的(undefined),直到代码中变量定义被初始化为止,上图 Listing 7.1 是一个具体例子。

用 var 声明的变量也可以在同一函数作用域中声明多次,并且它们都引用同一个变量。下图是一个例子,message 变量声明了两次:一次在 redeclaration 函数的开头,另一次在函数中 if 语句的范围内。两个声明实际上引用同一个变量,因为 var 的作用域是整个函数的作用域。

var 关键字是 JavaScript 三个变量声明关键字中最古老的一个,为了向后兼容而保留在这门编程语言中。如上面两个例子所示,var 的行为会让刚刚从其他编程语言转过来的开发人员觉得费解,成为引起代码潜在 bug 的罪魁祸首,所以本书的观点旗帜鲜明:编写新的代码时,压根就不要用 var. 在历史遗留代码中看到 var 时,将其重构为 let 或 const.

重构 var 的替换方案是用 let 或 const 声明变量。

如果在变量被声明之前的代码位置 A 处,就使用其后代码 B 处通过 let 或 const 声明的变量,会引发 ReferenceError.

在同一作用范围内重新声明变量会引发语法错误。

用 let 或 const 声明的变量的作用域,并不像 var 那样是整个函数作用域,而是大括号 {} 之间的代码,也称为块作用域。

可以在函数的内部作用域中重新声明变量,但是在内部作用域中声明的变量是一个新变量,它隐藏了外部作用域变量的定义。

下图 Listing 7.4 是用 let 替换 var 之后的代码。

let 声明的变量,其值和类型都可以改变;const 声明的变量,不允许被重新赋值。这意味着 const 声明的变量,必须在声明语句中立即初始化,而不能随后再赋值。

Clean SAPUI5 推荐默认使用 const 而不是 let,因为无论何种编程语言的 Clean Code 指南,都鼓励使用若干 simple functions 组织起来的方式来实现业务功能,这些 simple function 的代码都不长。在这个大前提下,函数内的变量极大可能只会在初始化阶段被赋值,所以用 const 声明这些变量,能够清晰地表达出这种语义。

仅当变量在函数内确实会被重新赋值时,使用 let 声明变量。

虽然试读版只包含了第七章,但是我们仍然可以从提供的目录,来大概了解本书其余部分的内容。

第三章介绍了 SAP UI5 项目的基本结构,MVC 的概念,index.html 文件的作用,Freestyle 应用和 Fiori Elements 的联系,Library 项目的定义等内容。

第四章介绍了 SAP UI5 Module 的概念和生命周期,Service Module 和 Class Module 的区别和联系。

第五章介绍了 SAP UI5 开发离不开的 Function 概念,包括 Function Object,Instance Methods, Event Handlers 和 Callbacks, 以及 Callbacks 执行上下文,Getters 和 Setters,匿名函数,函数参数,Promises,闭包,以及 ES6 的 Generators 等知识要点。

针对每个要点,本书都给出了反面案例,以及如何通过 Clean Code 的准则去重构的方法。

第六章是命名规范的专题讨论,包括 Classes 和 Enums,Functions 和 Methods,变量和参数,私有方法,命名空间,控件 ID 这些元素的命名规范介绍。

第八章介绍了程序控制流的编写建议:如何合理使用 if, else if, switch, while 和 for 循环等关键字来控制程序的执行流。

第九章展示了什么是 SAP UI5 里优雅清晰的错误处理实现方法。

第十章讨论了 SAP UI5 源代码的缩进和格式化问题,并提供了一些辅助工具。

第十一章是如何书写 Clean 注释的专题讲解,第十二章给出了 SAP UI5 源代码的静态检查和各个维度的代码指标度量的概念和测量方式。

第十三章是 SAP UI5 应用测试专题,第十四章介绍了利用 TypeScript 来辅助开发人员实现 Clean SAPUI5 目标的一些具体方法。

第十五章则是 Clean SAPUI5 方法论的概括和总结。

本系列下一期介绍这本书:SAP Business Technology Platform


注销
1k 声望1.6k 粉丝

invalid