首页 >> 人物 >> 代码圈复杂度治国小结

代码圈复杂度治国小结

2024-01-14 人物

an containsTryCatch = StringUtil.contains(content, "try")

&& StringUtil.contains(content, "catch");

if (StringUtil.isBlank(scriptName)) {

baseOperationResult.setMessage("XXX");

return baseOperationResult;

}

if (!scriptName.matches("^[(\d)|_|a-z|A-Z]+$")) {

baseOperationResult.setMessage("XXX");

return baseOperationResult;

}

NewScript tempScript = null;

try {

tempScript = newScriptManager.findByName(StringUtil.trim(scriptName));

} catch (Exception e) {

baseOperationResult.setMessage("XXX");

return baseOperationResult;

}

if (StringUtil.isBlank(id)) {

if (tempScript != null) {

baseOperationResult.setMessage("XXX");

return baseOperationResult;

}

} else {

Integer editScriptId = Integer.parseInt(id);

if (null != tempScript) {

if (!editScriptId.equals(tempScript.getId())) {

baseOperationResult.setMessage("XXX");

return baseOperationResult;

}

}

}

if (!Enums.NewScriptTypeEnum.XX.contains(scriptType)) {

baseOperationResult.setMessage("XX");

return baseOperationResult;

}

Boolean needSubtypeMode = true;

if (StringUtils.equals(scriptType, Enums.XX.XX)

StringUtils.equals(scriptType, Enums.XX.PRE)) {

needSubtypeMode = false;

}

NewScript script = new NewScript();

script.setScriptType(scriptType);

if (StringUtil.isNumeric(status)) {

script.setStatus(Integer.parseInt(status));

}

if (StringUtil.isNotBlank(scriptCategory)) {

script.setScriptCategory(ScriptCategory.getByCode(scriptCategory));

}

String subType = "";

if (needSubtypeMode) {

if (StringUtil.isBlank(subtypeandtip)) {

baseOperationResult.setMessage("XXX");

return baseOperationResult;

}

}

if (needSubtypeMode) {

List allActiveAndTestRunScripts = newScriptManager

.findAllActiveAndTestRunScripts();

List allActiveAndTestRunSubTypeList = new ArrayList<>();

for (NewScript activeAndTestRunScript : allActiveAndTestRunScripts) {

List subTypeListEveryScript = Arrays

.asList(Optional.ofNullable(activeAndTestRunScript.getSubType())

.orElse(new String()).split(","));

for (String subTypeTemp : subTypeListEveryScript) {

if (StringUtil.isNotBlank(subTypeTemp)) {

allActiveAndTestRunSubTypeList.add(subTypeTemp);

}

}

}

try {

JSONArray subtypetipsArray = JSON.parseArray(subtypeandtip);

if (StringUtil.isBlank(id)) {

for (Object object : subtypetipsArray) {

JSONObject subtypetipsObject = (JSONObject) object;

String subtypeSingle = subtypetipsObject.getString("subtype");

if (StringUtil.isBlank(subtypeSingle)) {

baseOperationResult.setSuccess(false);

return baseOperationResult;

}

if (CollectionUtils.contains(allActiveAndTestRunSubTypeList.iterator(),

subtypeSingle)) {

baseOperationResult.setSuccess(false);

return baseOperationResult;

}

}

} else {

if ("1".equals(status) || "2".equals(status)) {

for (Object object : subtypetipsArray) {

//略去大多概要XXX;

if (StringUtil.isBlank(subtypeSingle)) {

baseOperationResult.setSuccess(false);

return baseOperationResult;

}

for (NewScript oldNewScript : allActiveAndTestRunScripts) {

if (oldNewScript.getId().equals(Integer.parseInt(id))) {

continue;

}

//略去大多概要XXX;

if (CollectionUtils.contains(filtered.iterator(), subtypeSingle)) {

baseOperationResult.setSuccess(false);

return baseOperationResult;

}

}

}

}

}

for (Object object : subtypetipsArray) {

if (1 == script.getStatus() || 2 == script.getStatus()) {

SubtypeTips subtypeTips = null;

subtypeTips = subtypeTipsManager.findBySubtype(subtypeSingle);

if (subtypeTips == null) {

subtypeTips = new SubtypeTips();

}

subtypeTips.setSubtype(subtypeSingle);

subtypeTips.setInternalTips(innertips);

subtypeTips.setExternalTips(externaltips);

subtypeTips.setShareLink(shareLink);

subtypeTips.setStatus(1);

subtypeTipsManager.se(subtypeTips);

}

}

subType = StringUtil.substring(subType, 0, subType.length() - 1);

} catch (Exception e) {

baseOperationResult.setSuccess(false);

baseOperationResult.setMessage("XXX");

return baseOperationResult;

}

}

