跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 野路子 Java
未分類
17 5 月 2020

野路子 Java

野路子 Java

資深大佬 : srs1995 18

本人非科班出身 现在在一家公司开发 碰到一段代码 本人可能研究不太透彻 所以 想让大家看看有没有什么问题

代码: https://gist.github.com/liangtengyu/249b3c3142de2e907aaa8f86ac98b47a

大佬有話說 (19)

  • 主 資深大佬 : srs1995

    https://gist.github.com/liangtengyu/249b3c3142de2e907aaa8f86ac98b47a

  • 資深大佬 : b821025551b

    所以问题是什么?

  • 資深大佬 : yesterdaysun

    我感觉没什么问题, 就是一个辅助生成 api 参数的类, 用 treemap 保证参数顺序, 生成签名, 除了代码有稍微点冗余繁琐, 命名有点别扭之外, 就是常规操作

  • 資深大佬 : php01

    我也是野路子,之前看过一段时间 java,没看出啥问题。。。

  • 資深大佬 : guyeu

    你如果看这段代码不顺眼,就重构它直到顺眼呗。。。挂在 v 站找人一起批判么。。

  • 資深大佬 : jerrry

    类名命名不合理,CarRequestPayLoad 更好一点

  • 資深大佬 : siteshen

    代码没什么问题,不过倒是 signature 的算法和一般的不一样。

    一般是这种:
    输入是: {“a”: 123, “c”: 292, “b”: 299}
    签名的字符串是:a=123&b=299&c=292

    很少会要求 JSON 的 key 是「有序」的。这通常意味着要么依赖内置的排序(不同语言的排序方式可能不一样),要么手动对 JSON 的 key 排序(麻烦,某些语言甚至只能用拼接字符串的方式实现所谓的 JSON encode )。

  • 資深大佬 : tt0411

    代码风格比较差, 确实比较野路子

  • 資深大佬 : dallaslu

    就是个排序签名的包装类嘛

  • 資深大佬 : yeqizhang

    代码没贴全……
    只能看出代码不够简洁的样子,不知道那个里面的赋值操作的意义……
    其它没啥问题

  • 資深大佬 : yeqizhang

    还有,他这个应该用了静态变量……线程不安全……
    然后一个工具类方法内部处理直接 return 就完事的东西不知道为什么这么写

  • 資深大佬 : vitoliu

    一个排序能做到的事,手动 new 个 map 再依次声明顺序的 put…感觉是脱裤子放屁

  • 資深大佬 : NeinChn

    @vitoliu
    这个不可避免,最后是作为 output 的 map 往外传递的
    这里面是组装格式,又不仅仅是算个 hmac
    这里不改其他地方也得做。。。
    你代码没看仔细吧

  • 主 資深大佬 : srs1995

    @guyeu 主要是看看有没有线程安全一类的问题

  • 資深大佬 : woscaizi

    public TreeMap getTreeMap(){
    return this.treeMap;
    }

    1. treeMap 没看到定义在哪了。
    2. 如果只是为了传 TreeMap,加入别的内容, 这么写看起来确实不太“好看”。

  • 主 資深大佬 : srs1995

    @woscaizi 调用的位置在这里

    @Override
    public String refund(String plateNum, final String OrderId, Integer amount) throws Exception {
    TreeMap<String, Object> treeMap = new TreeMap<>(); //新建空的 treemap
    treeMap.put(“refundId”, System.currentTimeMillis() + “refund”); //组织参数
    treeMap.put(“plateNumber”, plateNum);//组织参数
    treeMap.put(“refundAmount”, amount);//组织参数
    treeMap.put(“orderId”, OrderId);//组织参数
    RefundInfo carOutRequestInfo = new RefundInfo(treeMap);
    String post = UrlConnectUtil.post( Constant.baseUrl + “/refund/bill”, carOutRequestInfo.getTreeMap());

    if (StringUtils.isNotBlank(post)) {
    xxx
    }

  • 資深大佬 : guyeu

    @srs1995 #14 如果用到的静态方法都是线程安全的,那他这个没有线程安全问题。

  • 資深大佬 : MaxTan

    代码没格式化

  • 資深大佬 : vitoliu

    @NeinChn 不好意思,我没看懂你写的任何一句话,我仔细看了,这方法就是拿几个固定的参数配合请求参数加签生成 token,然后放到参数 map 里面生成 body 。

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具