的 return 句,各位怎行、比好? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
yukirock
V2EX    程序员

的 return 句,各位怎行、比好?

  •  
      yukirock 2014-05-08 23:53:39 +08:00 4080 次点击
    这是一个创建于 4241 天前的主题,其中的信息可能已经有所发展或是发生改变。
    例如的:
    return Math.sqrt(Math.pow(_from.x() - this.x,2) + Math.pow(_from.y() - this.y,2));
    13 条回复    2014-05-14 02:00:16 +08:00
    jsonline
        1
    jsonline  
       2014-05-09 00:10:16 +08:00
    var magicNumber = Math.sqrt(Math.pow(_from.x() - this.x,2) + Math.pow(_from.y() - this.y,2));

    return magicNumber

    用了 JS 的 AMD 之后,你这根本就不能算长了,

    define(function(){
    return {
    // 省略200行
    }
    })
    jakwings
        2
    jakwings  
       2014-05-09 00:23:40 +08:00
    断行缩进和变量赋值一样。可以根据是否要统一风格而选择要不要另起一个变量再return。反正要将return改成变量赋值也不麻烦。
    假如不同return语句返回值类型不同,可以用变量名来明确要返回的是什么,可以少加注释,同时统一return语句的简洁风格。
    Mutoo
        3
    Mutoo  
       2014-05-09 00:26:37 +08:00
    《重构》修改长return的 用的是“提炼方法”

    function dist(x1,y1,x2,y2) {
    ...
    }

    ...
    return dist(_from.x(), _from.y(), this.x, this.y);
    jprovim
        4
    jprovim  
       2014-05-09 03:37:48 +08:00
    ```Javascript
    return Math.sqrt(Math.pow(_from.x() - this.x,2)
    + Math.pow(_from.y() - this.y,2));
    ```
    NemoAlex
        5
    NemoAlex  
       2014-05-09 09:30:07 +08:00
    不要写比较长的 return 语句
    除非你写的东西不是给人看的
    StackGao
        6
    StackGao  
       2014-05-09 09:41:09 +08:00 via Android
    @NemoAlex 说得很好
    zythum
        7
    zythum  
       2014-05-09 11:02:57 +08:00
    我觉得这么些没问题。 很清楚啊

    @jsonline 这样赋一个值其实换汤不换药... 而且AMD和这个没有半毛钱关系
    @Mutoo 这样有点强行增加代码复杂度的感觉
    @jprovim 这个可以

    甚至可以
    Math.sqrt(
    Math.pow(_from.x() - this.x,2) +
    Math.pow(_from.y() - this.y,2)
    );

    @NemoAlex
    @StackGao 话说如果写oc的怎么能够不长. 其实只要逻辑简洁好理解就可以了。

    不好理解就写注释。多写点注释比什么都强。省得自己回头看还骂娘。
    yukirock
        8
    yukirock  
    OP
       2014-05-09 21:28:14 +08:00
    多各位回。
    我只是想於 format 的,倒不涉及怎……反正要也多就是「求距」的一句。

    @jakwings
    > 假如不同return语句返回值类型不同,可以用变量名来明确要返回的是什么,可以少加注释,同时统一return语句的简洁风格。
    我得有多理解方式。例如如果要返回一新生成的象,大致是先明,再操作,最後只要地 return newObject; 就好;但於的型,例如只涉及算的 double,跳中量也是一。
    然例子太了,不用也,似乎不合拿。

    @Mutoo
    似乎有化。
    而且多一函用可能增加,竟函要用很多次。
    竟是要交到校服器上行的作,我倒不想了可性牲性能。

    @jprovim
    看起不,非常感。

    @NemoAlex
    > 不要写比较长的 return 语句
    > 除非你写的东西不是给人看的
    ……果然是因只是的求距


    @zythum
    > 不好理解就写注释。多写点注释比什么都强。
    的量和函起名都得花工夫了= =
    darasion
        9
    darasion  
       2014-05-10 19:36:11 +08:00
    人能看懂就行了。不用纠结形式。
    banxi1988
        10
    banxi1988  
       2014-05-11 08:54:57 +08:00
    @Mutoo 按照重构的方法,
    其实在这种情况下,还可以使用另一个方法,就是引入解释性的局部变量 :
    将:
    return Math.sqrt(Math.pow(_from.x() - this.x,2) + Math.pow(_from.y() - this.y,2));
    改成:

    float xpow = Math.pow(_from.x() - this.x,2);
    float ypow = Math.pow(_from.y() - this.y,2);
    return Math.sqrt(xpow+ypow);
    FrankHB
        11
    FrankHB  
       2014-05-12 11:53:18 +08:00
    标题问的只是语法问题,怎么连局部变量都来了。(不过后来好像还想要语义?那就随便吧。)
    如果只是想治疗规范强迫症,具体结果看起来怎么样其实倒相对不重要了。
    所有存在形式语法的语言通用的可保证结果唯一无歧义的方法:预测行数并指定上限,约定标点是否能出现在行首和行尾的策略,然后按节点高度优先顺序拆AST。(嘛,没有考虑对齐还真简单很多;能习惯有些情况下return后立刻换行就好……)
    uleh
        12
    uleh  
       2014-05-14 01:57:19 +08:00
    单看格式的话,我一般会这么写
    return Math.sqrt(
    Math.pow(_from.x() - this.x,2) +
    Math.pow(_from.y() - this.y,2));
    uleh
        13
    uleh  
       2014-05-14 02:00:16 +08:00
    空格被过滤掉了。。。
    个人习惯是,函数里的内容换行。
    并在调用处(即第一行的Math)空 4 格开始。
    同级别的参数开头对齐。
    也就是 2、3 行的 Math 是从第一行「.」的位置开始。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     903 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 21:48 PVG 05:48 LAX 13:48 JFK 16:48
    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