boolean needCreateTestRunScript = false;

if (StringUtils.isNotBlank(id)) {

script.setId(Integer.parseInt(id));

NewScript orgin = newScriptManager.findById(Integer.parseInt(id));

if (null != orgin && 1 == orgin.getStatus() && "1".equals(status)) {

if (StringUtil.isNotBlank(orgin.getContent())) {

String originContentHash = CodeUtil

.getMd5(StringUtil.deleteWhitespace(orgin.getContent()));

String contentHash = CodeUtil.getMd5(StringUtil.deleteWhitespace(content));

if (!StringUtil.equals(originContentHash, contentHash)) {

needCreateTestRunScript = true;

}

}

}

} else {

script.setSubmitter(user.getLoginName());

}

Set systemList = new HashSet();

if (StringUtil.isNotBlank(systems)) {

String[] systemArray = systems.split(",");

for (int i = 0; i

systemList.add(systemArray[i]);

}

}

if (needCreateTestRunScript) {

if (needSubtypeMode) {

content = replaceContent(content, subType);

String testScriptSubType = "";

List subTypeList = Arrays.asList(StringUtil.split(subType, ","));

for (int i = 0; i

testScriptSubType += this.UPDATE_SCRIPT + subTypeList.get(i);

if (i != subTypeList.size() - 1) {

testScriptSubType += ",";

}

}

subType = testScriptSubType;

}

scriptName = this.UPDATE_SCRIPT + scriptName;

NewScript oldUpdateScript = newScriptManager.findByName(scriptName);

if (null != oldUpdateScript)

script.setId(oldUpdateScript.getId());

else {

script.setId(null);

}

baseOperationResult.setNeedAudit(true);

}

if (StringUtil.isBlank(fileSuffix)) {

//如果全空的话 配置文件全扫

script.setSuffix(".*");

} else {

script.setSuffix(fileSuffix);

}

script.setName(scriptName);

if (StringUtil.equals(allPath, "Y")) {

script.setAllPath("Y");

} else {

script.setAllPath("");

}

script.setEnvTag(tenantScope);

script.setNeedAutoScan(needAutoScan);

if (StringUtil.isNotBlank(scopes)) {

for (String each : StringUtil.split(scopes, ",")) {

each = StringUtil.replace(each, " ", "");

script.addScope(each);

}

}

if (StringUtil.isNotBlank(content)) {

BaseOperationResult preLoadResult = syntaxCheck(script);

if (!preLoadResult.isSuccess()) {

baseOperationResult.setMessage(preLoadResult.getMessage());

return baseOperationResult;

}

}

if (StringUtil.contains(content, "new Bug")) {

baseOperationResult.setSuccess(false);

return baseOperationResult;

}

try {

Result result = newScriptManager.seCustomScript(script);

if (result.isSuccess()) {

if (EnvUtil.isProdEnv() && EnvUtil.isLinux()) {

if (!needCreateTestRunScript) {

//略去大多概要XX

} else {

//略去大多概要XX

}

}

Boolean hasOldScript = processOldEngineRule(scriptName);

if (containsTryCatch) {

if (hasOldScript) {

//略去大多概要XX

} else {

//略去大多概要XX

}

} else {

if (hasOldScript) {

baseOperationResult.setMessage("XXX");

} else {

baseOperationResult.setMessage("留存成功!");

}

}

baseOperationResult.setId(script.getId());

processTenantRelation(script.getId(), tenantIdList, user.getLoginName());

if (!needCreateTestRunScript && needSubtypeMode

&& (StringUtil.equals(Enums.XX.COMMON, script.getScriptType())

(StringUtil.equals(Enums.XX.SCRIPT,

script.getScriptType())))) {

JSONArray subtypetipsArray = JSON.parseArray(subtypeandtip);

for (Object object : subtypetipsArray) {

//略去大多概要XX

}

}

} else {

baseOperationResult.setSuccess(false);

return baseOperationResult;

}

} catch (Exception e) {

baseOperationResult.setMessage("XX");

}

return baseOperationResult;

}

原示例至少400行以上,线性69,憋了于是就长气才上大学完。如果让你来接手这段示例,只不过想象很束手无策?必须梳理上面各种主脱自然语言,弄清楚中段脉络。

那么什么样的示例才较难上大学,较难上手呢?一般业界并不认为示例可上大学性,可试验中,公共安全成本高和圈线性有很大关系,具体如下:

我该怎么想到

1.【知己知彼,了解自己示例线性】这个比较有趣,有以下几种方式将:

a.自己天内下确认结点(if while for catch case and or等)至少就告诉圈线性是多大了,参考上面怎么数值圈线性章节。

b.在蚂蚁实际上常用的广目游戏平台,也可以发送给到一新审批commit历史纪录里头,哪些方通则有圈线性比较较高。

