V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
szpinc1102
V2EX  ›  程序员

网上看到的段子照进了现实,这种代码出现在我的项目中!

  •  
  •   szpinc1102 · 2024-09-04 11:46:59 +08:00 · 28905 次点击
    这是一个创建于 378 天前的主题,其中的信息可能已经有所发展或是发生改变。

    给大家观摩一下,给我看傻了

    image.png

    227 条回复    2024-09-06 14:59:53 +08:00
    1  2  3  
    dddd1919
        201
    dddd1919  
       2024-09-05 14:27:04 +08:00
    真正诠释了什么叫“代码即注释”
    wysnxzm
        202
    wysnxzm  
       2024-09-05 14:29:54 +08:00
    @juzisang #107 一看就是被产品的需求狠狠拷打过😂
    dwlovelife
        203
    dwlovelife  
       2024-09-05 14:53:47 +08:00
    新增一个注解然后标在属性上,注解里是文案,然后用反射我估摸不超过 20 行,而且后面只需要加属性字段和注解就行
    yippees
        204
    yippees  
       2024-09-05 15:00:42 +08:00
    excel 表头不是固定顺序吗。。我可能就是最后 getAllIs ()返回一个 bool list 。就是里面要把 isXXX 排序下
    然后循环 setColumnHidden
    cslive
        205
    cslive  
       2024-09-05 15:07:42 +08:00
    唯一有风险的就算空指针问题,其它没啥问题,还方便后续更改
    IdJoel
        206
    IdJoel  
       2024-09-05 15:17:02 +08:00
    对大部分人的工作水平产生了怀疑,这东西不优化还有人说好? 这玩意一旦有要求改字段加字段有多麻烦?
    这个要是我用 PHP 实现,我先吧每个字段 和 取值的方法搞到一个数组里面,然后单独写个 tansformer 处理下要处理的数据
    以后加字段,改字段直接修改 array 就行了。

    就这代码还有人说好,我真服了
    chenqh
        207
    chenqh  
       2024-09-05 15:19:32 +08:00
    @IdJoel 你这个样子每个字段,都有对应的方法,那所有的方法不就满天飞了?和这个有区别吗?
    tmplinshi
        208
    tmplinshi  
       2024-09-05 15:32:28 +08:00
    cell.getStringCellValue() 需要执行一大段代码才返回结果,明明调用一次就够了,截图中几十上百次的重复调用,为什么很多人不觉得有问题?

    https://github.com/trlogic-developer/birlikteal/blob/2064c2c270907d9589d0052af9e4d28fff8ad3c1/crowdfunding-web/src/main/java/org/apache/poi/xssf/usermodel/XSSFCell.java#L350-L403
    suofeiya
        209
    suofeiya  
       2024-09-05 15:55:28 +08:00
    这段代码折叠起来,眼不见心不烦.
    dbing
        210
    dbing  
       2024-09-05 16:05:02 +08:00
    if 不 if 的先不说,主要问题不该是有空概率的变量.equals(字符串常量)吗?不担心空指针?
    jiangzm
        211
    jiangzm  
       2024-09-05 16:15:49 +08:00
    好的问题来了, 该功能有个改动安排你来负责, 那你是继续按原来的方式改动呢,还是花时间重构呢?

    如果你随波逐流那你何尝不是屎山代码的贡献者呢?

    如果花时间重构,那你的问题在团队中提出来才有意思。

    屎山代码肯定不是从第一行代码就是屎, 就是因为有太多不断的添屎的人才有了高高的屎山。
    jiangzm
        212
    jiangzm  
       2024-09-05 16:17:24 +08:00
    #211 错别字: 有意思 => 有意义
    esile
        213
    esile  
       2024-09-05 16:59:23 +08:00 via Android
    写的很好 一目了然
    jayneyang
        214
    jayneyang  
       2024-09-05 17:05:21 +08:00
    如果是我,直接扔给前端做 excel 导出的功能
    NCE
        215
    NCE  
       2024-09-05 17:11:10 +08:00
    you can you up, no can no BB.

    这代码可读性,可维护性都是最好的。面对不可知的需求变化,要做到简单可维护,而不是优雅,这里不需要复杂的算法。
    tool2dx
        216
    tool2dx  
       2024-09-05 17:39:28 +08:00
    @IdJoel 你别光看前面的字符串比较,看后面的 dto 映射函数,基本上都不带重复的。
    iceheart
        217
    iceheart  
       2024-09-05 21:34:35 +08:00 via Android
    直观的代码就是好代码。不直观,封装的越多就越容易藏污纳垢,隐藏错误。
    realpg
        218
    realpg  
    PRO
       2024-09-05 21:38:54 +08:00
    @szpinc1102 #3
    我最近也写了这种代码 而且不少
    主要是这种代码写的很快 也不需要复制粘贴
    因为是 copilot 替我从列表补全的 提供范式 ai tab 一秒写完
    除了罗嗦点没啥缺点 而且看起来清晰
    cndenis
        219
    cndenis  
       2024-09-05 21:47:56 +08:00
    这代码非常好啊, 清晰明了, 可读性高, 容易维护.

    业务的复杂性是不可能消除的, 能消除的只有实现的额外的复杂性.

    这段代码没有引入额外复杂性和理解成本, 可以说是最佳实践了.
    kiddyu
        220
    kiddyu  
       2024-09-05 23:26:46 +08:00
    仅就图中的代码来说,这样写如何?

    switch (true) {
    // 大部分
    case equals("应用 ID") && !dto.xxxxx:
    case equals("应用名称") && !dto.xxxxx:
    case equals("应用编码") && !dto.xxxxx:
    case ...:
    sheet.setXXXXXX();
    break;
    // 需要特殊处理的
    case equals("应用服务器"):
    xxxxxxx;
    break;
    case equals("安全评测信息"):
    xxxxxxx;
    break;
    }
    vialon17
        221
    vialon17  
       2024-09-06 09:08:05 +08:00
    个人更喜欢直接用 map 做一个映射,然后直接丢进去,
    match case 分支太多感觉也挺麻烦的。
    ruobingm
        222
    ruobingm  
       2024-09-06 09:18:39 +08:00
    你就说清晰不清晰?其实这里 很明显没什么性能要求。其次 也清晰明了,第三,你就说维护是不是很直接。要动那个,直接改那行,完事 。
    Desdemor
        223
    Desdemor  
       2024-09-06 10:05:33 +08:00
    导入导出很通用的方法,抽象出来,根据反射写一个 应该不难吧,写着不累看着都累
    prosgtsr
        224
    prosgtsr  
       2024-09-06 10:44:26 +08:00
    能降低心智负担同时还满足了需求的代码就是好代码,如果是抽到一个专干脏活的类里不影响查看业务逻辑的话就更好了
    ruanimal
        225
    ruanimal  
       2024-09-06 12:46:13 +08:00
    这种问题一般是怪写第 2 到第 n 个 if 的人
    mightybruce
        226
    mightybruce  
       2024-09-06 14:47:47 +08:00
    @Leviathann #105
    你连代码都不会写就开始瞎说的水平真强, xloger 填了一个 python 代码,被你说成是 go 代码
    uds9u32br
        227
    uds9u32br  
       2024-09-06 14:59:53 +08:00
    其实还行,无数个 if else 不是问题,如果里面多嵌套几层 if else 就头大了。
    1  2  3  
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   935 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 20:18 · PVG 04:18 · LAX 13:18 · JFK 16:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.