非常不喜欢「另一种写法」 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
iugo
V2EX    程序员

非常不喜欢「另一种写法」

  •  
  •   iugo
    iugo 2015-11-24 17:38:50 +08:00 4448 次点击
    这是一个创建于 3614 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在看某些语言文档或者某些框架的过程中,总会看到「另一种写法」。

    达成的目的完全一样,只是写法不同。也不算是语法糖,因为二者(或者三者)复杂度一样。

    这样的目的应该是方便使用其它语言或者另一种思维习惯。想让自身更具包容性。

    可是这让我很困绕,我感觉很乱。我也不能只掌握一种写法。只要语言或框架本身给出了这种用法,那么肯定会有人用到,然后在看别人代码的时候就会看到各种写法。可是做一件事情的多种写法(不是解题的多种思路)一来浪费了我的(一点点)精力,二来让我心里觉得不舒服。

    不知道会对这种情况心里感到不舒服的是否只有我。

    第 1 条附言    2015-11-25 09:43:41 +08:00
    1. 只是简单地说「写法」,不是「解法」。多了解一种「解法」肯定是好的。
    2. 为了看懂不同人写的代码,多种写法也是要了解的。
    3. 了解多一种写法并不是难或者浪费我很多时间,只是最后一段--「心里感到不舒服」。

    看文档顺便吐槽语言而已。写多了是麻木,可是看文档的时候还会觉得--「这**什么玩意儿」。

    也不是说这样完全不好,既然这样设计,肯定有合理的地方。但我总有这样感觉:
    领导让我去订餐,说全部鱼香肉丝。然后说看谁不吃辣的,给他们上蛋炒饭,然后又说说不定有人喜欢带汤的,要拉面好了。

    领导就是某语言。
    填饱肚子是目的。
    各种要吃饭的同事是开发者。
    不同饭就是不同写法。

    我宁愿领导说,就这一种饭,不吃的自己买去。
    第 2 条附言    2015-11-25 09:53:16 +08:00
    忘了强调重要的:

    只是牢骚一下,没有对语言本身不尊重,没有其它情绪。
    23 条回复    2015-11-25 22:18:48 +08:00
    julyclyde
        1
    julyclyde  
       2015-11-24 18:03:50 +08:00
    lunaticus7
        2
    lunaticus7  
       2015-11-24 18:15:42 +08:00   3
    RUBY 中枪无数,已倒在楼主的加特林之下 [=.=]
    jzfr
        3
    jzfr  
       2015-11-24 18:16:59 +08:00
    如果都只提供一种选择,又会有喷子不停的喷:“多个选择总是好的”!

    即然叫多种不同的写法,总有他微小的区别,往往微小的细节带来的结果区别很大,不要轻易的说“其实一样,其实差不多” 这类结论。

    如果你只喜欢一种写法,那你随便选个你看的顺眼的写法就可以了,忽略你不想要不想看的写法就可以了,你就当他只有一种写法就可以了。没人强迫你看第二种写法啊。

    这就好象选女朋友,纵使你弱水三千只取一瓢而饮,但其他女人不是就不该存在吧,你有什么权利代替别人做出取舍,别人就喜欢很多女人给他挑,别说什么蒙上脸都是一样的生孩子。
    FrankFang128
        4
    FrankFang128  
       2015-11-24 18:17:28 +08:00 via Android
    那你用 Java 就好了,只有 OOP
    scarlex
        5
    scarlex  
       2015-11-24 18:18:11 +08:00
    @lunaticus7 JS 也是
    dorentus
        6
    dorentus  
       2015-11-24 18:19:49 +08:00 via iPhone
    不知道某些事情(即便对某群人来说那是常识)是很正常的,拒绝了解自己不知道的事物才是不好的。所以没有必要记住所有的啊,用多见多的东西自然会记得,其它的有文档和搜索引擎。
    lecher
        7
    lecher  
       2015-11-24 19:27:43 +08:00 via Android   3
    代码写得少而想得太多。
    在代码的世界里每一种解决思路都有优点和缺点,不可能存在一个通用模型去解决问题的。实际开发都是根据业务规模和交付时间去选型,可能用着用着架构就要大改,实际情况的制约多着呢。
    在我看来这个行业最坑的是开发的时候要考虑人员平均开发水平,像我这样的半桶水太多导致很多高手开发的时候不得不考虑后续招人能力不足,而降低对 magic code 的使用,比如选择开发人员基数大的语言和版本,使用比较繁琐但易于理解的代码,放弃了很多生产力更先进的工具和开发模型。
    SpicyCat
        8
    SpicyCat  
       2015-11-24 19:29:09 +08:00
    题主非常适合 Python ,别碰 Ruby
    caixiexin
        9
    caixiexin  
       2015-11-24 19:42:58 +08:00 via Android   1
    奥卡姆剃刀原则?
    Phariel
        10
    Phariel  
       2015-11-24 19:56:19 +08:00 via Android   1
    哈哈 我第一反应就是 Ruby 一个团队几个人写的代码互相看不懂。。。
    DingSoung
        11
    DingSoung  
       2015-11-24 20:06:08 +08:00
    那谁说 茴香豆的“ hui ”有 3 种写法
    ibigbug
        12
    ibigbug  
       2015-11-24 20:52:00 +08:00
    两种写法肯定是有关联的,会一种,再学一种简直不费吹灰之力。
    Comdex
        13
    Comdex  
       2015-11-24 21:15:12 +08:00
    在这方面 golang 应该做得比较好
    magicdawn
        14
    magicdawn  
       2015-11-24 21:35:49 +08:00   1
    Python, 呵呵哒~

    urllib, urllib2, urllib3, ....
    linux40
        15
    linux40  
       2015-11-24 22:31:05 +08:00
    举个例子,动态规划一般有两中算法,一种自下而上的方法,一种带备份的递归方法,你一般会用哪种呢?
    比如我今天碰到第一个问题时,我用的第二种,因为第二种更直观,并且当时我实在是没想清楚怎么用一种写。
    但是第二个问题,我用的第一种,虽然第二种更直观,但在一般情况下,循环比递归更高效,并且,我没过多久就想到了第一种写法。
    所以「另一种写法」并非没有意义,那么没有意义的是没有意义地用多种写法吗?这个也不好说,比如关于这个循环你是用 for 还是 while 的问题。。。
    bombless
        16
    bombless  
       2015-11-25 04:09:48 +08:00 via Android
    来我大 Rust 阵营吧。最近有人提议加三目运算符,因为和 Rust 原有的 if-else 结构功能一样而被狠狠批评了一番
    iugo
        17
    iugo  
    OP
       2015-11-25 09:49:25 +08:00
    @lecher
    @linux0

    谢谢。多种解法我是很愿意学习的。我只是说:
    > 可是做一件事情的多种写法(不是解题的多种思路)

    只是写法。

    我说的多种写法产生的原因可能是这样的:

    1. 语言发展,历史原因导致。
    2. 随着语言的发展,它希望让另一种语言的使用者也试试自己。
    iugo
        18
    iugo  
    OP
       2015-11-25 10:00:52 +08:00
    @caixiexin 我的本意没有那么复杂。不过谢谢,了解到了新知识。
    C1ara
        19
    C1ara  
       2015-11-25 12:20:55 +08:00
    脾气真好 换成 Linus 大概就是[你这个代码写的 shit 一样还敢放出来安利!]
    能看懂是一回事 怎么写又是另外一回事啦 强行安利是挺烦的 尤其对层主这种渣来说_(;3>
    robertlyc
        20
    robertlyc  
       2015-11-25 13:52:08 +08:00
    适合独裁 不适合普世
    ttph1oc
        21
    ttph1oc  
       2015-11-25 14:01:00 +08:00 via Android
    上班的话是必须得商量着规范一下、以直观和简单为最重要的参考的,毕竟因为代码上的沟通拖慢业务进展,会直接影响到雇主的赚钱效率,良心上有愧。自己玩的话就随便搞啦,尾递归生成器组合子怎么难懂怎么整。
    Technetiumer
        22
    Technetiumer  
       2015-11-25 16:41:55 +08:00 via Android
    「听好儿子,要提出目标,但不可盲目追随它」
    「我明白了爸爸,就像 Python 那样提出『只采用唯一正确的方法』那样的目标,实际上却存在 2 、 3 版本的不兼容」
    「住口!」
    「 urllib 和 urllib2 」
    「住口!!!」
    linux40
        23
    linux40  
       2015-11-25 22:18:48 +08:00
    @iugo 这个嘛,有的语言给开发者是自由的,或者感觉是不得不有这么多 feature ,比如我感觉 c++就是后者。。。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5405 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 03:42 PVG 11:42 LAX 20:42 JFK 23:42
    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