code review 把国外的同事气到吐血

15 小时 33 分钟前
 midsolo

国外的同事来国内出差,趁着这个机会,邀请他跟我们一起进行 code review......

公司的代码没办法拿出来,只能临时写个伪代码让大家鉴赏一下:

/**
 * 代码鉴赏:执行 1 个任务
 */
public class JavaTasteSample {

    public static void main(String[] args) {

        // 国外同事:1 行代码就搞定,简洁明了
        // ==(浪费了大量的时间在做过度设计,毫无意义的炫技)==
        new Thread(() -> System.out.println("task1 running...")).start();

        // 国内同事:高内聚低耦合,把具体要执行的任务跟线程进行分离,方便扩展......
        // ==(这老外太 low 了,连设计模式都不懂,估计不会写代码)==
        new Thread(new Task(new TaskInnerSupport())).start();
    }

}

interface TaskInner {

    void execute();

}

abstract class AbstractTaskInner implements TaskInner {

    @Override
    public void execute() {
        runTask();
    }

    abstract void runTask();

}

class TaskInnerSupport extends AbstractTaskInner {

    @Override
    public void runTask() {
        System.out.println("task2 running...");
    }
    
}

class Task implements Runnable {

    private TaskInner inner;

    public Task(TaskInner taskInner) {
        inner = taskInner;
    }

    @Override
    public void run() {
        inner.execute();
    }

}
8166 次点击
所在节点    程序员
84 条回复
mb4555
15 小时 30 分钟前
单看着一行代码 支持老外 你这个封装有没有在其他地方用到 用到了 另说
mb4555
15 小时 29 分钟前
@mb4555 也看你们的使用场景
midsolo
15 小时 29 分钟前
@mb4555 #1 没有用到,就是为了以后好扩展
erlking
15 小时 27 分钟前
支持老外
spike0100
15 小时 26 分钟前
我发现工作中至少 40%以上的预计扩展逻辑以后都不会用到。
lvtuyukuai
15 小时 25 分钟前
可以扩展的时候改写成第二种,每次新加功能重构已有代码方便扩展
visper
15 小时 25 分钟前
有时候,我更愿意去看一下写得很原始很差的复制多个地方的代码。而不是封装得十多差怎么也理不清关系的代码。虽然说为了扩展性。但是好像十年过去了也没有什么扩展。
LoNeZ
15 小时 25 分钟前
看场景..和重要程度...
sneezry
15 小时 24 分钟前
按照我们公司之前的 review 风格,会支持国内同事的设计。现在一直在强调开发速度和营业额,没人在乎设计模式。
ohoh
15 小时 24 分钟前
为什么是国外的气到吐血了,国内的就不?这意思你已经明显站队了啊。

防御/预防式开发没啥问题啊,只是度有多大的问题。
xubeiyou
15 小时 22 分钟前
现在都讲究迭代速度和健壮性 不会在看设计模式了 除非真的有必要
askfilm
15 小时 21 分钟前
反正双标呗....
midsolo
15 小时 20 分钟前
@spike0100 现在都是 流水式的员工 跟 快餐式的代码,绝大多数扩展逻辑都不会用到,如果换不同的人来接手,估计不会用上个人留下的扩展,会自己写一套
NO9527
15 小时 18 分钟前
我支持老外的,等这种设计模式狂魔的代码到你手里就老实了
midsolo
15 小时 18 分钟前
@ohoh 我同意老外的看法,我觉得前期没有必要做过度设计,需求一下来就建十几个类,接口抽象类搞个几层,再套设计模式,完全没必要啊
stinkytofux
15 小时 17 分钟前
支持老外, 这种预留的拓展没必要, 需要的时候再把代码抽出来就是了.
winglight2016
15 小时 16 分钟前
java 代码就习以为常,见怪不怪,看看 spring 的代码就明白了,恨不得你一行代码都不写,全部搞成无代码平台
MrPat
15 小时 15 分钟前
支持老外,過度設計了,為了設計而設計,等你需要用到這個預留,可能你的代碼已經要重構了,
96
15 小时 13 分钟前
Java 开发魅力时刻
chenluo0429
15 小时 13 分钟前
设计时预留实现扩展的可能性,不要堵死扩展的路就好。
千万不要真的实现扩展,除非你真的知道这里短时间内需要扩展以及扩展的明确方向。

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

https://ex.noerr.eu.org/t/1170635

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

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

© 2021 V2EX