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

31 天前
 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)
  }
}
6519 次点击
所在节点    程序员
46 条回复
povsister
31 天前
头一次见把 go 代码写这么丑的,有一种不伦不类的美
NeoZephyr
31 天前
有谁规定一定要怎么写了嘛
youngce
31 天前
_result,_err 真是天才🤣
NessajCN
31 天前
这段还好啊? 没发现太重的 oop 味儿
没整个 100 层的抽象封装继承算什么 jvav 味儿
yanyao233
31 天前
_err 草
flyqie
31 天前
阿里。。

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

习惯了就好,只能再封装下眼不见为净。。
cbdyzj
31 天前
这个代码感觉是根据 Java 代码自动生成的吧,不像是人类写的
我记得之前看到过阿里云的 Python 的 SDK 是根据 Java SDK 自动生成的
gitrebase
31 天前
@cbdyzj 是的,第一行其实写得很清楚了:auto-generated
me1onsoda
31 天前
不懂就问,哪里有 Java 味
flyqie
31 天前
@cbdyzj #7

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

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

这年头连 sdk 都不打算好好写了吗。。。
flyqie
31 天前
而且,这自动生成出来的还有不少奇怪的内容。

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

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

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

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

再次,如果这段代码是给人看的,就该往死里骂,否则你就不应该打开这段代码
kneo
31 天前
转译出来的代码,第一优先级是正确性,然后是生成后代码的性能。这两者挑不出毛病的话,建议保持安静。不要觉得你比写编译器的人聪明。
1194129822
30 天前
v 站的技术板块已经沦落到这样了吗,你是不是不引战就生理不适?
whoisjohnlee
30 天前
This file is auto-generated, don't judge it. Thanks.
lichao
30 天前
@kneo 文档代码,是给人读的,为什么要用自动生成这种奇奇怪怪的代码,感觉楼主的吐槽完全没毛病
FightPig
30 天前
你去看看腾讯的 tencentcloud-sdk-ruby, 你会发现新世界

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

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

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

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

© 2021 V2EX