• 请不要在回答技术问题时复制粘贴 AI 生成的内容
szpinc1102
V2EX  ›  程序员

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

  •  
  •   szpinc1102 · Sep 4, 2024 · 34101 views
    This topic created in 792 days ago, the information mentioned may be changed or developed.

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

    image.png

    227 replies  •  2024-09-06 14:59:53 +08:00
    1  2  3  
    ❮ ❯
    levelworm
    levelworm
    Sep 4, 2024
    1
    这大概就是不停的粘贴复制造成的吧,懒得重构了?
    TsubasaHanekaw
    TsubasaHanekaw
    Sep 4, 2024❤️20
    2
    导入导出 excel 表格真是最屎的活
    szpinc1102
    szpinc1102
    OP
    Sep 4, 2024
    3
    @levelworm 这是新写的代码,新代码都能写成这样
    robinchina
    robinchina
    Sep 4, 2024❤️1
    4
    能用就行
    szpinc1102
    szpinc1102
    OP
    Sep 4, 2024
    5
    @TsubasaHanekaw 但是也不能写成这样吧
    zizon
    zizon
    Sep 4, 2024❤️14
    6
    你看中间凸出的 应用服务器 等几个你就知道这种写法的某种形式的干净存粹了.
    jiabing520a
    jiabing520a
    Sep 4, 2024❤️2
    7
    就说是不是一目了然吧,(●'◡'●)
    jorneyr
    jorneyr
    Sep 4, 2024❤️1
    8
    你就说这是不是执行效率最高的实现吧!!!
    moudy
    moudy
    Sep 4, 2024 via iPhone
    9
    @szpinc1102 有可能是脚本生成的
    moudy
    moudy
    Sep 4, 2024 via iPhone
    10
    @jorneyr 这堆 equal 走下来显然不是啊
    fruitmonster
    fruitmonster
    Sep 4, 2024
    11
    所以最合理的方式是使用 map? 还是怎么
    tool2dx
    tool2dx
    Sep 4, 2024❤️1
    12
    90%的业务代码又没性能需求,我都是随便写的,怎么好维护,就怎么来。
    lervard358
    lervard358
    Sep 4, 2024
    13
    好奇 正确的写法是啥 弄个 table ,提前把映射关系弄好吗
    puzzle9
    puzzle9
    Sep 4, 2024
    14
    能用 直观
    虽然看起来不优雅
    不过 你给对方发工资吗
    不发的话 那管啥子
    greensea
    greensea
    Sep 4, 2024
    15
    说不定是 copilot 写的呢,反正 tab 一下就都出来了,毫不费力
    bug123
    bug123
    Sep 4, 2024❤️4
    16
    好奇有更好的写法吗
    AlexRoot
    AlexRoot
    Sep 4, 2024
    17
    想知道这个长截图是如何实现的?
    laoyur
    laoyur
    Sep 4, 2024
    18
    CA IP 表示看不到图
    smdbh
    smdbh
    Sep 4, 2024
    19
    其实也没啥不好
    laoyur
    laoyur
    Sep 4, 2024
    20
    额,发完上面的回复突然又能看到了 😅
    如果确实需要通过字符串比较,那这样写好像也没毛病啊,至少很清晰
    可能大部分执行的都是同样的一句代码,显得比较啰嗦,可以把条件合并起来
    ConquerZ
    ConquerZ
    Sep 4, 2024
    21
    你们都能看到图吗
    bgm004
    bgm004
    Sep 4, 2024 via Android❤️1
    22
    还行,我手上一个项目一个 vue 页面 6000 多行,一个 echart 图表依赖 2 个 json ,文件合计 20 几 k😢
    woodwhales
    woodwhales
    Sep 4, 2024
    23
    这段代码,从语法结构上看是 Java 。可以推测这段代码在导出 excel 文件并设置满足条件的指定列进行隐藏。如果是我重构,我能想到的是去除多重 if else ,用 map 集合先保存每个条件,然后一个循环遍历 map 中是否存在满足条件。伪代码如下:

    ```java

    // 业务逻辑外部定义
    static Map<String, Function<ExportColumn>> map = new HashMap<>();

    static {
    map.put("服务器名称", data -> !data.getAppServer().isServerName());
    }


    // 业务逻辑内

    if(map.containsKey(cell.getStringValue())) {
    boolean flag = map.get(cell.getStringValue()).apply(dto.getExportColumn());
    sheet.setColumnHidden(index, flag);
    }

    ```
    ooxx2123
    ooxx2123
    Sep 4, 2024
    24
    要我重构的话,也是 23L 的思路,好奇大家有什么其他方式吗?
    或者保留原样,我感觉也还好,就是看起来不太简洁。
    potatowish
    potatowish
    Sep 4, 2024 via iPhone
    25
    excel 导入导出是初级 java 必备技能,怎么把很容易写成💩的代码写的优雅这就是中级 java 的技能了
    adimn
    adimn
    Sep 4, 2024
    26
    用反射, 另外 model 上一般也有注解 ApiModelProtery
    user1284
    user1284
    Sep 4, 2024
    27
    丑陋的 equal
    ice
    ice
    Sep 4, 2024
    28
    挺好,我想不到重构的方法,而且也没想到最后生成的 Excel 是个多复杂的玩意
    loocao
    loocao
    Sep 4, 2024
    29
    清晰明了,简单又方便维护
    adminii
    adminii
    Sep 4, 2024 via iPhone
    30
    项目组代码量考核,第一了
    awalkingman
    awalkingman
    Sep 4, 2024
    31
    @yul36074 第一次加载需要挺长时间
    chenyu8674
    chenyu8674
    Sep 4, 2024❤️2
    32
    虽然不优雅,但好处是随便换个开发都能懂

    离真正的屎山差远了
    jackOff
    jackOff
    Sep 4, 2024
    33
    整个枚举类,初始化时把枚举类灌入一个 map 里面
    0xcode
    0xcode
    Sep 4, 2024
    34
    这代码写的很优雅啊,谁上手看一眼都能维护的来。
    justfindu
    justfindu
    Sep 4, 2024❤️36
    35
    先不要吐槽, 先改一版你觉得好的. 一起放出来
    luohaiyang
    luohaiyang
    Sep 4, 2024
    36
    又不是不能用,狗头
    angenin
    angenin
    Sep 4, 2024
    37
    @adminii 这个方法写完,当天代码行数的任务量直接完成🤣
    junwind
    junwind
    Sep 4, 2024
    38
    这种千万千万不要想着重构,能跑就行。
    enihcam
    enihcam
    Sep 4, 2024
    39
    这不是代码问题,这是管理问题。
    enihcam
    enihcam
    Sep 4, 2024❤️1
    40
    如果老板是“能用就行”的心态,这个团队长不了。
    meeop
    meeop
    Sep 4, 2024
    41
    我觉得写得挺好的,逻辑简洁清晰易于维护


    如果觉得这都不好,你手动封装成其他逻辑,出了 bug 你背锅就行
    如果不敢这么做,这也是上一个人不这么做的原因
    toan
    toan
    Sep 4, 2024
    42
    挺好,要逻辑有逻辑,要代码量有代码量,还能正常运行 👍
    sivl6p
    sivl6p
    Sep 4, 2024❤️2
    43
    我对这段代码的评价是:满意
    byc4i
    byc4i
    Sep 4, 2024
    44
    看到等保测评,不知道是不是某地网安部门的外包。你这个属于泄露源码了。
    yhxx
    yhxx
    Sep 4, 2024
    45
    曾经我也觉得看不下去
    现在我也这么写
    清晰易懂,更重要的是代码量拉满了
    lisxour
    lisxour
    Sep 4, 2024
    46
    最起码一目了然,你就该偷笑了
    barrysj
    barrysj
    Sep 4, 2024
    47
    全量 map 还是省不了的吧,顶多把 set true 那行抽出来
    WaldenHorizon
    WaldenHorizon
    Sep 4, 2024
    48
    不考虑反射吗,真的一行行硬写
    QXDM
    QXDM
    Sep 4, 2024
    49
    fresco
    fresco
    Sep 4, 2024
    50
    好奇有更好的写法吗
    hekunhotmail
    hekunhotmail
    Sep 4, 2024
    51
    gpt 一键重构
    RobertWu
    RobertWu
    Sep 4, 2024 via Android
    52
    真诚发问,反射要怎么写?
    janda
    janda
    Sep 4, 2024
    53
    代码和人有一个能跑就行
    opengps
    opengps
    Sep 4, 2024
    54
    我问下更好的写法是啥?我有过类似的经历,因为具体字段完全是现场要求的,没法提前知道,所以做成了一个批量赋值的模式,别看内容多,其实只是几下纵向复制粘贴就能出来这么多代码
    NEPv5NA6R8R3Y11u
    NEPv5NA6R8R3Y11u
    Sep 4, 2024
    55
    daybreakfangyang
    daybreakfangyang
    Sep 4, 2024
    56
    看着头大🤦‍♂️,空指针警告
    wyx119911
    wyx119911
    Sep 4, 2024
    57
    其实还不错的,很清晰。如果是我的话会改成用 switch case 优化下分支判断的性能,但大体结构保持。
    ShaoLongFei
    ShaoLongFei
    Sep 4, 2024❤️3
    58
    @QXDM 我觉得这种代码明显更糟糕
    teenight
    teenight
    Sep 4, 2024
    59
    你行你上
    panlatent
    panlatent
    Sep 4, 2024❤️2
    60
    改 if-else 到 switch :

    title = cell.getStringCellValue()
    switch (title) {
    case "xxxx":
    break;
    }

    这样可以确保每列处理方法集中在一个 case 。

    对于最多的检查+隐藏操作,可以封装为一个函数来改进 if 结构:
    hiddenColumnIfNot(dto.getExpartColumn().getAppProject().isProjectYea())

    dto.getExpartColumn() 输入起来费劲可改成一个中间变量
    plasticman64
    plasticman64
    Sep 4, 2024
    61
    说不定他的工资很低呢,收多少钱干什么活呗
    ZGame
    ZGame
    Sep 4, 2024
    62
    @Track13 解耦阿 1. widget/chart/echart-wrapper 2. data/json
    gollwang
    gollwang
    Sep 4, 2024
    63
    没人注意到这些关键词吗?
    密码评测、等保、国产化
    Mandelo
    Mandelo
    Sep 4, 2024
    64
    我们用的是自定义注解+导出工具类,类似 easy-excel
    CodeCodeStudy
    CodeCodeStudy
    Sep 4, 2024
    65
    代码很直观啊,换个人都懂
    user1284
    user1284
    Sep 4, 2024
    66
    @QXDM py 里面字符串不转成枚举吗, 不然未来改字符串改得你头痛, 还不报错
    lucasdev
    lucasdev
    Sep 4, 2024
    67
    很常见的场景,个人觉得比较“优雅”的做法是,在实体类字段上面加注解,然后通过反射来做
    x86
    x86
    Sep 4, 2024
    68
    别的不说,接盘的人应该庆幸了,你见过 IDE 右边红的跟牛市一样的代码吗
    NoOneNoBody
    NoOneNoBody
    Sep 4, 2024
    69
    10 个以内判断我还可以写,10 个以上我就想用状态机了
    qiaobeier
    qiaobeier
    Sep 4, 2024
    70
    不是挺工整的吗,有什么问题?
    nb85144
    nb85144
    Sep 4, 2024
    71
    能用就行了,反正最后都得变成屎山
    shidapi
    shidapi
    Sep 4, 2024
    72
    读起来很易懂
    Smilencer
    Smilencer
    Sep 4, 2024 via iPhone❤️17
    73
    挺好的,应该是高手写的。
    随时应对产品经理提出的改动需求,你看有些字段确实需要特殊处理,简单迅速明了。
    你吭哧吭哧搞个封装啥的,改的时候有的你苦恼的!
    justdoit123
    justdoit123
    Sep 4, 2024
    74
    需求太多变的场景下,73# 的说法挺适用的。
    Greendays
    Greendays
    Sep 4, 2024
    75
    看代码都能想象出来 Excel 有多复杂了。这种写法可能真不算差的。
    zhangdawei
    zhangdawei
    Sep 4, 2024
    76
    这样好理解
    asdfasasdf
    asdfasasdf
    Sep 4, 2024
    77
    我觉得挺好的一目了然,后期功能应该也挺容易修改,要是把这个再封装在一个模块那就更完美了
    pkoukk
    pkoukk
    Sep 4, 2024
    78
    每一行的检查都有略有区别,我觉得没多大问题
    QXDM
    QXDM
    Sep 4, 2024
    79
    @yb2313 #66 没有 enumerate 这都是小事,更恐怖的是所有 write_rows 既没抽象也没做任何映射,光逻辑就快到 7 层,拉了 800 多行
    xcsoft
    xcsoft
    Sep 4, 2024
    80
    < 能跑就行了 > 真的
    itechify
    itechify
    Sep 4, 2024
    81
    又不是不能用.jpg
    pecsj
    pecsj
    Sep 4, 2024
    82
    分支不多就还好,优雅不优雅另说
    cvooc
    cvooc
    Sep 4, 2024
    83
    看起来是 excel 和 dto 之间缺失了对应关系, 一边可能是甲方提供的 excel 和 项目已有的对象, 这个明显是复制粘贴出来的, 我一眼看到 应用名称 的 case 出现了两次, 感觉用 map 的确会好很多, 这里绝大多数操作都是一样的
    alexsz
    alexsz
    Sep 4, 2024
    84
    整洁壮观,非常好懂,没毛病,真的
    shylockhg
    shylockhg
    Sep 4, 2024
    85
    @moudy 一般来说编译器应该把这种优化成查表
    bgm004
    bgm004
    Sep 4, 2024
    86
    @ZGame 解不动,2 个 json 快 30kb 了,一个文件 6000 多行没有几行注释。echart 的配置就靠这 2 个 json 各种循环遍历,还有一堆本地数据映射。json 里全是各种金融行业术语缩写。
    woniuppp
    woniuppp
    Sep 4, 2024
    87
    按行数定 kpi
    nightlight9
    nightlight9
    Sep 4, 2024
    88
    @opengps 如果是我,我选择用 excel 模板写,更直观一点
    Felldeadbird
    Felldeadbird
    Sep 4, 2024
    89
    能跑就行了。
    这业务代码基本是这样的:

    老板:小明,我想要个 ABCDEFG 的导出。你去实现一下。
    小明:好的老板。 老板我已经完成了。(老板应该不常用,直接硬编码导出)
    若干天后。
    老板:小明,GHJIT 列加一下。
    小明:加完了老板(擦,半年后回来,告诉我调整这个导出,弱智老板)

    如此反复。
    xuanbg
    xuanbg
    Sep 4, 2024
    90
    我导入导出都是搞个实体类,字段加注解就完了,像这种需求也一样用注解搞定。反正注解这玩意可以很多,一个搞不定就再来几个。哈哈哈
    z67nnciQnb7r8bLf
    z67nnciQnb7r8bLf
    Sep 4, 2024
    91
    如果只是某个特定业务,这么写也无可厚非,如果考虑复用的话,建议优化一下
    xloger
    xloger
    Sep 4, 2024❤️7
    92
    就这还一堆人说好?这一排下来谁知道哪里有没有哪里有特殊逻辑,哪里直观了?
    很明显,改法就是把这里的类型名和判断函数抽出来,弄个 Map 或者类似的合适的数据结构。然后特殊逻辑也拎一块,这才叫直观才叫一目了然好么?
    一大堆 if else 里藏几个特殊逻辑,也好意思管这叫好代码?
    git00ll
    git00ll
    Sep 4, 2024
    93
    我觉得没啥问题,导出功能而已比较边缘的能力不需要过度设计。 而且他还写了注释,看起来一目了然,如果要改这里任何人都能马上上手
    onichandame
    onichandame
    Sep 4, 2024
    94
    挺直观的
    liquid207
    liquid207
    Sep 4, 2024
    95
    添加一个 cell name 和 dto column 的映射,可以解决大部分的重复代码。添加一个匿名函数处理 “应用服务器” 之类有特殊逻辑的 cell 就可以了。
    freemoon
    freemoon
    Sep 4, 2024
    96
    大道至简,楼主还得再看看,不要只从技术角度看现象。
    28Sv0ngQfIE7Yloe
    28Sv0ngQfIE7Yloe
    Sep 4, 2024
    97
    wusheng0
    wusheng0
    Sep 4, 2024
    98
    说优雅的,说得我都怀疑自己了。

    哪怕你按照类型分开来组织呢

    唉
    kristofer
    kristofer
    Sep 4, 2024
    99
    @xloger #92 这论坛里大神有,水货更多,放松心态。有的人本来就不是真心干这一行的,指望他们能有什么代码情怀。
    wusheng0
    wusheng0
    Sep 4, 2024❤️8
    100
    @wusheng0 一说 35 就是失业,一说代码就是能跑就行。我是不想遇到这种同事。写得菜真的无所谓,对代码一点追求没有才是最痛苦的。除非你拉的屎永远不会让别人擦屁股
    1  2  3  
    ❮ ❯
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4574 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 419ms · UTC 09:36 · PVG 17:36 · LAX 01:36 · JFK 04:36
    ♥ Do have faith in what you're doing.