V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Kongtou
V2EX  ›  职场话题

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

  •  
  •   Kongtou · 2018-03-15 13:09:07 +08:00 · 12691 次点击
    这是一个创建于 2445 天前的主题,其中的信息可能已经有所发展或是发生改变。
    请问这是真的吗?
    如果是真的话,想转行写 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 的路过
    xiaxiaocao
        35
    xiaxiaocao  
       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。其实无所谓。。否则你走了。别人看不懂,也是扯蛋
    gy911201
        67
    gy911201  
       2018-03-16 12:52:53 +08:00
    说起这个,有谁的公司生产项目上了 Java 9 的吗?
    chocotan
        68
    chocotan  
       2018-03-16 12:54:42 +08:00
    @gy911201 用 java9,以前的 maven 项目都要改配置才能打包成功......
    gy911201
        69
    gy911201  
       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   ·   实用小工具   ·   2414 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 02:02 · PVG 10:02 · LAX 18:02 · JFK 21:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.