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

2024-04-26 22:01:13 +08:00
 voidmnwzp

看得有点生理不适了

// 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)
  }
}
10387 次点击
所在节点    程序员
46 条回复
lichao
2024-04-28 14:38:44 +08:00
@SeaTac
1. 这个帖子上的内容就是文档代码,你肯定是看过了才会留言的。
2. 阿里自己当然有权决定用人力维护或是机器维护,但是说到底还是不尊重读文档的人,就像他家 APP 不尊重用户一样
SeaTac
2024-04-28 14:46:56 +08:00
@lichao
怎么说呢 aws azure gcp 大家都是这么干的 无非是有些 API 文档写的细一点有些写的乱一点 具体看相应的组 这跟尊不尊重没关系 实在看不懂开 support ticket 嘛
flyqie
2024-04-28 15:31:18 +08:00
@SeaTac #42

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

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

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

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

这俩差距挺大的,sdk example code 最重要的是清晰,在上面的代码上我完全看不出来清晰,其中有很多奇怪的无意义内容,如果你觉得这种代码是个没有槽点的,那我只能说可能个人要求不一样吧,反正我是接受不了。
Richared
2024-04-28 17:47:58 +08:00
这不是根据 java 代码生成的 go 么,现在黑 java 政治正确?阿里用 java 做的东西不行?还是用其他语言做的东西行了?不太懂,每天不就搬砖么,用什么形状的砖夹子重要么。。。。

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

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

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

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

© 2021 V2EX