又是被写其他语言库的 Java 党搞恶心的一天

18 小时 34 分钟前
 realpg

编程语言: golang

原因, 阿里云 oss sdk 从 v1 升级到 v2 因为 v1 有些问题他们不修了

破防原因:

v1 语法:

client := oss.New("endpoint","accesskey","secretkey")
简洁明了 全世界的人都是这么初始化的...

v2 语法:

var region = "cn-hangzhou"

var endpoint = "oss-cn-hanghzou-internal.aliyuncs.com"

var myProvider := credentials.NewStaticCredentialsProvider("accessKey", "secretkey")

cfg := oss.LoadDefaultConfig().
	WithRegion(region).
    WithEndPoint(endpoint).
    WithUseDualStackEndpoint(true).
	WithCredentialsProvider(myProvider)

client,err := oss.NewClient(&cfg)

希望你们这些 Java 神仙不写 Java 时候干啥都这样

晚上睡觉前先给自己 WithComdom WithSildenafil 一下 再来个 PullProvider, PushProvider, SuckProvider, SleepProvider,

12108 次点击
所在节点    程序员
203 条回复
wxw752
18 小时 32 分钟前
我怀疑他们的 KPI 是按照代码数量计算的
micean
18 小时 31 分钟前
会不会是 java 代码直接转的……
ninja543
18 小时 31 分钟前
现在这个年代还在搞语言歧视,编程语言只不过是 ai 的 if-else 罢了,
renfei
18 小时 31 分钟前
哎,有时候感觉那帮人就是在炫技,各种设计模式,其实不如直接明了的传参
xtreme1
18 小时 29 分钟前
同意 #2, 甚至不基于 parsing 只是单纯文本替换
realpg
18 小时 28 分钟前
@xtreme1 #5
Exception 怎么替换
zzxCNCZ
18 小时 25 分钟前
一行变十行,kpi*10 ,你就说先不先进吧
k9982874
18 小时 25 分钟前
不是,哥们你是多久没更新知识库了,要不你去看看 slog 的实现。。
realpg
18 小时 24 分钟前
@renfei #4

你内部爱怎么设计怎么设计 你暴露给客户的简单接口搞这些没用的干啥
如果你库内非得这么设计我举双手赞同
你给我个 InitClient 方法 然后你内部爱怎么 provider 怎么 provider

我支持你库内部高级工程化 代码高度可控

你要求引用你的库给你传三个参数还得研究你定义的这么多类是定义的 链式关系是怎样的


而且他还有超级复杂的鉴权 因为我只选用了我自己给他鉴权字符串
它是一个库 不是一个项目 这个库内部实现了超级复杂的鉴权读取机制 从环境变量 从文件 从静态

问题是, 你是一个三方调用库啊, 谁家 app 不是自己有配置文件 自己有环境变量 自己有数据库读取配置的东西
这些写好的废物 Provider 压根就没有任何应用场景

你阿里云还能通过什么手段知道各个项目的配置都在哪吗
javaisthebest
18 小时 21 分钟前
假如有一天 v1 里面要新增功能你怎么做?新增字段在 New 里面?

假如这个 sdk 越来越复杂怎么处理? New 里面放七八个字段?
realpg
18 小时 19 分钟前
@k9982874 #8

不知道你说的 slog 是啥

找到了 rust 的一个知名 slog

随便查看了他的 example

初始化并不需要我创建一大堆 provider with 一大堆东西 只需要必要参数

zone10
18 小时 17 分钟前
golang 的惯例应该是这样子

client := oss.New("endpoint","accesskey","secretkey",
oss.WithRegion(region),
oss.WithUseDualStackEndpoint(true),
)

可选参数可以不填
FrankAdler
18 小时 16 分钟前
@javaisthebest 改成 NewClient 传入 cfg 对象我觉得就能满足绝大多数的情况了吧,字段随便加,但是现在的明显复杂多了
realpg
18 小时 16 分钟前
@javaisthebest #10

哪怕到地球毁灭, s3 协议初始化也只需要 ep ak sk 三个字段
如果不是这么稳定的特性 也不可能这么设计 肯定是传一个可变 struct


如果你觉得我吐槽的问题是这个 那只能说你的理解真的逆天
来世投胎一个高低杠吧
realpg
18 小时 14 分钟前
@zone10 #12

endpoint 就覆盖了所有的 with 选项
它的 with 就是为了拼接 endpoint

s3 协议的标准都是只有 endpoint

然后它的 sample 里还是要求你这么写 为了不犯错误 所以我才这么写的 region 双栈 这类的

严格说 你指定了 endpoint 的域名 其他一切都没用了 只是它 sample 这么写 我才这么搞的
ripperdev
18 小时 13 分钟前
@realpg #11 说的是 golang 里的官方库 slog
BeUself
18 小时 9 分钟前
卧槽,你这么一说我还真有感觉,python 的 oss 库也是这个鸟样子,一堆 Provider ,原来是因为 javaer
gadfly3173
18 小时 9 分钟前
很可惜云存储规范的权威 aws 也是类似写法,aws 不改其他人大概也不会改😅
lqm
18 小时 7 分钟前
现在好多 golang 的库都这么写
NessajCN
18 小时 3 分钟前
jvavboy 们会把 PullProvider, PushProvider, SuckProvider, SleepProvider 都定义一遍
然后只用得到 SleepProvider
问他们前面三个你用不到定义它干啥他会说万一以后用到呢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1162789

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX