阿里的文档代码都有股 Java 味。。 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
voidmnwzp
V2EX    程序员

阿里的文档代码都有股 Java 味。。

  •  
  •   voidmnwzp
    NullpointerW 2024-04-26 22:01:13 +08:00 11006 次点击
    这是一个创建于 579 天前的主题,其中的信息可能已经有所发展或是发生改变。

    看得有点生理不适了

    // This file is auto-generated, don't edit it. Thanks. package main import ( "encoding/json" "strings" "fmt" "os" dyvmsapi20170525 "github.com/alibabacloud-go/dyvmsapi-20170525/v4/client" openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client" util "github.com/alibabacloud-go/tea-utils/v2/service" "github.com/alibabacloud-go/tea/tea" ) /** * 使用 AK&SK 初始化账号 Client * @return Client * @throws Exception */ func CreateClient () (_result *dyvmsapi20170525.Client, _err error) { // 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考。 // 建议使用更安全的 STS 方式,更多鉴权访问方式请参见: https://help.aliyun.com/document_detail/378661.html 。 config := &openapi.Config{ // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID 。 AccessKeyId: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")), // 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET 。 AccessKeySecret: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")), } // Endpoint 请参考 https://api.aliyun.com/product/Dyvmsapi config.Endpoint = tea.String("dyvmsapi.aliyuncs.com") _result = &dyvmsapi20170525.Client{} _result, _err = dyvmsapi20170525.NewClient(config) return _result, _err } func _main (args []*string) (_err error) { client, _err := CreateClient() if _err != nil { return _err } batchRobotSmartCallRequest := &dyvmsapi20170525.BatchRobotSmartCallRequest{ CalledShowNumber: tea.String("your_value"), CorpName: tea.String("your_value"), CalledNumber: tea.String("your_value"), } tryErr := func()(_e error) { defer func() { if r := tea.Recover(recover()); r != nil { _e = r } }() // 复制代码运行请自行打印 API 的返回值 _, _err = client.BatchRobotSmartCallWithOptions(batchRobotSmartCallRequest, &util.RuntimeOptions{}) if _err != nil { return _err } return nil }() if tryErr != nil { var error = &tea.SDKError{} if _t, ok := tryErr.(*tea.SDKError); ok { error = _t } else { error.Message = tea.String(tryErr.Error()) } // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。 // 错误 message fmt.Println(tea.StringValue(error.Message)) // 诊断地址 var data interface{} d := json.NewDecoder(strings.NewReader(tea.StringValue(error.Data))) d.Decode(&data) if m, ok := data.(map[string]interface{}); ok { recommend, _ := m["Recommend"] fmt.Println(recommend) } _, _err = util.AssertAsString(error.Message) if _err != nil { return _err } } return _err } func main() { err := _main(tea.StringSlice(os.Args[1:])) if err != nil { panic(err) } } 
    46 条回复    2024-04-28 17:47:58 +08:00
    povsister
        1
    povsister  
       2024-04-26 22:11:24 +08:00
    头一次见把 go 代码写这么丑的,有一种不伦不类的美
    NeoZephyr
        2
    NeoZephyr  
       2024-04-26 22:14:00 +08:00
    有谁规定一定要怎么写了嘛
    ynkkdev
        3
    ynkkdev  
       2024-04-26 22:15:05 +08:00
    _result,_err 真是天才
    NessajCN
        4
    NessajCN  
       2024-04-26 22:17:50 +08:00
    这段还好啊? 没发现太重的 oop 味儿
    没整个 100 层的抽象封装继承算什么 jvav 味儿
    yanyao233
        5
    yanyao233  
       2024-04-26 22:19:44 +08:00 via Android
    _err 草
    flyqie
        6
    flyqie  
       2024-04-26 23:10:22 +08:00
    阿里。。

    阿里家换语言也是散不去的 java 味道。。

    习惯了就好,只能再封装下眼不见为净。。
    cbdyzj
        7
    cbdyzj  
       2024-04-26 23:13:17 +08:00
    这个代码感觉是根据 Java 代码自动生成的吧,不像是人类写的
    我记得之前看到过阿里云的 Python 的 SDK 是根据 Java SDK 自动生成的
    gitrebase
        8
    gitrebase  
       2024-04-26 23:17:47 +08:00   4
    @cbdyzj 是的,第一行其实写得很清楚了:auto-generated
    me1onsoda
        9
    me1onsoda  
       2024-04-26 23:46:28 +08:00
    不懂就问,哪里有 Java 味
    flyqie
        10
    flyqie  
       2024-04-26 23:47:12 +08:00
    @cbdyzj #7

    那感觉更离谱了,挺好奇阿里这个是怎么生成出来的。

    sdk example code 自动生成基于 java 的其他语言代码?

    这年头连 sdk 都不打算好好写了吗。。。
    flyqie
        11
    flyqie  
       2024-04-27 00:00:56 +08:00
    而且,这自动生成出来的还有不少奇怪的内容。

    `_result = &dyvmsapi20170525.Client{}` 是一个完全没有意义的定义

    `return _result, _err` 都给返回值具名了为啥还要这么返回?

    `if tryErr != nil { ... } return _err` 为啥在这个 if 里还要单独 return 一个_err ?在最后统一 return 不就完事了,反正下面也没有其他操作。
    MIUIOS
        12
    MIUIOS  
       2024-04-27 00:01:30 +08:00
    if tryErr != nil { 这波操作我直接看傻了哈哈哈哈哈
    Honwhy
        13
    Honwhy  
       2024-04-27 00:54:07 +08:00
    这是那个多语言 SDK 吧
    thevita
        14
    thevita  
       2024-04-27 01:26:21 +08:00
    还好吧,,,怎么会有人去抠自动生成的代码 @throws Exception 多明显啊,就是基于 java 生成的,(如果这代码是 文档/demo ,那使劲骂,这点投入都不愿意)

    相比之下 他们的 sdk package 命名是怎么回事, 我看 github.com/alibabacloud-go 这个仓库下的 sdk 都代个日期后缀,是用这个来管理版本吗????
    thevita
        15
    thevita  
       2024-04-27 01:32:17 +08:00
    tryErr 这个 明显是生成自一段 try catch ,基于规则的代码翻译嘛很正常,因为规则都具有局部性,又不是人写代码, “反正下面也没有其他操作”,规则当然是不知道的,可以说这个翻译写得不好,但是写得更好也没有任何收益啊,只要保证逻辑正确就行了

    再次,如果这段代码是给人看的,就该往死里骂,否则你就不应该打开这段代码
    kneo
        16
    kneo  
       2024-04-27 02:07:04 +08:00   3
    转译出来的代码,第一优先级是正确性,然后是生成后代码的性能。这两者挑不出毛病的话,建议保持安静。不要觉得你比写编译器的人聪明。
    1194129822
        17
    1194129822  
       2024-04-27 09:17:13 +08:00   8
    v 站的技术板块已经沦落到这样了吗,你是不是不引战就生理不适?
    whoisjohnlee
        18
    whoisjohnlee  
       2024-04-27 09:17:28 +08:00   1
    This file is auto-generated, don't judge it. Thanks.
    lichao
        19
    lichao  
       2024-04-27 10:38:04 +08:00
    @kneo 文档代码,是给人读的,为什么要用自动生成这种奇奇怪怪的代码,感觉楼主的吐槽完全没毛病
    FightPig
        20
    FightPig  
       2024-04-27 11:29:55 +08:00
    你去看看腾讯的 tencentcloud-sdk-ruby, 你会发现新世界
    iX8NEGGn
        21
    iX8NEGGn  
       2024-04-27 11:43:30 +08:00
    "This file is auto-generated, don't edit it. Thanks.",都已经能自动生成一个能跑的项目了,还奢望什么其他的。
    IvanLi127
        22
    IvanLi127  
       2024-04-27 11:50:38 +08:00
    这种 sdk 真不知道是哪个天才的创意,恶心死我了,有种不伦不类的感觉。
    xiuming142857
        23
    xiuming142857  
       2024-04-27 12:08:16 +08:00
    远离阿里保平安
    xiuming142857
        24
    xiuming142857  
       2024-04-27 12:09:04 +08:00
    杭州卷王,人口不断往杭州涌入,卷不死你们。
    flyqie
        25
    flyqie  
       2024-04-27 12:26:31 +08:00   1
    rb6221
        26
    rb6221  
       2024-04-27 13:02:03 +08:00   1
    你们倒是搞清楚啊,到底是喷阿里还是喷 java ,还是喷 AI 啊。。。
    kanepan19
        27
    kanepan19  
       2024-04-27 13:04:40 +08:00
    喷 java 很有意思?
    securityCoding
        28
    securityCoding  
       2024-04-27 13:38:39 +08:00
    说实话我觉得大多数 open api 换成 protobuf grpc 能省不少事情
    l8L12cwti87t9Kwg
        29
    l8L12cwti87t9Kwg  
       2024-04-27 13:51:14 +08:00 via Android   1
    阿里的东西是真的感觉不论不类,啥品种产品都有,但是不是缺这就是缺那,或者就很难用
    zizon
        30
    zizon  
       2024-04-27 14:23:27 +08:00
    生成结构挺清晰的其实.

    初始化.
    单独 core function
    集中异常处理,甚至看得出框架原型结构可能是上报到个异常收集中心.
    mmdsun
        31
    mmdsun  
       2024-04-27 14:37:47 +08:00
    注释、命名、try 有点像 AI 转化的?
    /**
    * 使用 AK&SK 初始化账号 Client
    * @return Client
    * @throws Exception
    */

    tryErr := func()(_e error) {
    defer func() {
    if r := tea.Recover(recover()); r != nil {
    _e = r
    }
    }()
    // ...
    }()

    CreateClient
    pennai
        32
    pennai  
       2024-04-27 14:53:57 +08:00 via Android
    This file is auto-generated, don't edit it. Thanks.
    自动生成的代码,有啥好看的,要看就看生成模板的代码
    bugu1986
        33
    bugu1986  
       2024-04-27 19:41:26 +08:00 via iPhone
    @cbdyzj 是根据文档 朴灵开发的
    AmericanExpress
        34
    AmericanExpress  
       2024-04-28 08:25:38 +08:00 via iPhone
    楼上这些用户是不是看到阿里和 java 这俩关键字组合就自动触发回复了
    sdk 和文档代码是自动生成的再正常不过 要人手写那大家都别干活了 全去维护 sdk 和文档得了
    lyxxxh2
        35
    lyxxxh2  
       2024-04-28 10:12:04 +08:00
    @SeaTac
    "sdk" "代码文档" 自动生成?
    第一次听说。

    维护个 sdk 和文档,还要全部人?
    啥量级啊?
    hancai2
        36
    hancai2  
       2024-04-28 10:22:35 +08:00
    本来想拿阿里云的监控数据, 看了一眼 go 的 sdk ,太烂了,直接放弃。
    AmericanExpress
        37
    AmericanExpress  
       2024-04-28 12:32:08 +08:00 via iPhone
    @lyxxxh2
    挺正常的
    如果需要添加新的 API 或对已有 API 进行改动的话就改 yaml 文件,里面 path/type/parameter/response 包括每一个 parameter description 都有
    改完给 sdk team review ,sdk 每周自动生成一个 preview 版本,里面包含所有常用语言的 sdk ,这种事情用人力不仅费时费力也 error-prone
    lichao
        38
    lichao  
       2024-04-28 13:37:32 +08:00
    @SeaTac 文档就是给人读的,用机器生成让人看了很费劲的代码,说明根本没有尊重读文档的人;
    lichao
        39
    lichao  
       2024-04-28 13:39:24 +08:00
    难怪阿里系的 APP 那么卡,时间和精力都耗费在这些“高科技”上了
    AmericanExpress
        40
    AmericanExpress  
       2024-04-28 14:22:32 +08:00 via iPhone
    @lichao
    阿里文档我没看过没兴趣 但是自动生成这件事真的很正常
    sdk 动辄支持十几个语言 人力维护不切实际也没有必要 准确第一 可读第二
    lichao
        41
    lichao  
       2024-04-28 14:38:44 +08:00
    @SeaTac
    1. 这个帖子上的内容就是文档代码,你肯定是看过了才会留言的。
    2. 阿里自己当然有权决定用人力维护或是机器维护,但是说到底还是不尊重读文档的人,就像他家 APP 不尊重用户一样
    AmericanExpress
        42
    AmericanExpress  
       2024-04-28 14:46:56 +08:00 via iPhone
    @lichao
    怎么说呢 aws azure gcp 大家都是这么干的 无非是有些 API 文档写的细一点有些写的乱一点 具体看相应的组 这跟尊不尊重没关系 实在看不懂开 support ticket 嘛
    flyqie
        43
    flyqie  
       2024-04-28 15:31:18 +08:00 via Android
    @SeaTac #42

    问题在于 sdk example code ,v1 版本是手写的,v2 是自动生成的效果非常不好的。

    你要说 sdk 内部逻辑随他去,反正能跑就行。

    sdk example code 这种专门给开发者看的东西自动生成效果这么不好就直接发出来似乎 aws azure gcp 也不敢这么干吧?
    AmericanExpress
        44
    AmericanExpress  
       2024-04-28 16:13:43 +08:00
    @flyqie
    我重新看了一遍这个 sample code ,说实话除了那个跟乱码一样的变量名以外我没觉得有什么槽点
    config 需要什么变量,endpoint 是什么,如何创建 client ,如何传参,写的都挺清楚
    当然我不知道按这么写能不能跑 毕竟我没用过阿里云也不知道这个 api 干什么 但我觉得无论如何都算不上“效果这么不好”
    还是那句话,看不懂开 support ticket 呗
    flyqie
        45
    flyqie  
       2024-04-28 16:57:06 +08:00 via Android
    @SeaTac #44

    对比下阿里 v1 跟 v2 的示例代码。

    这俩差距挺大的,sdk example code 最重要的是清晰,在上面的代码上我完全看不出来清晰,其中有很多奇怪的无意义内容,如果你觉得这种代码是个没有槽点的,那我只能说可能个人要求不一样吧,反正我是接受不了。
    Cruzz
        46
    Cruzz  
       2024-04-28 17:47:58 +08:00
    这不是根据 java 代码生成的 go 么,现在黑 java 政治正确?阿里用 java 做的东西不行?还是用其他语言做的东西行了?不太懂,每天不就搬砖么,用什么形状的砖夹子重要么。。。。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     904 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 21:56 PVG 05:56 LAX 13:56 JFK 16:56
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86