日常开发-4,代码优化。deepseek和kimi,你喜欢哪个
都很棒,两个都喜欢。我直接用的kimi,哈哈。deepseek也看了下,对齐的,注释写的很好。开发完一个功能,有一段代码,第一次维护平台,想着如何优化下,就问了问AI,看看。两者就是代码风格上,一丢丢区别。
·
1、场景描述
开发完一个功能,有一段代码,第一次维护平台,想着如何优化下,就问了问AI,看看。
@Override
public String getURLWatermark(String key, String word) {
if(StringUtils.isBlank(key)) {
return null;
}
if (key.startsWith("http")) {
return key;
}
Integer minute = 30;
Date expires = new Date(System.currentTimeMillis() + minute * 60 * 1000);
Map<String, String> parameter = new HashMap<>(1);
String today = new SimpleDateFormat("yyyyMMdd").format(new Date());
word = word + today;
String encode = java.util.Base64.getUrlEncoder().withoutPadding().encodeToString(word.getBytes(StandardCharsets.UTF_8));
parameter.put(String.format(watermarkParam, encode), "1");
Boolean sensitive = fileExists(key, true);
CloudBucket bucket = sensitive ? CloudBucket.COS_CHABOSHI_SECURE : CloudBucket.COS_CHABOSHI;
String bucketName = bucket.getBucketName();
Map<String, String> headers = new HashMap<String, String>(1);
URL url = cosClient.generatePresignedUrl(bucketName, key, expires, HttpMethodName.GET, headers, parameter);
String urlStr = url.toString();
return urlStr.replace(ORIGIN_PRIVATE_URL, PRIVATE_URL);
}
2、分别对比
deepseek
@Override
public String getURLWatermark(String key, String word) {
// 1. 参数校验
if (StringUtils.isBlank(key)) {
return null;
}
if (key.startsWith("http")) {
return key;
}
// 2. 设置过期时间(30分钟后)
final int EXPIRE_MINUTES = 30;
Date expires = new Date(System.currentTimeMillis() + EXPIRE_MINUTES * 60 * 1000);
// 3. 生成带日期的水印文字
String today = LocalDate.now().format(DateTimeFormatter.BASIC_ISO_DATE); // yyyyMMdd
String watermarkText = StringUtils.isBlank(word) ? today : word + today;
// 4. Base64 URL编码
String encodedText = Base64.getUrlEncoder()
.withoutPadding()
.encodeToString(watermarkText.getBytes(StandardCharsets.UTF_8));
// 5. 构建水印参数
Map<String, String> parameters = Collections.singletonMap(
String.format(watermarkParam, encodedText),
"1"
);
// 6. 判断是否敏感文件,选择存储桶
boolean isSensitive = fileExists(key, true);
CloudBucket bucket = isSensitive ? CloudBucket.COS_CHABOSHI_SECURE : CloudBucket.COS_CHABOSHI;
// 7. 生成预签名URL
URL presignedUrl = cosClient.generatePresignedUrl(
bucket.getBucketName(),
key,
expires,
HttpMethodName.GET,
Collections.emptyMap(), // headers (空Map更高效)
parameters
);
// 8. 替换URL域名(私有 → 公开)
return presignedUrl.toString().replace(ORIGIN_PRIVATE_URL, PRIVATE_URL);
}
kimi
private static final int EXPIRE_MINUTES = 30;
private static final long EXPIRE_MILLIS = EXPIRE_MINUTES * 60L * 1000L;
private static final Base64.Encoder BASE64_URL_ENCODER =
Base64.getUrlEncoder().withoutPadding();
private static final DateTimeFormatter DATE_FMT = DateTimeFormatter.ofPattern("yyyyMMdd");
private static final ZoneId ZONE_ID = ZoneId.systemDefault();
@Override
public String getURLWatermark(String key, String word) {
if (StringUtils.isBlank(key)) {
return null;
}
if (key.startsWith("http")) {
return key;
}
// 1. 过期时间
Date expires = new Date(System.currentTimeMillis() + EXPIRE_MILLIS);
// 2. 生成水印参数
String today = LocalDate.now(ZONE_ID).format(DATE_FMT);
String watermark = word + today;
String encodedWatermark = BASE64_URL_ENCODER.encodeToString(
watermark.getBytes(StandardCharsets.UTF_8));
Map<String, String> parameters = Collections.singletonMap(
String.format(watermarkParam, encodedWatermark), "1");
// 3. 选择 bucket
CloudBucket bucket = fileExists(key, true)
? CloudBucket.COS_CHABOSHI_SECURE
: CloudBucket.COS_CHABOSHI;
// 4. 生成预签名 URL
URL url = cosClient.generatePresignedUrl(
bucket.getBucketName(), key, expires,
HttpMethodName.GET, Collections.emptyMap(), parameters);
// 5. 替换域名
return url.toString().replace(ORIGIN_PRIVATE_URL, PRIVATE_URL);
}
3、你喜欢哪个
都很棒,两个都喜欢。我直接用的kimi,哈哈。deepseek也看了下,对齐的,注释写的很好。
两者就是代码风格上,一丢丢区别。注释更详细
| 维度 | kimi | deepseek |
| 静态变量 | 提取为公共的 | 未提取 |
| 注释 | 也还可以 | 更加详细 |
| 时间处理 | 已处理 | 已处理 |
| 其他 | 都一样,都很棒 | |
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)