c.在示例审批之当年,自己用idea小PDF(Metrics ReloadedPDF),一次性显像自己督导的系统所设计所有方通则有的线性。

红色大多标志圈线性,天内字越大线性越较高。

2.【对症下药,增加线性】网站有很多方通则有,我论述了下,至少有以下几种

方通则有一:掺入造出分立自然语言的三子方通则有,把十分复杂自然语言拆建分成几个分立基本功能,再行去上大学示例,就时会想象准确很多。以上面举例的线性69的方通则有为例,我们想到了如下的方通则有拆建分,只不过想象准确了很多?

public XXresult doSe( NewScriptDTO newScriptDTO) {

//0.在结构上结果

XXresult result=new XXresult() ;

try{

//1.程序员名检验

scriptNameCheck(newScriptDTO);

//2.程序员查找

loadScript(newScriptDTO);

//3.程序员留存

seScript(newScriptDTO);

}catch(XXException e){

result.setSuccess(false)

result.setMessage("XXX");

return result;

}catch(Exception e){

result.setSuccess(false)

result.setMessage("XXX");

return result;

}

//操作完成

result.setSuccess(true)

result.setMessage("XXX");

return result;

}

/**检验程序员名*/

private void scriptNameCheck(NewScriptDTO newScriptDTO){

xxx

}

/**查找程序员*/

private void loadScript(NewScriptDTO newScriptDTO){

xxx

}

/**留存程序员*/

private void seScript(NewScriptDTO newScriptDTO){

xxx

}

方通则有二:可用性自然语言断定,通过提取时有消失的情况下, 或者调整断定顺序等方式将翻倍比较有趣示例旨在。

///////// 例子1,掺入时有消失的情况下a/////////

//变来得当年

if (情况下1)

{

if (情况下a)

{

// 拒绝执行a自然语言

}

}

else if(情况下2)

{

if (情况下a)

{

// 拒绝执行b自然语言

}

}

if (情况下a)

{

// 拒绝执行c自然语言

}

//变来得后

if (情况下a)

{

if (情况下1)

{

// 拒绝执行a自然语言

}

else if(情况下2)

{

// 拒绝执行b自然语言

} // 拒绝执行c自然语言

}

///////// 例子2,可用性自然语言断定顺序/////////

//变来得当年

if((情况下1 && 情况下2)|| !情况下1){

return true;

}else{

return false;

}

//变来得后

if(情况下1 && !情况下2){

return false;

}

return true;

方通则有三:尽量常用ja一新功用,增加大量的if断定。下面是来自小组一淏同班同学的缺少的可用性例子

//变来得当年

List list = XXX;

if (CollectionUtils.isEmpty(list)) {

for (XX item : list) {

if (item==null){

return;

}else{

// 自然语言a

}

}

//变来得后

List list = XX;

list = Optional.ofNullable(list).orElse(new ArrayList<>());

list.stream().filter(Objects::nonNull).forEach(item->{

//自然语言a

});

}

当然,只要每每钻研,增加线性还有很多方通则有,这里头不一一列举了。论述下初衷:

一个方通则有/类不要寄给段落段落的示例,把概要元件在自然语言分立的三子类和三子方通则有里头。 改用有象征意义的类名,方通则有名,让常用者闻名思意,不易上手。 自然语言暗示上,可用性断定自然语言成最简范例。 尽量常用编程善于,合并断定方式将。

摘录

作为蚂蚁所设计者的我们,开发新示例也某种程度像创作一个艺术品,深思熟虑,精雕细刻,经过电子产品的急剧升级迭代,仍然能够保持顽强的感染力,就像示例四层境界[中有3]上面问道的第四层,经过了间隔时间平步青云“我的示例还在用”。

举出:

[中有1]对示例的领悟之-较高质量示例有三要素:可上大学性、可公共安全性、可延展性 :

[中有2]古今中外圈线性:%E5%9C%88%E5%A4%8D%E6%9D%82%E5%BA%A6/828737

[中有3]示例的四层境界:

_185201, 第一层“我的示例寄给完了”,第二层“我的示例寄给好了”,第三层“我的示例能跑了”,第四层“我的示例还在用”

迭头云电子产品的试验中—迭头云容器镜像服务项目 ACR

免费试用趣味面向容器镜像、Helm Chart 等相一致 OCI 标准的云原生制品安全附属及较高效派送游戏平台,发桑你的的试验中来得有机时会取得千元机械滑鼠,限量独创礼品。

页面这里头,发送给详情。

中有解链接:

本文为迭头云原创概要,无权并不需要不得转载。

如何治疗腹泻最有效
肠炎宁管新冠拉肚子吗
类风湿关节疼痛用什么药最好
软组织挫伤很疼怎么办
蒙脱石散
友情链接