技术总监让我不要用 lamda 表达式,说 Java 已经过了炫技的年代! - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Kongtou
V2EX    职场话题

技术总监让我不要用 lamda 表达式,说 Java 已经过了炫技的年代!

  •  
  •   Kongtou 2018-03-15 13:09:07 +08:00 13330 次点击
    这是一个创建于 2829 天前的主题,其中的信息可能已经有所发展或是发生改变。
    请问这是真的吗?
    如果是真的话,想转行写 Python 了。。。。
    73 条回复    2019-06-17 14:51:07 +08:00
    p2pCoder
        1
    p2pCoder  
       2018-03-15 13:11:01 +08:00 via Android
    这种东西,统一吧,看团队要求
    wtgam
        2
    wtgam  
       2018-03-15 13:16:15 +08:00
    不太懂 lamda 和炫技的关系?
    gnuth
        3
    gnuth  
       2018-03-15 13:16:28 +08:00
    喜欢 lambda 的话,用函数式编程语言,比如 Haskell
    orangeade
        4
    orangeade  
       2018-03-15 13:20:35 +08:00
    Lambda 有什么炫技的
    MeteorCat
        5
    MeteorCat  
       2018-03-15 13:21:26 +08:00 via Android
    公司项目风格统一,不是你一个人的项目,你走了别人还要维护呢
    night98
        6
    night98  
       2018-03-15 13:31:02 +08:00 via Android
    看同事吧 同事能看懂就可以写,大家都不会写就还是传统风格吧
    privil
        7
    privil  
       2018-03-15 13:33:36 +08:00
    写注释不?
    myself659
        8
    myself659  
       2018-03-15 13:36:33 +08:00
    还停留在语言层面上
    weiwio
        9
    weiwio  
       2018-03-15 13:36:54 +08:00 via Android   1
    应该说 java 不要滥用 lamda 函数比较合适,这东西本来能简化本来需要写匿名内部类函数重载的地方。lamda 函数的作用应该一目了然,不宜写大块大块的代码,否则降低可读性
    ke1e
        10
    ke1e  
       2018-03-15 13:38:10 +08:00 via Android
    觉得 lambda 很实用啊
    weiwio
        11
    weiwio  
       2018-03-15 13:40:12 +08:00 via Android   12
    楼上大部分都在说跟着团队将就着来,但团队每个人都应该把实现最佳的代码质量作为自己的责任,你可以贡献你的想法,去证明这样更好,去分享经验,去说服别人。你如果经常能这么做并最后得到良好的结果,你还怕不能升职加薪么。
    weiwio
        12
    weiwio  
       2018-03-15 13:41:20 +08:00 via Android
    还有道路必然是曲折的,但实现团队协作共赢是一种软实力
    Cbdy
        13
    Cbdy  
       2018-03-15 13:43:23 +08:00
    思维僵化是做设计人员的大忌啊
    misaka19000
        14
    misaka19000  
       2018-03-15 13:43:48 +08:00 via Android   2
    说明你们技术总监是彩笔
    hpeng
        15
    hpeng  
       2018-03-15 13:45:52 +08:00 via iPhone   2
    你们技术总监技术不行啊,控制一下 jdk 版本你们就用不了啦,还要口头说
    weiwio
        16
    weiwio  
       2018-03-15 13:49:09 +08:00 via Android   1
    @misaka19000 我觉得是有一类人喜欢给出自己的偏好观点,而不说具体实质性原因,来显示自己高人一等,比别人聪明厉害,其实嘛。。。
    congeec
        17
    congeec  
       2018-03-15 13:50:28 +08:00 via iPhone
    等 java 10 的类型推导出来,看他用不用
    timothyye
        18
    timothyye  
       2018-03-15 13:50:41 +08:00
    Lambda 有什么炫技的 +1
    timi
        19
    timi  
       2018-03-15 13:54:42 +08:00
    开发人员水平参差不一,技术总监统一一下标准有啥好喷的。。。
    weiwio
        20
    weiwio  
       2018-03-15 13:58:30 +08:00 via Android
    @timi 所以统一标准就是不要大家进步,向最低水平线看齐。我觉得不如花半小时团队互相分享一下经验,讲讲利弊,告诉大家什么时候用合适,什么时候用不合适。这样不是更好
    HangoX
        21
    HangoX  
       2018-03-15 14:01:02 +08:00   1
    lambda 不是炫技,是弱化你不关心的东西。技术总监认识就有问题,但是不要自己使用,要推广开来,毕竟有些人看不懂
    weiwio
        22
    weiwio  
       2018-03-15 14:02:42 +08:00 via Android
    @HangoX 同意,团队里应该适当组织分享知识和经验。况且这也不是什么高深的东西要浪费很多时间
    micean
        23
    micean  
       2018-03-15 14:02:46 +08:00
    不用 lamdba 的话怎么玩 stream
    youxiachai
        24
    youxiachai  
       2018-03-15 14:03:53 +08:00
    团队统一吧......为了维护..保守一些...
    jjianwen68
        25
    jjianwen68  
       2018-03-15 14:04:51 +08:00
    用一部分,太复杂的逻辑就不用了,lambda 写那些复杂逻辑不好些
    bumz
        26
    bumz  
       2018-03-15 14:29:19 +08:00
    不用 lambda,那就只能这么写咯:
    System.out.println(Stream.of(1, 2, 3, 4).filter(new Predicate<Integer>() {
    @Override
    public boolean test(Integer d) {
    return d % 2 == 0;
    }
    }).count());
    bumz
        27
    bumz  
       2018-03-15 14:31:54 +08:00
    我就问他喜欢哪个
    ```
    System.out.println(Stream.of(1, 2, 3, 4).filter(d -> d % 2 == 0).count());
    ```
    MithrandirW
        28
    MithrandirW  
       2018-03-15 14:39:43 +08:00   1
    写匿名内部类不更麻烦
    deadEgg
        29
    deadEgg  
       2018-03-15 15:20:44 +08:00
    现在 lamdba 都算炫技了吗。
    RubyJack
        30
    RubyJack  
       2018-03-15 15:23:22 +08:00
    普通的 lamdba 使用算哪门子的技啊?
    panpanpan
        31
    panpanpan  
       2018-03-15 15:33:21 +08:00
    如果是我,我选择换一个家公司。
    dilu
        32
    dilu  
       2018-03-15 15:39:55 +08:00
    PHP 中还有个东西叫魔术方法

    有些复杂的功能用魔术方法写起来比较简单

    但是性能会有一定的下降

    我不是写 Java 的但是我也知道 lamdba 更方便

    但是既然上面说了那就不用

    所有的程序员都有一个通病 就是总想在技术上说服别人

    实际上根本没有必要 只要你开的工资足够高 事情不多加班不多的情况下 你让我怎么写我就怎么写

    面向工资编程而已 没必要去争执什么 只要按时发工资就好
    Mazexal
        33
    Mazexal  
       2018-03-15 16:44:26 +08:00
    @dilu 我也觉得, 可能是写代码时间久了, 对这种事情不敏感, 毕竟只要付工资就可以了. 至于想放飞自我, 自己可以创建自己的项目, 可以随意写
    xiaowangge
        34
    xiaowangge  
       2018-03-15 16:45:56 +08:00
    还在用 JDK 7 的路过
    hsiafan
        35
    hsiafan  
       2018-03-15 16:47:09 +08:00
    应该是技术总监看不懂吧
    maichael
        36
    maichael  
       2018-03-15 16:58:03 +08:00
    炫技的确不好,但 lambda 和炫技有什么关系。
    shijingshijing
        37
    shijingshijing  
       2018-03-15 19:01:31 +08:00
    团队如果有 Software Coding Standard,里面有规定不能使用 Lamda 那就遵守规定,规定不合适那就改规定。这才是标准流程。

    不少高安全等级的代码用 C 写,不让用递归、不让用 malloc,不能用函数指针,那是不是就不写了呢。
    stephenyin
        38
    stephenyin  
       2018-03-15 19:03:38 +08:00
    吓得我这种不会 lambda 的程序猴不敢说话.
    FanError
        39
    FanError  
       2018-03-15 19:13:37 +08:00
    @bumz 按照我的理解,总监哥估计对这个 Stream.of 的语法应该也归类在“炫技”里。
    hcymk2
        40
    hcymk2  
       2018-03-15 19:18:28 +08:00
    为赋新词强说愁
    lonenol
        41
    lonenol  
       2018-03-15 19:18:37 +08:00
    甩他脸上一本 java 函数式编程,问他懂不懂啥叫编程,啥叫抽象...
    cyspy
        42
    cyspy  
       2018-03-15 19:24:32 +08:00 via Android
    Java 刚刚离开了无技可炫的时代不是吗
    contmonad
        43
    contmonad  
       2018-03-15 20:03:15 +08:00 via iPhone
    Python 之父也不让你用 lambda:Why did Guido van Rossum want to remove lambda from Python 3? https://www.quora.com/Why-did-Guido-van-Rossum-want-to-remove-lambda-from-Python-3
    ixiaohei
        44
    ixiaohei  
       2018-03-15 20:52:40 +08:00
    spring 5,spring boot2,spring cloud netflix 那堆框架里面 jdk8 的特性用一堆,lambda,functional interface,接口默认方法实现,新的时间 api,optional,谓词编程;我就问你们看不看源代码?
    chocotan
        45
    chocotan  
       2018-03-15 21:37:52 +08:00
    java8 都出来好几年了
    培训机构估计都在讲这东西了吧
    cominghome
        46
    cominghome  
       2018-03-15 21:41:00 +08:00
    在项目中能不用这种东西就不用是正确的,过多使用高级表达式会给后续代码的阅读带来困难。
    至于是不是炫技我觉得 lambda 倒还不算炫技吧。
    heyang
        47
    heyang  
       2018-03-15 22:26:04 +08:00
    楼里头貌似关注点分为两个:
    1. 总监的话对不对
    2. 先不考虑总监的话对不对,楼主是不是该无条件听上头的话。

    对此啊。。我的看法是:
    1. 这个总监啊。。 思维江化!(可以讨论)
    2. 你们这些人那。。思维江化!(没得讨论)
    3. 亦可赛艇!
    iyaozhen
        48
    iyaozhen  
       2018-03-15 22:31:04 +08:00 via Android
    @xiaowangge JAVA6 还很 happy
    ray1888
        49
    ray1888  
       2018-03-15 22:37:05 +08:00 via Android
    还是看风格和团队规范,我就算是写 python 也比较少用 lamada。因为只要里面的逻辑比较复杂的情况下,lamada 表达式看起来很费劲,还不如直接写函数。个人认为易读性比较重要
    WinterWu
        50
    WinterWu  
       2018-03-15 23:01:21 +08:00   1
    如果是普通的流程,的确没必要用。但是你用了流、用了 foreach、甚至就是用 Kafka stream,不用 lamdba 用啥,要写那一堆屎一样没有任何意义的模版代码吗?你们这个总监根本就是不合格的。

    事实上,这么多高级语言引入函数式都不是为了炫技:

    1. 代码逻辑更直观、代码更少!!!这意味着什么?减少 bug,降低维护成本。
    2. lamada 更多是用来和其它高阶函数结合使用
    3. lamada 的确不是给你写复杂逻辑的,人家名字叫 “表达式”不是没道理,一行内能解决的才是合适
    4. 就我面试结果来看,培训机构应该大部分还没教这个,估计他们老师自己都不会。
    murmur
        51
    murmur  
       2018-03-15 23:07:21 +08:00
    @WinterWu
    代码多少和性能和程序员水平没什么直接的关联
    何况 java 牛逼的 ide 打出个函数声明也用不了写几个字
    WinterWu
        52
    WinterWu  
       2018-03-15 23:27:36 +08:00
    @murmur
    请你仔细理解下我的话。如果看不懂,去好好看书,不光是语法,还有软件工程;哦还有语文。
    如果你只是会撸个单机数据库、没有几个用户、几张表单 web 服务器和程序员水平确没啥直接关联,对了,这种不写代码都能撸了。
    param
        53
    param  
       2018-03-16 01:42:45 +08:00 via Android
    如果是 Python,有些场景下用 lambda 你说炫技也就算了。Java 的 lambda 也叫炫技?
    q397064399
        54
    q397064399  
       2018-03-16 06:07:14 +08:00
    炫技去写 C++吧,, 软件工程的本质就是管理复杂度,消灭人的因素,如果原先所有的 代码都是匿名类之类,,
    我也不建议使用 lambda,语法糖并不能带来任何改变 ,Stream 流式 API 有一定的优化,可以考虑使用,
    任何东西都是要权衡的,码农多写几个字算什么,如果对管控复杂性有帮助,,让你把所有的业务流程
    画个流程图也不是不可能。
    safeoy
        55
    safeoy  
       2018-03-16 08:28:46 +08:00
    目测你们总监很靠谱,赶紧抱大腿
    fiht
        56
    fiht  
       2018-03-16 08:55:01 +08:00
    不是 Java 过了炫技的年纪,而是领导过了炫技的年纪。。
    cisisustring
        57
    cisisustring  
       2018-03-16 09:02:34 +08:00 via Android
    @safeoy 同意总监靠谱。
    wupher
        58
    wupher  
       2018-03-16 09:14:40 +08:00
    lamdba 炫技个 P 啊。这要是炫技,那 Javascript 不是最要炸上天?

    你们总监明显根本就不是做技术的人。

    倾听你内心的声音比听什么总监的靠谱多了。
    CtrlSpace
        59
    CtrlSpace  
       2018-03-16 09:15:46 +08:00
    开个大炮:新项目不用 JDK8 的都是垃圾
    sagaxu
        60
    sagaxu  
       2018-03-16 09:26:53 +08:00 via Android
    金三银四,你还等什么
    int64ago
        61
    int64ago  
       2018-03-16 09:36:28 +08:00
    照他这么说,Javascript 就是天天在炫技,ES6/7/8/...,大部分更新其实都是语法糖,而很多特性还没正式进入规范就开始尝试用 Babel 在项目里用了

    总结:兄弟,来写 JS 吧,没人会因为你用新特性对你指手画脚,反而不用新特性会被嘲笑 :doge:
    murmur
        62
    murmur  
       2018-03-16 09:41:44 +08:00
    @wupher Javascript 本来就是要上天
    java 是有什么问题大家维护个牛逼的轮子 一起用
    你想要的语法糖 很可能在 google 或者 apache 的 utils 里早就解决了 虽然语法不是那么优雅

    js 是有什么问题要么造个语法糖要么自己造个轮子

    @int64ago js 这种语言 生来就带了一堆问题 后来再怎么吃药进补也改变不了其本质
    坐等 webasm 拯救世界 想用什么语言用什么语言 到时候你可以自豪的跟别人说老子写的是 Javascript 而不是 Javascript
    aminic
        63
    aminic  
       2018-03-16 10:24:47 +08:00 via Android
    jdk1.4 是最好的,后面的全是渣渣
    dreamtrail
        64
    dreamtrail  
       2018-03-16 10:48:35 +08:00
    只能说你们的总监老了,接受不了新事物了
    dannywu1991
        65
    dannywu1991  
       2018-03-16 11:04:11 +08:00
    @hpeng 精髓了 2333 我们特么一直用 7 太惨了
    sampeng
        66
    sampeng  
       2018-03-16 11:59:28 +08:00
    应该是这个理由不成立。。团队如果所有人都 ok。其实无所谓。。否则你走了。别人看不懂,也是扯蛋
    xiaolanglang
        67
    xiaolanglang  
       2018-03-16 12:52:53 +08:00
    说起这个,有谁的公司生产项目上了 Java 9 的吗?
    chocotan
        68
    chocotan  
       2018-03-16 12:54:42 +08:00
    @gy911201 用 java9,以前的 maven 项目都要改配置才能打包成功......
    xiaolanglang
        69
    xiaolanglang  
       2018-03-16 12:56:23 +08:00
    @chocotan 是的,我们也遇到了这个问题……而且好像还有 maven 插件不兼容……所以一直下不了决心升级…………
    stanjia
        70
    stanjia  
       2018-03-16 13:02:44 +08:00
    本月 JDK 10 Release
    MartinWu
        71
    MartinWu  
       2018-03-16 14:28:58 +08:00
    其实楼主就这么一句话,又没有上下文。 什么原因说出这句话真不好判断。楼主要是真是想解决这个疑惑,就应该详细说清楚来龙去脉,而不是一句话完事。个人觉得, 楼主只是想来秀下优越感。
    yanjinbin
        72
    yanjinbin  
       2018-03-17 09:29:10 +08:00 via iPhone
    @timi 标准难道是大家一起用 jdk6 ?连 lambda 都不合理,那我大可以说字符串默认排序都要用 conparator 这样大家都能看得懂?是这个道理。。。。
    wjfkobe24
        73
    wjfkobe24  
       2019-06-17 14:51:07 +08:00
    刚才我也让另一个人把代码里的 lambda 给删了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1013 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 23:37 PVG 07:37 LAX 15:37 JFK 18:37
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86