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

写代码花括号不另起一行的好处是什么

  •  
  •   professorz · 2015-06-03 15:24:38 +08:00 · 25112 次点击
    这是一个创建于 3462 天前的主题,其中的信息可能已经有所发展或是发生改变。

    另起一行的好处:
    没有编辑器提示的情况下仍然能轻松的看出内外关系;
    对称,美观。

    第 1 条附言  ·  2015-06-03 18:57:00 +08:00
    到现在,看到的原因有:
    减少代码行数,同样高度看更多代码。
    (习惯、项目统一那个不在讨论范围内)
    第 2 条附言  ·  2015-06-03 21:11:11 +08:00
    又看到了一些。
    少敲回车键(汗)
    js里面函数名和函数体在一起比较好(我确实遇到过sublime text收缩代码的问题)
    第 3 条附言  ·  2015-06-04 12:23:39 +08:00
    借着这个帖子说一个不相关的事情吧,今天就在身边,发生了让人唏嘘的事情,某来公司开会的哥们在公司洗手间晕倒,医生带走时心电图已平了。
    希望大家一是都重视身体健康,毕竟你的身体这么些年你好你坏都正常运转着。
    二是都学一些急救常识,有人晕倒口吐白沫,可能是癫痫,但观察如果呼吸脉搏出现问题,要快打120,尽快(骤停4min~6min内)做CPR。CPR:http://baike.baidu.com/view/236782.htm
    希望对大家有点帮助吧。祝大家平安喜乐。
    102 条回复    2015-06-07 15:00:15 +08:00
    1  2  
    w99wen
        1
    w99wen  
       2015-06-03 15:26:17 +08:00
    不用打回车换行了
    不然多按好几个键。
    我比较懒。
    scarlex
        2
    scarlex  
       2015-06-03 15:27:06 +08:00
    习惯而已
    binjoo
        3
    binjoo  
       2015-06-03 15:28:06 +08:00
    基督教的好处是什么?佛教的好处是什么?

    是否另起一行只是教派不同而已。。。
    hooluupog
        4
    hooluupog  
       2015-06-03 15:28:58 +08:00
    晕,开撕了,我写代码去。。。
    omi4399
        5
    omi4399  
       2015-06-03 15:29:56 +08:00
    这么写高兴。
    czheo
        6
    czheo  
       2015-06-03 15:32:12 +08:00 via iPhone
    节约行数
    FrankFang128
        7
    FrankFang128  
       2015-06-03 15:32:27 +08:00
    你说的这个好处根本就不是特有的好吗
    laoyur
        8
    laoyur  
       2015-06-03 15:32:31 +08:00   ❤️ 1
    以前我也是另起一行党,也是跟你同样的观点。
    但我现在转变成不另起一行了,熟悉之后也还是能比较轻松地看出内外关系,真的,所以那条理由其实不成立。
    而不另起一行的好处是,可以有效减少行数,同样高度内显示的内容更多,更容易把控代码前后关系
    maikcn
        9
    maikcn  
       2015-06-03 15:35:51 +08:00   ❤️ 1
    人生苦短,我用Python
    MrGba2z
        10
    MrGba2z  
       2015-06-03 15:40:44 +08:00
    我一开始也是换行的
    后来看身边的教授, 大牛, 以及操作系统等代码都是不换行
    就跟着学了..

    后来发现行数少带来的优点也不少, 而且习惯后不换行的情况下也能分清block
    hxtheone
        11
    hxtheone  
       2015-06-03 15:55:00 +08:00
    大括号不换行通过行首的缩进也能很清楚的看出层级啊

    话说看代码的内外关系还需要编辑器提示?
    TuxcraFt
        12
    TuxcraFt  
       2015-06-03 16:03:43 +08:00
    不过还是比 begin 和 end 要好
    Wangxf
        13
    Wangxf  
       2015-06-03 16:24:54 +08:00
    最大的好处就是不会在细节上面花太多时间,反正很明显的看到区块
    fo2w
        14
    fo2w  
       2015-06-03 16:26:39 +08:00
    换了十几年行, 现在不换行了, 没别的, 年纪大了, 眼神不好, 换行了一眼望去代码跟撒欢儿似得零零碎碎, 看得头大
    magicdawn
        15
    magicdawn  
       2015-06-03 16:32:15 +08:00
    写C#换行,写JS不换行,写golang 不是我自己说了算
    blambin
        16
    blambin  
       2015-06-03 16:37:23 +08:00
    Anybfans
        17
    Anybfans  
       2015-06-03 16:47:20 +08:00
    突然想起我大python ~
    timothyye
        18
    timothyye  
       2015-06-03 16:48:56 +08:00
    据说这个实际上程序员只有两种,一种是花括号换行的,一种是花括号不换行的……
    tangooricha
        19
    tangooricha  
       2015-06-03 16:54:17 +08:00
    @professorz 老板算工作量的时候,可以有效地给老板省钱啊!
    jokester
        20
    jokester  
       2015-06-03 16:55:22 +08:00
    no tell u
    mozartgho
        21
    mozartgho  
       2015-06-03 16:56:28 +08:00
    自己习惯了就好,我是当年自学C语言,用的K&R的书。
    sketch33
        22
    sketch33  
       2015-06-03 17:00:28 +08:00
    同意ls的:而不另起一行的好处是,可以有效减少行数,同样高度内显示的内容更多
    forrestchang
        23
    forrestchang  
       2015-06-03 17:05:24 +08:00
    如果阅读过《代码大全》的人肯定知道,大多数人另起一行的括号写法是错误的。在正确写法的前提下,另起一行和不另起一行看个人习惯了。

    协同开发的时候应当遵循统一的代码规范。
    xifangczy
        24
    xifangczy  
       2015-06-03 17:05:47 +08:00
    python 哭晕.
    mcfog
        25
    mcfog  
       2015-06-03 17:06:38 +08:00
    宇宙最好的语言表示,class interface和trait的花括号换行,控制结构if while switch for foreach的不换行~
    SuujonH
        26
    SuujonH  
       2015-06-03 17:08:16 +08:00
    增加键盘回车键寿命,减少地球的能源使用,降低了武器的制造成本,为了对抗隔壁星球的老王打下坚实的基础
    lingo233
        27
    lingo233  
       2015-06-03 17:16:17 +08:00 via Android
    没啥,在世界之初有两种c一种是the c一种是谭浩强c所以括号只是个历史遗留问题
    timi
        28
    timi  
       2015-06-03 17:20:20 +08:00
    以前都是另起一行,奈何公司规范要求同行。。。
    目前感觉,如果代码行数少的话,同行舒服,代码行数多的话,另起一行看的舒服(能通过缩进找到另一个括号,我相信人眼对括号的匹配的优先级要高于对括号+字母的优先级的。。)
    caoyue
        29
    caoyue  
       2015-06-03 17:40:22 +08:00
    先看语言和项目代码规范吧,然后就看个人喜好了

    不过学 js 的时候遇到过这样的坑=-=
    return
    {
    x:y
    }
    jun4rui
        30
    jun4rui  
       2015-06-03 17:41:39 +08:00
    少按一下键就是优点了,你看javascript这种语言连冒号都建议用''单引号而不用"",就是因为可以省掉左手去按SHIFT……
    jadetang
        31
    jadetang  
       2015-06-03 17:46:49 +08:00
    如果公司是按照代码行数算工作量的话,另起一行当然好些,蚊子腿也是肉
    popu111
        32
    popu111  
       2015-06-03 17:49:25 +08:00
    我就是舒服。。。有的人花括号不光换行还再来一下,看的时候也是醉了。。。
    iyangyuan
        33
    iyangyuan  
       2015-06-03 17:51:15 +08:00 via iPhone
    习惯
    vietor
        34
    vietor  
       2015-06-03 17:55:24 +08:00
    省了一个空行,看起来更紧凑。
    此外,也很美观呢,也可以看出层次关系呢,毕竟缩紧很明显、下括号也是存在的。

    也就说你提的两个理由,没一个站住脚。
    otakustay
        35
    otakustay  
       2015-06-03 17:58:50 +08:00
    不用花括号都能看内外关系了(python开发者如是说),换不换行和内外关系就没啥关系了- -
    yellowV2ex
        36
    yellowV2ex  
       2015-06-03 17:59:54 +08:00   ❤️ 1
    尿尿不抖几下的好处是什么?
    cmheia
        37
    cmheia  
       2015-06-03 18:01:02 +08:00
    @laoyur “同样高度内显示的内容更多,更容易把控代码前后关系”+1
    显示器太小就是坑
    bingu
        38
    bingu  
       2015-06-03 18:01:17 +08:00
    一直没搞懂为什么要另起一行放一个花括号
    1023400273
        39
    1023400273  
       2015-06-03 18:02:47 +08:00
    强迫症表示不换行受不了
    xlrtx
        40
    xlrtx  
       2015-06-03 18:08:37 +08:00
    @tangooricha 应该压缩下算下, 按照信息熵来开工资..
    JeremyWang
        41
    JeremyWang  
       2015-06-03 18:14:56 +08:00
    @xlrtx 厉害~~
    Gonster
        42
    Gonster  
       2015-06-03 18:18:20 +08:00 via iPhone
    看到帖子必须吐槽一下javascript自动加分号:P
    linux40
        43
    linux40  
       2015-06-03 18:19:40 +08:00
    支持楼主。。。
    kxxoling
        44
    kxxoling  
       2015-06-03 18:36:50 +08:00
    >>> from __future__ import braces
    File "<ipython-input-8-2aebb3fc8ecf>", line 1
    from __future__ import braces
    SyntaxError: not a chance
    hiddenman
        45
    hiddenman  
       2015-06-03 18:37:49 +08:00
    @maikcn 论空格和tab的区别,哈
    21grams
        46
    21grams  
       2015-06-03 18:56:57 +08:00
    其实没啥好处,就是以前显示器屏幕小,可以省一行的空间。现在都是高分屏了,没实际意义了,只有传统意义。
    xenme
        47
    xenme  
       2015-06-03 19:04:20 +08:00
    像我这样,一会儿换行,一会儿不换行的怎么破。
    lilydjwg
        48
    lilydjwg  
       2015-06-03 19:13:07 +08:00
    1. 节约垂直空间。有人声称当函数超过一屏时 bug 数会加倍呢。
    2. 防止意外,如一不小心写了这种

    if(this && that);
    {
    do this;
    }

    你自己盯十遍也不一定能发现。但是如果是这样:

    if(this && that); {

    你就会发现 ); { 这里很不和谐(因为这种字符组合很罕见,而 ); 这个很常见)。

    当然这些如果开 -Wall 的话编译器会提示你的。

    3. 没有编辑器提示的情况下仍然能轻松的看出内外关系。只要从 } 垂直向上找,遇到字符就说明到达此区块开始了(当然还得跳过宏)。而分开写,开始处占了俩逻辑行,感觉不好。反正我是这么觉得的,也许是因为不换行的代码见太多了。
    lilydjwg
        49
    lilydjwg  
       2015-06-03 19:14:08 +08:00
    @w99wen 在我这里,两种写法所需要的按键数通常是一样的:

    1. ) 空格 {
    2. ) 回车 {

    缩进编辑器会帮我处理。
    zhs227
        50
    zhs227  
       2015-06-03 19:15:08 +08:00
    这是个哲学问题,最早的部分规范推荐是大括号不重起一行的。

    看起来其实也没有那么不方便。

    +-----/
    ------/
    -----/
    ----/
    ---/
    --/
    -/
    }

    不重启一行的阅读方法是,你顺着括号收网上看,看到的第一个字母就是大括号开始的那一行。看上去像个倒三角形的样子。

    习惯了都很好。可以节省版面。
    zyxfsky
        51
    zyxfsky  
       2015-06-03 19:23:05 +08:00
    自从改Python后,就和大括号88了
    qw7692336
        52
    qw7692336  
       2015-06-03 19:32:10 +08:00
    我喜欢紧凑的代码,行数太多、太长的代码不好看。我不喜欢加多余的空格。很多人喜欢在加号"+"的前后分别加上空格,我就不喜欢这么做,松散的代码不好看。
    qw7692336
        53
    qw7692336  
       2015-06-03 19:33:38 +08:00
    @lilydjwg

    1. ) 空格 {
    2. ) 回车 {

    以上两种我都不喜欢,我是喜欢
    ){
    更加紧凑
    ooh
        54
    ooh  
       2015-06-03 19:40:27 +08:00
    @timothyye 还有一种都不换号{}
    znoodl
        55
    znoodl  
       2015-06-03 20:15:34 +08:00
    一个经常遇到的bug:
    while(i == 1);
    {
    }
    上面如果括号内为真,大括号的内容不会被执行
    while(i == 1){
    }
    fulvaz
        56
    fulvaz  
       2015-06-03 20:47:10 +08:00
    额...又是这个题目啊
    -------------

    void doSomeThing(para...) {
    int a;
    function();
    }
    函数名和函数体应该是有关联的,在你读代码的时候,不空行可以显示出这种关联
    另外这样少占一行,还是方便阅读

    另外,python没有{}, 更加好,缩进已经能够反映这种关联关系

    ---

    对我就是跟我老板学的
    flowfire
        57
    flowfire  
       2015-06-03 20:59:39 +08:00
    可以有效防止强迫症患者阅读你的代码。。。
    feiyunruyue
        58
    feiyunruyue  
       2015-06-03 21:06:14 +08:00
    go语言要求必须这么搞
    BB9z
        59
    BB9z  
       2015-06-03 21:09:33 +08:00
    不换行党,理由:大部分编辑器折叠后的样式更好。
    falcon05
        60
    falcon05  
       2015-06-03 21:10:34 +08:00 via iPhone
    习惯使然
    lincanbin
        61
    lincanbin  
       2015-06-03 21:21:38 +08:00
    http://www.94cb.com/Pythonic-PHP-Code-Formatter/





    好处还是蛮多的诶,你不觉得这样看起来清爽很多么?
    zhangjk1993
        62
    zhangjk1993  
       2015-06-03 21:48:17 +08:00
    看着爽
    lilydjwg
        63
    lilydjwg  
       2015-06-03 22:32:57 +08:00
    @qw7692336 嗯,那的确又省了一个键。我两种都用,好像是取决于语种和上下文……
    gateswong
        64
    gateswong  
       2015-06-03 22:40:29 +08:00
    一开始我写代码的笔记本是1366x768的分辨率,然后标题栏占一点儿高度,菜单栏占一点儿高度,工具栏占一点儿高度,标签栏占一点儿高度,下面调试或者什么乱七八糟的信息栏占一点儿高度。最后编辑器可视区域也就10行多一点儿。

    所以坚决的从换行党切换到不换行党了……

    不过有例外的情况,就是C#。Visual Studio 似乎是强制C#换行花括号的,所以直接就顺着VS来了。


    @lincanbin 你给的这个图片有种说不出的怪异,可能是有点儿python的感觉了吧。

    @znoodl 这种情况都是手滑多写了个分号吧?

    @qw7692336 我觉得加了空格蛮舒服的,只有一种情况不加空格:
    b = a[i+1];
    就比
    b = a[i + 1];
    要好看一点儿

    @caoyue 虽然没细学过Javascript不过感觉这个坑是因为js语句可以有也可以没有分号是吧?
    winoros
        65
    winoros  
       2015-06-03 22:41:15 +08:00
    两种风格,感觉主要是个人习惯的问题吧
    现在是右括号不换行,个人原因是感觉看起来顺眼好多,而且,换行之后造成的无意义空间多了好多
    xgdyhaiyang
        66
    xgdyhaiyang  
       2015-06-03 22:52:07 +08:00
    @lincanbin 还是写Python吧
    Felldeadbird
        67
    Felldeadbird  
       2015-06-03 23:30:32 +08:00
    contol + shitf + f:什么格式对我来说重要吗?
    wqlfighter
        68
    wqlfighter  
       2015-06-03 23:39:42 +08:00
    谷歌有C++一套开发格式,目前感觉的确挺舒服
    DejaVud
        69
    DejaVud  
       2015-06-03 23:51:41 +08:00
    美观.

    认为另起一行美观是因为对称,但是我认为我的审美更符合以下第2种:
    1)花括号另起一行
    ++++++
    +
    +++
    +++++
    ++++++
    +++++
    +++
    +

    2)花括号跟在后面
    ++++++
    +++++
    ++++
    +++
    ++
    +
    lilydjwg
        70
    lilydjwg  
       2015-06-04 00:05:31 +08:00
    @Felldeadbird 你可以把所有代码都写到一行试试 :-D
    bdbai
        71
    bdbai  
       2015-06-04 00:23:41 +08:00 via iPhone
    @forrestchang Visual Studio哭瞎在厕所
    FrankHB
        72
    FrankHB  
       2015-06-04 04:48:02 +08:00
    想要省空间省回车的,干脆就用没括号的算了。(虽然一写在纸上换页然后就容易呵呵了。)
    要是不爽这坨,用Lisp风格不就行了,这不更节约行数么。
    说到底凭什么}非得吊车尾而{就不行呢?完全没理性的理由,只是习惯罢了。基于}经常占据了单独的行这个现实,说节约行数是主要目的的,我很怀疑有没有花时间想过这里的问题。
    另外,K&R也不是照搬的理由。注意一下K&R C函数体内部的块的{}和其它{}还不都一样,显然并不是任何时候都把{前的换行删除。另外值得一提的是,函数体层次上和内部块的{}风格不一样和函数体必须是复合语句这些artifacts现在看来都是K&R C旧参数声明语法的遗毒。
    FrankHB
        73
    FrankHB  
       2015-06-04 04:56:57 +08:00
    @lilydjwg 这种错误怎么看也没比自作主张脑补;的语言来得混乱。既然后者都能接受,前者又有啥大不了的呢。
    真不爽的怕错的,直接禁止然后源码里正则暴搜干掉所有\);(?=\r?$)得了。这种检查还方便自动化实现。

    倒三角形美观?完全不明觉厉。先看长的代码再看短的代码心情会好么。至少汉字的文章按这种构造写看起来挺奇怪的。
    df4VW
        74
    df4VW  
       2015-06-04 06:15:46 +08:00
    不会有的时候merge中间插了别的东西这个函数就崩了
    lilydjwg
        75
    lilydjwg  
       2015-06-04 07:48:13 +08:00
    @FrankHB } 放上一行的话添加、移动代码不便的。但是 { 放在 if / for / while 行没有这个问题,反正我是不用 if (x) y; 这种不用 { } 的单行 if 块,往里边添加东西太麻烦。

    我并不接受自己添加 ; 的语言。写 JavaScript 都是显式写 ; 的。我说了,「);$」这个组合是非常常见的,比如 a = func(); 你检查下一行是不是单一个 { 也没用,因为有时候 { } 不会跟着 if / for / while 出现,只是用来划分作用域的。

    我也不觉得倒三角美观,还嘲笑过 Lua 里有很多很大的由 end 构成斜边的倒三角呢。但是也没觉得有什么问题。GNU 那种风格才会觉得有问题。
    kn007
        76
    kn007  
       2015-06-04 08:21:05 +08:00
    一般
    if ()
    exit

    if(){
    ...
    exit
    }

    习惯问题吧,如果没有大括号,就觉得下句就结束了(习惯问题)
    dslwind
        77
    dslwind  
       2015-06-04 08:46:07 +08:00 via Android
    Python党笑而不语
    exoticknight
        78
    exoticknight  
       2015-06-04 08:50:14 +08:00
    能够用格式工具统一的问题就不要自寻烦恼
    rayyang88
        79
    rayyang88  
       2015-06-04 09:30:25 +08:00
    因为Go不这样写会报错编译不过。。
    Hyperion
        80
    Hyperion  
       2015-06-04 09:37:57 +08:00 via Android
    坚决换行,我就喜欢...
    yibin001
        81
    yibin001  
       2015-06-04 09:46:08 +08:00
    golang就是这么要求的。。。。不这样写报错。
    pljhonglu
        82
    pljhonglu  
       2015-06-04 09:49:53 +08:00
    节省垂直空间,代码到处是空行,阅读的时候狂滚鼠标滚轮,而且一屏还看不了多少有用的代码,多抓狂啊。

    现在的编辑器本身就带括号匹配,很容易就找到 block 了
    lvfujun
        83
    lvfujun  
       2015-06-04 09:56:32 +08:00
    @MrGba2z 你考虑过后面维护你代码的童鞋么.
    原型代码为了容易DEBUG和易读性都是换行写的.到了代码封装上线的时候才会用工具去掉换行.你们的professor和大牛这么写......恩我不多说......很多牛逼的人都是不考虑别人的.
    lvfujun
        84
    lvfujun  
       2015-06-04 09:56:47 +08:00
    @lincanbin 你比较适合用Py
    babyname
        85
    babyname  
       2015-06-04 09:58:18 +08:00
    }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
    节约浏览空间和纸张
    willbin
        86
    willbin  
       2015-06-04 10:02:12 +08:00
    首先, 必须有括号(没啥好处, 但不这样做有坏处)
    第二,尽量换一行(好处:想把判断条件忽略时, 直接把if行注释就行, 如果括号在同一行就呵呵了)
    iwinux
        87
    iwinux  
       2015-06-04 10:05:04 +08:00
    另起一行太丑
    DingSoung
        88
    DingSoung  
       2015-06-04 11:23:16 +08:00
    换行太丑 +1
    ivenvd
        89
    ivenvd  
       2015-06-04 12:06:49 +08:00
    1. 我总是有编辑器提示。
    2. 另起一行太丑。
    ikaros
        90
    ikaros  
       2015-06-04 12:13:50 +08:00
    golang强制要求不换行,而且看起来挺美观的,就一直这样写了
    chisj
        91
    chisj  
       2015-06-04 12:16:36 +08:00
    与kernel保持一致风格,习惯了而已,并没有什么好处。就像要另起一行又有什么好处?
    101
        92
    101  
       2015-06-04 12:31:09 +08:00
    所以说不要再搞党争了,一命呜呼啥也没用
    littleshy
        93
    littleshy  
       2015-06-04 12:55:32 +08:00
    我随便,只是vs帮我格式化好了。
    wizardoz
        94
    wizardoz  
       2015-06-04 13:28:30 +08:00
    @21grams 其实我永远觉得显示器不够大。原来想把显示器竖起来用,后来发现竖起来分屏用太窄了。
    FrankHB
        95
    FrankHB  
       2015-06-04 20:25:31 +08:00
    @lilydjwg 好吧,漏了,\)的前面得是(for|while|if).+。我也不用单行块也不接受自己乱加;,所以没这类问题。
    另外-Wall应该还是基于语义的,如果循环条件带副作用可能靠不住。

    倒三角的评论应该分开回复……
    GNU风格的最明显问题在于,它让制表符宽度一旦不是特定的一些预设值看起来就很糟糕,还不如都空格算了。

    @chisj 都是习惯没错,但硬要说成一回事,“并没有什么好处”,不符合事实。
    另起一行在习惯以外的好处,上面至少已经有人说了两个:人肉匹配块的边界更快;临时注释if等方便。(不管时常进行这些操作是不是习惯,对习惯或不习惯的用户来说效果应该都是类似的。)
    而不另起一行的好处,也有提到了两个:节约行数;避免手贱错误地插入分号之类。
    但是我已经指出过后者的这些理由很不一样:节约行数很不彻底,明显不如}}}};即使能减少一些具有良好编码习惯的用户很少发生的输入错误,也远不如另外进行语法检查靠谱。
    所以我仍然好奇习惯以外到底有什么决定性优点。
    vjnjc
        96
    vjnjc  
       2015-06-04 20:35:13 +08:00
    主要就是减少代码行数,少一行{就多一行有效代码在视野里。
    nilbot
        97
    nilbot  
       2015-06-04 22:48:29 +08:00   ❤️ 1
    原来B语言有出现过一个设计,不用分号当句子(statement)结尾,那么从语法上来说花括号为了不产生歧义就不能另起一行了,后来C语言并没有坚持这种设计。实际上Ken后来还是觉得原来的设计好,这就是为什么Go强迫花括号不能另起一行:分号没有了。
    alphonsez
        98
    alphonsez  
       2015-06-05 01:04:08 +08:00   ❤️ 1
    写C#就另起一行,写Java就不另起一行,写C++就看最近用的是C#还是Java
    lzjun
        99
    lzjun  
       2015-06-05 01:11:16 +08:00
    MrGba2z
        100
    MrGba2z  
       2015-06-05 01:11:29 +08:00 via iPhone
    @lvfujun 当初我纠结的时候特地看了看Google的C++规范 他们就是不换行的
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3020 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 52ms · UTC 13:59 · PVG 21:59 · LAX 05:59 · JFK 08:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.