使用不同字体区分变量名和表达式 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
这是一个专门讨论 idea 的地方。

每个人的时间,资源是有限的,有的时候你或许能够想到很多 idea,但是由于现实的限制,却并不是所有的 idea 都能够成为现实。

那这个时候,不妨可以把那些 idea 分享出来,启发别人。
megakusa
V2EX    奇思妙想

使用不同字体区分变量名和表达式

  •  
  •   megakusa 2020-05-28 07:30:02 +08:00 via iPhone 3506 次点击
    这是一个创建于 1961 天前的主题,其中的信息可能已经有所发展或是发生改变。

    听了内核恐慌和字谈字畅合作的最新一期节目:《字谈字串(九)名名之中》,谈到为了防止变量名和表达式相混淆,操作系统在用户为文件名命名时要制定限制,比如不能用斜杠、反斜杠等字符做文件名。

    而用户在制定函数名时也需要使用诸如驼峰命名或下划线等方式来避免出现空格。那么我在思考能否发明一种编程语言,其表达式与变量名采用不同的字体。使用一个快捷键来切换两种输入模式,比如当需要打变量名的时候,切换为斜体字体,其余则为普通字体。

    如此一来我们就可以使用自然语言来命名函数名,用户在重命名文件名的时候也不再需要有那些符号限制。对于代码可读性和操作系统的人性化很有帮助。

    P.S. 我不是学技术的,只是提出一个不成熟的脑洞,别喷我……

    15 条回复    2020-06-05 14:17:11 +08:00
    jugelizi
        1
    jugelizi  
       2020-05-28 07:40:47 +08:00 via iPhone
    不是程序员你瞎操心
    cissoid
        2
    cissoid  
       2020-05-28 07:44:28 +08:00 via Android
    字符编码和字体样式是两码事
    megakusa
        3
    megakusa  
    OP
       2020-05-28 07:46:26 +08:00 via iPhone
    @cissoid Unicode 里有现成可用的数学斜体字符
    yidinghe
        4
    yidinghe  
       2020-05-28 07:54:05 +08:00 via Android
    语言本身只能包含语法,不能包含字体。在语法足够清晰的前提下,IDE 可以为不同的语法元素配置不同的字体。几乎所有的 IDE 都已经支持这么做了。
    yidinghe
        5
    yidinghe  
       2020-05-28 07:57:11 +08:00 via Android
    https://gitee.com/yidinghe/codes/7jgxdcr8v4smew2b1ft6i92/raw?blob_name=%E6%97%A0%E6%A0%87%E9%A2%98.png

    以这张图为例,类型、方法和变量用三种不同的颜色区分开,可以很大的提升阅读效率。
    XanderChen
        6
    XanderChen  
       2020-05-28 07:59:01 +08:00 via Android   1
    你说的那叫富文本,已经出现很久了。

    而且常规字体和斜体字混排对代码可读性一丁点的帮助都没有。

    至于操作系统对文件名仅有的几个符号的限制…我觉得不值一提…
    驼峰命名或者是连字符分割恰恰是为了提高代码可读性,而不是避免代码中出现空格,因为不是避免出现空格,而是编译器规定了不能出现空格。

    你要是想在代码里加空格,不如想想怎么写个编译器,但是我觉得…这么麻烦的事…没人会做…
    megakusa
        7
    megakusa  
    OP
       2020-05-28 08:01:37 +08:00 via iPhone
    @yidinghe 我知道语法高亮,那是 IDE 的事情。但是代码本身还是相同的英文字母,所以空格 /特殊符号不能有,否则会和表达式相混淆。但既然 Swift 都支持用 Emoji 命名了,能不能直接在底层就弄两种字体来解决我上面描述的问题?
    churchmice
        8
    churchmice  
       2020-05-28 08:05:54 +08:00   1
    这个想法妙啊

    不同字体底层对应的是同一个 unicode,只是渲染上面不同
    megakusa
        9
    megakusa  
    OP
       2020-05-28 08:09:51 +08:00 via iPhone
    @XanderChen ok,我了解... 其实就是觉得既然 Apple 一直在追求那种人性化的改进,也把不允许出现在文件名中的限制努力减少,但还是不允许出现某些特定字符。感觉我这个似乎能彻底解决这问题
    leoleoasd
        10
    leoleoasd  
       2020-05-28 08:10:03 +08:00   2
    @megakusa #7 支持 emoji 命名的语言本身就支持用 unicode 数学符号命名, 缺点是可能 ide 不能正确渲染.
    megakusa
        11
    megakusa  
    OP
       2020-05-28 08:14:52 +08:00 via iPhone
    @churchmice 感觉这想法得专门往 unicode 里加一块专门显示代码的字符
    vk42
        12
    vk42  
       2020-05-28 08:27:14 +08:00
    这明显是伪痛点。你是想要搞一套单独的字符编码把英文字母重新定义一遍然后靠字体不同来区分?来你给我说说“0O1Il”这些字符分别是啥?嫌不够乱么还?
    yidinghe
        13
    yidinghe  
       2020-05-28 08:33:05 +08:00 via Android
    我就不该回这个贴
    daniaoren
        14
    daniaoren  
       2020-05-28 09:52:07 +08:00
    @yidinghe 心疼一波,回复得太认真了
    DoodleSit
        15
    DoodleSit  
       2020-06-05 14:17:11 +08:00
    字体不就是图片咯
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1243 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 17:19 PVG 01:19 LAX 10:19 JFK 13:19
    Do have faith in what you're doing.
    ubao 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