V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
kensoz
V2EX  ›  程序员

上司不允许使用 es6 新特性理由是他看不懂

  •  3
     
  •   kensoz · 178 天前 · 23481 次点击
    这是一个创建于 178 天前的主题,其中的信息可能已经有所发展或是发生改变。

    请问是我道行不够还是上司跟不上潮流?

    入职不久的前端开发,最近参与一个模块的调整作业,模块本身多人接手过所以 es5 es6 都有。 用 es6 的 filter 方法处理了几个 api 接收的数据, 完后 codereview,上司说不行非让我用 for 循环写,理由如下

    1.他看不懂,原因是他虽然也懂前端但是主要负责后端,原话:java 里没有 filter 2.他看不懂就没法排错,万一写错他不知道哪错了 3.新特性不够稳定,兼容性有问题,显然他不懂 bable 4.万一我休息遇到 bug,for 他会改 5.for 也罢 filter 也罢最后都能用,为什么不用大家都懂的

    虽然我给他普及了相关知识,可还是被无情拒绝。 当时我是很生气的,这明明就是 js 基础了,2021 年还有这种人? 不过事后一想,上司的做法不能说全错,毕竟他是要对项目负责的,稳是第一位。

    公司还行,但是没有干长的打算 如此别说是参与内卷了,不仅啥都学不到,技术退步肯定是必然的。 请问各位遇到这种事情会怎么办?

    308 条回复    2021-06-16 23:56:44 +08:00
    1  2  3  4  
    ericls
        1
    ericls   178 天前 via iPhone
    开源项目的 lead 都比这个专业
    xiadd
        2
    xiadd   178 天前   ❤️ 20
    filter 是 es5 的数组方法
    cominghome
        3
    cominghome   178 天前   ❤️ 3
    听他的,然后准备跑路
    ericls
        4
    ericls   178 天前 via iPhone
    老板想做什么都可以 但是你得考虑自己发展和公司的发展能不能契合
    murmur
        5
    murmur   178 天前   ❤️ 6
    听上司的,我也赞同,js 那么多库可以替代 es6 的语法,甚至有的库跑的比 es6 标准都快,为啥非得用 es6
    还有谁跟你说 es6 是 js 基础的
    des
        6
    des   178 天前 via iPhone
    那就本地留一份,转译玩再提交(
    murmur
        7
    murmur   178 天前   ❤️ 33
    前端就是这样,浮躁,功能生态不考虑,语法这个必须得拉满,你看写 java 的什么时候纠结语法了,因为 java 早就超越了造轮子的年代,别人是开箱即用的立体化停车场

    你写个语句,语法拉满,觉得很牛逼,别人一个 import 一个停车场起来了
    ccde8259
        8
    ccde8259   178 天前 via iPhone   ❤️ 2
    Stream API 里有 filter……
    play78
        9
    play78   178 天前
    小项目你可以为所欲为,es2021 都可以。 如果是大型项目,那领导说的对。他要对项目负责。
    你也可以说是老古董,你知道很多公司的核心项目,还在用 jdk6,7,8
    其实 filter 这个在 jdk 高版本是已经有了。还是很少用。
    zjsxwc
        10
    zjsxwc   178 天前
    我不信 java 没有,
    java 有甚至很丰富,看看 java 的相应式编程中 Reactive Streams
    cxzweb
        11
    cxzweb   178 天前   ❤️ 56
    @murmur ? 活在上个世纪吗
    suzic
        12
    suzic   178 天前 via Android
    filter 是 es5
    christin
        13
    christin   178 天前 via iPhone
    百度不让他用吗
    ynohoahc
        14
    ynohoahc   178 天前
    抖个机灵~~楼主对 es6 掌握得也不深呀
    Cbdy
        15
    Cbdy   178 天前 via Android
    不跑路留着过国庆节?
    wenjun19931112
        16
    wenjun19931112   178 天前   ❤️ 26
    就凭他说“java 里没有 filter”,可以断定他后端也不怎么样
    tairan2006
        17
    tairan2006   178 天前
    你上司为啥是个后端啊……

    java stream 里面显然有 filter 啊
    qwerthhusn
        18
    qwerthhusn   178 天前
    List.of(1, 2, 3).stream().filter(i -> i & 1 == 0).collect(Collectors.toList());
    Mutoo
        19
    Mutoo   178 天前
    赶紧跑
    ericls
        20
    ericls   178 天前 via iPhone
    @murmur 这题跟前端关系不大 跟老板专不专业关系很大
    touchwithe
        21
    touchwithe   178 天前 via iPhone   ❤️ 1
    在前前司的时候,本来就干的不爽,上司还指着我 py 代码中的关键词参数问:为什么总指针的指针? 我当场黑人问号,不到一周就溜了。这种地方早点离开。
    ChefIsAwesome
        22
    ChefIsAwesome   178 天前
    filter 你应该当作是递归,跟 for 压根不是一回事。特别是你写前端,后面会越来越倾向函数式编程,不应该去用 for 的。
    Shook
        23
    Shook   178 天前
    既然你上司是个后端,你也不能要求人家经常更新前端知识了。
    66beta
        24
    66beta   178 天前   ❤️ 2
    为什么让一个外行来 review ?如果公司小人手不够,那就别 review 了。

    但重点还是这个人情商太低,不适合做领导
    finian
        25
    finian   178 天前   ❤️ 2
    学个 filter 需要一分钟不?这都不让用,只能说明在技术上没有追求,其他什么理由都是扯淡。
    Leonard
        26
    Leonard   178 天前
    上司是后端不熟悉前端为啥给前端排错?
    blessyou
        27
    blessyou   178 天前 via Android
    真不错 一看就是老前端开发了
    siweipancc
        28
    siweipancc   178 天前 via iPhone
    上个世纪的后端水平,现在都标配 filter 了。(你们招会 rxjs redux 的异类后端吗)
    murmur
        29
    murmur   178 天前
    @ericls 老板只限制了你的语法,他又没不允许你用 mvvm 框架吧?要是连 mvvm 都不允许用那赶紧走
    Leviathann
        30
    Leviathann   178 天前 via iPhone
    很难想象 Java 不让我写 stream 会是什么样
    那代码得膨胀多少
    jonathanchoo
        31
    jonathanchoo   178 天前
    从老板角度来说,你可以随时拍拍屁股走人,留下的代码怎么办,可以让你现在改成 debug 成本低的方式我觉得没毛病。

    但是从程序员的角度来说,在场景中没有人支持你尝试新特性,对自身成长的确难以接受。
    play78
        32
    play78   178 天前
    ---
    List.of(1, 2, 3).stream().filter(i -> i & 1 == 0).collect(Collectors.toList());
    ---
    List<Integer> list = Arrays.asList(1, 2, 3);
    List<Integer> ids = new ArrayList<>();
    for(int i=0; i<list.size(); i++) {
    if((list.get(i) & 1) == 0) {
    ids.add(list.get(i));
    }
    }
    ----
    下面那个看起来顺眼一点 [doge]
    hronro
        33
    hronro   178 天前 via iPhone
    兄弟,filter 是 ES5 里面的,ES5 是 2009 年发布的,都发布十多年了,不是什么新标准
    darknoll
        34
    darknoll   178 天前
    es6 都不用,那索性用 jquery 算了
    CodeCodeStudy
        35
    CodeCodeStudy   178 天前
    这不是技术问题,这是背锅问题,改动不麻烦的话就听他的吧,如果很多地方都限制你却不明确告知,那么还是跑路吧
    lagoon
        36
    lagoon   178 天前
    那些说 Java 还在用 jdk6 、7 、8 的,就别秀了。

    不同语言,不同生态,能这么对比吗?你咋不说汉语用了几千年,几百年才升级一次,摇头晃脑,表示编程语言太急功近利。Java 之类的根本没必要产生,C 语言才诞生几年?更别说 COBOL 以及更早的前辈。


    这种例子比比皆是,不懂还要管的宽。比如兵乓球打的好,可能去管足球。
    技术早就分化,一些人为了不失去权柄,用尽各种方法。
    ryougifujino
        37
    ryougifujino   178 天前
    上司太菜是原罪。
    Navee
        38
    Navee   178 天前
    我上家不允许使用 jdk8 的 lamada 表达式,原因是很多人看不懂
    kiritoxf
        39
    kiritoxf   178 天前
    我以前也是像你这样
    但是换个角度想想,项目是公司的,不是个人的,不要这么较真
    ooxiaoming
        40
    ooxiaoming   178 天前
    很明显你们公司前端没啥需求量,趁早跑路吧
    murmur
        41
    murmur   178 天前   ❤️ 5
    @lagoon java 在讲春天的故事,前端在玩三权分立还互相鄙视,这是单纯的语言问题么
    lusi1990
        42
    lusi1990   178 天前   ❤️ 1
    从领导为你考虑,不让你加班,你还不满意
    antiquezzz
        43
    antiquezzz   178 天前   ❤️ 20
    其实就是觉得你不靠谱,觉得你哪天就不在了(被踢了或自己跑了),前端衔接不到位,工作交接给他那就是添麻烦。入职不久就先按照原有模式搞一版,搞完稳定了,信任建立起来就好办了。目前他不可能信任你,如果老版本你搞不定或者中途跑路了或者和你配合不顺利想让你被跑路了,还放任你折腾,那不就是给自己挖坑
    liyang5945
        44
    liyang5945   178 天前
    跟我前同事很像,也是前端,代码里不是 for 循环就是 if else,不久前他一拍屁股跑了,现在接手他的代码快给我整吐了
    3dwelcome
        45
    3dwelcome   178 天前   ❤️ 3
    "公司还行,但是没有干长的打算"

    过几个月你走了,留下了一堆无法看懂,有 BUG 的代码,那么同事才是最惨的好吧。

    我写代码一直是为了给人看懂,合理减少心智负担。
    manami
        46
    manami   178 天前
    啊这……
    luqingliang
        47
    luqingliang   178 天前
    开团开团
    akakidz
        48
    akakidz   178 天前
    你这领导自己不了解还怀疑别人, 不会有人还不用 es6 吧(狗头
    sagaxu
        49
    sagaxu   178 天前 via Android
    java8 有 filter,java8 以上使用率超过 3/4,很多项目 /框架 /lib 不支持 java6/7
    z740713651
        50
    z740713651   178 天前
    选 leader 比选公司重要啊
    leader 的性格很大决定了团队的氛围
    也决定了你的能力与经济还有职位上的收获
    love
        51
    love   178 天前
    太菜就算了,还不肯学哪怕这点新东西(其实也不新)是要命,这种公司趁早走
    TomVista
        52
    TomVista   178 天前
    我最近在把项目中的 flex 布局全部替换掉,因为在有些设备上表现不可控,也没人能解决。sass 预处理过兼容了,但是还是在一小撮不同的环境下,表现的不一致。

    从这个角度来看,新特性 还是要根据项目实际情况来采用,况且 flex 也不那么新,这边全是移动端,也搞过兼容,但是还是出现了各种各样的问题,这出了问题只能由开发团队担着,绩效什么的就不要想了,不加班加点 007 解决问题就烧香了。
    rapperx2
        53
    rapperx2   178 天前
    公司不是你说了算,那你多想什么。叫你怎么做你就怎么做,工资正常发你就行了,觉得公司不行走人就行了。简单明了
    sewer
        54
    sewer   178 天前
    @TomVista https://caniuse.com/?search=flex 你们打算兼容 2.x - 4.3 ??
    lneoi
        55
    lneoi   178 天前
    他重点是排错和能够完成修 bug 吧, 还挺合理的, 有人能够为你抗锅
    不合理的是为什么要让不熟悉前端的人来做这件事情
    windyCity1
        56
    windyCity1   178 天前
    @kiritoxf #39 是的,从项目和公司的层面来说这么说没问题。

    个人发展角度,建议跑路,同事不会这个语法不能学?作为 leader 不能学?不能约束团队进行学习?

    对公司来说项目能跑就行,完全没问题的。

    对个人不行,影响个人职场竞争力。
    lightjiao
        57
    lightjiao   178 天前
    map reduce filter 几乎是每个语言都必备的库,Java 会没有?
    wangxin13g
        58
    wangxin13g   178 天前
    告诉他 java 有个东西叫 streamAPI
    kop1989
        59
    kop1989   178 天前
    这件事有两个角度。
    一个是从管理,软件工程角度看。一个是从技术上看。

    技术上看鄙视他没问题。
    但从软件工程角度看,你上司没什么问题。
    hhjswf
        60
    hhjswf   178 天前
    大部分小作坊都这样吧,我现在就是,总监不懂的东西他不让我用,跑路没人维护
    3dwelcome
        61
    3dwelcome   178 天前
    @TomVista "我最近在把项目中的 flex 布局全部替换掉"

    不用怀疑浏览器的实现。90%可能性,是你们 flex 代码里有 BUG 。

    你可以找个很古老的 chrome 内核作为开发平台,新浏览器对代码的容错率,实在是太高了。
    zhangbaoliang
        62
    zhangbaoliang   178 天前   ❤️ 2
    你上司说的是放屁。但是我认为 for 比 filter 维护性好很多,代码也简单。很多语法糖其实没啥用还增加了系统的复杂度。
    wangwei1025
        63
    wangwei1025   178 天前   ❤️ 1
    我要用这个,我要用那个,这样提升自己技术 ,以后跳槽方便。
    Obrigado0815
        64
    Obrigado0815   178 天前
    跑路吧
    mastcer
        65
    mastcer   178 天前
    告诉他 java 有个东西叫 streamAPI
    ian19znj
        66
    ian19znj   178 天前   ❤️ 20
    我来拉仇恨了,前端就是最没技术含量的,正因为这样,所以他们才需要折腾新框架新语法来显得自己多牛逼。
    程序员重要的是抽象逻辑思维,而不是你用 for 还是 filter,为了这点破事吵,只能说明你太闲了,或者说你就真的只是个美工。
    nasmatic
        67
    nasmatic   178 天前   ❤️ 1
    上司说的一点问题都没有,你都准备跑路了,留下一堆他不懂的 es6 。要是听了你的,你跑路了,下次在招个说要全改成 wasm 再干到一半跑路,那还玩个屁
    hewelzei
        68
    hewelzei   178 天前   ❤️ 2
    @ian19znj 好笑,filter 严格意义来说不是循环,是递归。为什么前端不推荐 for,因为现在前端流行函数式编程,函数式编程要尽量避免副作用,所以函数式编程里没有 for 循环而用递归替代。你说的抽象逻辑思维,难道函数式不够抽象吗?
    lei2j
        69
    lei2j   178 天前
    Java 里没有 filter?领导连 Stream 都没用过吗
    meteor957
        70
    meteor957   178 天前   ❤️ 1
    lz 小心了,可能要得罪一些人,他们听这话心理不舒服。
    xinyu0
        71
    xinyu0   178 天前 via iPhone
    兄弟,filter 是 es5 的数组方法,已经好多年了,,,,
    duan602728596
        72
    duan602728596   178 天前   ❤️ 1
    我其实不太喜欢用 es5 、es6 这个说法来区分新 js 语法和旧 js 语法,js 就是 js,所谓的 es6 、es2018 、es2020 都已经进入标准了,那么它就是白纸黑字清清楚楚写着的 ECMAScript 标准。也就是说写 var a = 5; 也是 js ; for await (const item of list) {} 也是 js 。

    前端不纠结语法是因为有 babel 、core-js 这两个利器,它极大大大大大的减少了开发的负担,不用关心语法的兼容问题。下能兼容 ie7,上能跑到 chrome91,跨越几十个版本。
    haaro
        73
    haaro   178 天前
    Java Stream:???
    feeeff
        74
    feeeff   178 天前
    @antiquezzz 是正解 与技术无关
    zw1one
        75
    zw1one   178 天前
    对上司来说,实现的功能都一样,为什么不用更稳妥的办法。用新特性除了方便你跑路以外对他只有坏处没有好处。
    所以,快准备跑路,业务导向的公司都是这样的。
    TomVista
        76
    TomVista   178 天前
    @3dwelcome 额,是全平台一套样式,全部的小程序,web,以及不知道要不要上的 rn 和快应用,潜在的 web 套壳 app,所以我认为上帝来了也搞不清楚 flex 到底哪里出了问题 ,
    undefine2020
        77
    undefine2020   178 天前
    我还碰到过不让用 redis 的,理由是 mysql 也可以实现队列为什么要用 redis
    fulvaz
        78
    fulvaz   178 天前
    @murmur 这就很偏见了~

    有一说一, filter 写出来的是无副作用代码, 读起来比 for 舒服多了. 现在看到 for 就皱眉. 意味着要理解对外部状态的处理, 还要考虑这几个状态还会被谁给改了.
    ayang11
        79
    ayang11   178 天前
    java 里有 filter 方法!!!
    yunyuyuan
        80
    yunyuyuan   178 天前
    我一般单行简单操作用 filter,别的还是用 for,看起来易懂些
    ada87
        81
    ada87   178 天前
    如果公司比较闲,你可以就听你领导的,在项目上敷衍了事,划水就行了,多用点时间学习,干自己的事,提升自己。
    如果这个时间没有,果断换就是了,一般公司都不要指望在工作的项目上能有多大成长。
    wangxin13g
        82
    wangxin13g   178 天前
    @ian19znj 函数式编程不够抽象?
    bingyiyu
        83
    bingyiyu   178 天前
    如果是我会高血压上来~刚从 node 转 java,之前 node lodash 耍的飞起~后面发现 java 也有 stream 一本满足。
    倒是也有个同事说 lamada 表达式可读性差
    但是写起来真的是爽啊,没这些玩意不知道写出来的代码多拧巴了
    TomVista
        84
    TomVista   178 天前
    @sewer #76 主要不是信不过浏览器,而是奇奇怪怪的小程序表现
    ryd994
        85
    ryd994   178 天前 via Android   ❤️ 6
    上司这个理由是没错。但是解决方法错了。他说的问题是确实存在的。但是直接说不准用,这其实是在解决提出问题的人。

    应该要让全组人都会用。哪怕现在不用,作为内部培训,知识储备,也是有益无害。到时候再和技术骨干一起讨论是否使用新特性。

    更好的办法是:
    1. 现在还不可以用,写的代码先放在其他 branch 上。将来可以 cherry pick 回来。
    2. 你准备一下,开堂课,把全组大部分人都教会。
    3. 先在不太重要的功能上使用。所有新特性必须提供禁用的开关。出问题了先用回老代码再 debug 。
    murmur
        86
    murmur   178 天前
    @fulvaz js 因为很早参数就支持传函数所以可以尽情的玩语法糖
    我这个人看的很开,对于框架、库,应该积极的接受,不用语法可以用库,反正最后都是要降到 es5 在浏览器里跑,库和语法谁更高贵

    至于语法,公司说了算,我们公司用了 react 、vue,但是还是 es5 语法,我希望拉一个写 jquery 的人都可以来打下手,而不是缺人的时候必须火急火燎的招专职前端。
    Vegetable
        87
    Vegetable   178 天前   ❤️ 7
    这件事情,你上司是对的,他的理由都很正当。
    不然你觉得为什么这么多公司用 JAVA8 ?

    你当然可以鄙视他,觉得团队水平低。但是你要小心——编码能力只是个人能力的一小部分,他是你的上司,可能在某些方便比你强很多,比如这件事情体现出来对项目管理的理解上,你远不如他。也许在系统设计上,甚至在前端工程化这件事上他都有更深入的理解。

    最好还是调整一下心态
    ymcz852
        88
    ymcz852   178 天前   ❤️ 2
    这帖子里转移话题抨击前端的人真的有够让人无语的..
    hjdtl
        89
    hjdtl   178 天前   ❤️ 2
    @murmur 11 个无知的人给你点赞,很遗憾
    ayang11
        90
    ayang11   178 天前
    @Navee 竟然连 1.8 新特性都不学吗 我们都普及了
    qiuhang
        91
    qiuhang   178 天前
    "java 里面没有 filter",还真就手里拿个锤子,看到啥都是钉子了。
    fulvaz
        92
    fulvaz   178 天前
    @murmur 其实只是大家上下文不同就造成了误解

    你只需要 jq 撸个页面, 所以用什么语法, 怎么写, 要不要用 react, 都是无所谓的

    我可能和几十个前端合作写一个项目, 你轻视的"语法糖"对我们来说其实是救命的.

    看需求而定, 相互理解吧~
    sue0917
        93
    sue0917   178 天前
    等你成 Leader,你也会成为你最讨厌的人。。。 如果你考虑不到那些,可能你成不了 Leader
    murmur
        94
    murmur   178 天前
    @fulvaz 举个例子,什么语法糖不能用库实现,但是能极大程度提高效率,注意 IDE 能做的都不算效率,比如 function 声明,因为 IDE 几下就敲出来了

    promise 属于库
    renmu123
        95
    renmu123   178 天前 via Android
    这就自己封装一个 filter 挂到原型链上
    lancelock
        96
    lancelock   178 天前
    不是上面一口一个新特性不稳妥的,可是这也不是新特性啊,这是 es5 的内容不是 es6,都 10 几年了还新啥

    另外 java 里显然也是有 filter 的,java8 14 年发布的,也八年了,目前也是绝对主流了,真不知道你们领导活在什么年代
    rurishi
        97
    rurishi   178 天前
    jdk8 就有 filter 了,这玩意是 17 年的
    要是再往前用过 rxjava,那就更早有了。。。
    不过还是要听领导的,这个项目第一负责人不是你
    mars0prince
        98
    mars0prince   178 天前
    这就是 java 的好处了,抱着个 java6,ssh 可以玩一辈子,要不然国内都用 java
    thtznet
        99
    thtznet   178 天前
    改了 for,能跑么? 2 个能跑一个就行,纠结啥。
    myCupOfTea
        100
    myCupOfTea   178 天前
    @murmur 所以 java 没有 stream 吗
    1  2  3  4  
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4106 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 03:03 · PVG 11:03 · LAX 19:03 · JFK 22:03
    ♥ Do have faith in what you're doing.