SAP Engagement Center的一段代码审查记录

CEC review 2015-11-3

1. 这段代码的目的是从A=a&B=b&C=c&D=d中解析出key A,B,C,D和value a,b,c,d

SAP Engagement Center的一段代码审查记录

虽然只有4行,但是后面两行每行至少包含substring和indexOf两个字符串操作。

可以通过下面代码高效地实现这个功能:

var test = “#token=Be&access_token=fff&id_token=ets&expires_in=3600&scope=full”;

var anotherTry = function(value) {

var reg = /(?:^\#|&)(.*?)=(.*?)(?=&|$)/g;

var temp;

while((temp = reg.exec(value))!= null) {
console.log("Key: " + temp[1] + " value: " + temp[2]); }

};

anotherTry(test);

输出:

SAP Engagement Center的一段代码审查记录

2. 时间点1:UserInfoAPI instance的创建由getFullScopes trigger:

SAP Engagement Center的一段代码审查记录

SAP Engagement Center的一段代码审查记录

时间点2:

时间点1和时间点2 在两个不同的session里。

SAP Engagement Center的一段代码审查记录

4. 每次通过http 请求数据都是通过JSONModel的loadData完成的,既然是No caching,所以可以考虑用一个全局的JSONModel,而不用每次都new一个,因为创建 一个JSONModel是一个expensive的操作,因为其处在prototype chain的leaf node上:

BaseObject -> EventProvider -> MessageProcessor -> Model -> ClientModel -> JSONModel

SAP Engagement Center的一段代码审查记录

5. getLogoIcon改成getLogoIconURL更好些。

SAP Engagement Center的一段代码审查记录

SAP Engagement Center的一段代码审查记录

SAP Engagement Center的一段代码审查记录

SAP Engagement Center的一段代码审查记录

8. 这种在application 代码里hard code internal id ( 以两个下划线__ )开头是绝对不允许的代码。这里的__xmlview0是UI5 framework生成的,0是框架internal维护 的计数器。line 185就限定死了当前的view - LaunchPadShell 必须是UI5 application lifecycle里第一个被render的view - 这样就太不灵活了。今后如果你们的应用如 果deployment的方式发生了改变,例如是从其他的ui5 view通过点击navigate 过来的,此时counter就是一个大于0的数了。

SAP Engagement Center的一段代码审查记录

SAP Engagement Center的一段代码审查记录

for line 52, use:

logo: sCusLogoIcon || sSapLogoIcon

要获取更多Jerry的原创文章,请关注公众号"汪子熙":
SAP Engagement Center的一段代码审查记录