优化如下代码:ArrayNode ents2 = (ArrayNode)jsonNode.get("ents"); for (int i = 0; i < ents2.size(); i++) { List<BoAttribute> boAttrList = JsonUtil.toBean(ents2.get(i), BoEnt.class).getBoAttrList(); // 计算提交的 varchar 类型字段总长 int columnType = 0; for (BoAttribute ba : boAttrList) { if (Column.COLUMN_TYPE_VARCHAR.equals(ba.getColumnType())) { columnType += ba.getCharLen(); } } if (columnType > 16299){ throw new BaseException("字符串类型创建过长"); } }
时间: 2023-06-05 11:08:23 浏览: 119
ArrayNode ents2 = (ArrayNode) jsonNode.get("ents");
for (int i = 0; i < ents2.size(); i++) {
List<BoAttribute> boAttrList = JsonUtil.toBean(ents2.get(i), BoEnt.class).getBoAttrList();
// 计算提交的 varchar 类型字段总长
int columnType = 0;
for (BoAttribute ba : boAttrList) {
if (Column.COLUMN_TYPE_VARCHAR.equals(ba.getColumnType())) {
columnType += ba.getCharLen(); // 累加varchar字段的长度
}
}
if (columnType > 16299) {
throw new BaseException("字符串类型创建过长");
}
}
优化说明:
1.将 varchar 字段总长计算的变量名改成 columnType,易于理解
2.累加varchar字段的长度,代替之前的覆盖操作
3.增加if判断之外的花括号,避免if语句在未来添加内容时出错
相关问题
优化如下代码:ArrayNode ents2 = (ArrayNode)jsonNode.get("ents"); for (JsonNode ent : ents2) { BoEnt boEnt = JsonUtil.toBean(ent, BoEnt.class); List<BoAttribute> boAttrList = boEnt.getBoAttrList(); // 计算提交的 varchar 类型字段总长 int columnType = 0; for (BoAttribute ba : boAttrList) { if (Column.COLUMN_TYPE_VARCHAR.equals(ba.getColumnType())) { columnType += ba.getCharLen(); } } if (columnType > 16299){ throw new BaseException("字符串类型创建过长"); } }
可以考虑将计算提交的 varchar 类型字段总长的代码优化为以下方式:
```
for (BoAttribute ba : boAttrList) {
if (Column.COLUMN_TYPE_VARCHAR.equals(ba.getColumnType())) {
columnType = Math.max(columnType, ba.getCharLen());
}
}
if (columnType > 16299){
throw new BaseException("字符串类型创建过长");
}
```
这样可以避免重复赋值,提高效率。
import ansa from ansa import base from ansa import constants def main(): ents = [] ents.append(base.GetEntity(constants.NASTRAN, "MAT1", 23)) ents.append(base.GetEntity(constants.NASTRAN, "MAT1", 25)) status = base.And(ents) #...or... status = base.And(keyword="MAT1", id=[23, 25])
这段代码同样使用了 ANSA 软件的 Python API。它创建了一个列表 ents,用于存储两个 MAT1 类型的实体,分别是编号为 23 和 25 的实体。接着,使用 base.And() 方法对这两个实体进行逻辑 AND 运算,返回一个 bool 类型的结果 status,表示两个实体是否都存在。如果两个实体都存在,则 status 为 True,否则为 False。
另外,这段代码还展示了另一种实现方式,可以直接调用 base.And() 方法的 keyword 和 id 参数来进行 AND 运算,其中 keyword 参数指定实体类型为 MAT1,id 参数指定需要进行 AND 运算的实体编号。这种方式比较简洁,但是需要提前知道需要进行 AND 运算的实体编号。
阅读全文