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

编写代码的工作区文件路径需要全部保持纯英文么?

  •  
  •   chiyagao · 54 天前 · 4160 次点击
    这是一个创建于 54 天前的主题,其中的信息可能已经有所发展或是发生改变。

    2202 年了,想当年,小时候的老师一直说,为了避免不必要的 bug ,从电脑操作系统根路径一直到项目文件夹,全部用英文写。

    win 我好久没用了不知道,mac 我好像遇见过会把中文名文件转成拼音形式,暂时没写过同拼音不同中文字的文件名,大概。
    linux ,这种 centos ,逼格上去了,还是用英文吧。

    想问问大家,现在编写代码的工作区文件路径需要全部保持纯英文么?

    我还是看中文字,定位文件夹速度快、、、莓办法 银不了 尽梨了。
    56 条回复    2022-08-13 15:45:07 +08:00
    eason1874
        1
    eason1874  
       54 天前
    用英文,加起来也没几个单词
    tomczhen
        2
    tomczhen  
       54 天前 via Android   ❤️ 1
    不考虑跨平台带来的文件系统差异造成的文件路径合法字符集、编码不一样这个问题,现代开发语言只要合理的使用是不用特别在意这块的。

    但是你架不住各种不正确的文件路径操作代码,毕竟很多人就是真的是:在我机器上是好的。
    Ediacaran
        3
    Ediacaran  
       54 天前   ❤️ 10
    需要,这样在终端打路径的时候不用切输入法
    rpman
        4
    rpman  
       54 天前 via iPhone   ❤️ 4
    用英文路径可以节省 debug 时间
    用中文路径可以帮人 debug 🐶
    GP1
        5
    GP1  
       54 天前
    单词就那么几个,用多了也就那样,说白了还是你不肯走出舒适区,那你说个屁。
    cmdOptionKana
        6
    cmdOptionKana  
       54 天前
    自己一个人用的环境可以用中文字,毕竟好不好用自己说了算,不会影响别人,遇到问题也能自己解决。
    horseInBlack
        7
    horseInBlack  
       54 天前
    以前学 Python2 、PHP5 等的教程,都要学如何设置字符编码避免乱码,现在好像不用这样了

    不过操作 Linux 服务器的时候,shell 的中文注释啥的会乱码,可以专门设置但是没必要,一般就简单英文描述下就行了

    不过我倒是遇到一个问题,告诉别人 Chrome 设置启动项没生效反而有了新的 bug ,网上、周围的人都没遇到过
    后来一个经验丰富的老大哥发现,那个用户设置启动项的时候用户资料文件夹中间是空格,可能是因为这样设置没成功,我们自己都习惯文件夹命名用 - 或者 _ 没注意到
    renmu
        8
    renmu  
       54 天前 via Android
    要,因为如果有不兼容的,你得花非常多的时间来调试。
    weichengwu
        9
    weichengwu  
       54 天前 via iPhone   ❤️ 33
    LotusChuan
        10
    LotusChuan  
       54 天前
    个人习惯吧,如果乐于用中文那应该也会乐于解决用中文可能带来的问题。用英文对我来说主要是输入法切换的问题,图形化界面还不明显;但是命令行就影响比较大了,比如我在用 vim 编辑 main.cpp ,然后想打开./测试.cpp ,那我至少得按两次中英文切换(一次切成中文输入“测试”,一次切回英文输入“.”),在频繁切换文件的时候影响还是挺大的。
    Leoooooo
        11
    Leoooooo  
       54 天前
    用单词方便你我他
    nightwitch
        12
    nightwitch  
       54 天前
    在 Windows 平台想要正确处理非 ASCII 字符串是个比较麻烦的事情,尤其是包含非 BMP 平面的字符,有的 API 即使是 Unicode 版本也只能正确处理 BMP 平面内的字符,比如 lstrlenW 函数计算 `𪚥👿🇨🇳`字符串的长度,会返回 8
    zhangxzh
        13
    zhangxzh  
       54 天前 via Android
    随便去用,仍不支持的东西,仍有兼容性问题的东西,扔了吧
    Vegetable
        14
    Vegetable  
       54 天前
    @weichengwu 太真实了,这玩意翻译一遍没人认识
    cmdOptionKana
        15
    cmdOptionKana  
       54 天前   ❤️ 1
    @weichengwu 中文真的非常清晰简洁。
    MajestySolor
        16
    MajestySolor  
       54 天前
    用中文字符必然出稀奇古怪的问题,不是这里出问题就是那里出问题,不是今天出问题就是明天出问题。
    spediacn
        17
    spediacn  
       54 天前
    做外包的时候一个全角字符都能惹出巨大麻烦,不仅仅不能用中文写,而且还得关掉输入法。全程英文,如果可以的话,操作系统都用英文,这样就不会忘记设置字符集惹出麻烦。有些老外真的烦,用 utf-8 死活不认,非得 iso-8859-1
    js8510
        18
    js8510  
       54 天前
    你老师是过来人,他说的对。
    我想起来一个故事:
    我在外企,都是英文。又一次肯定是个中国同事在提交的 PR 里面加了个中文逗号:"," 。结果把某个自动集成平台搞挂了。。因为后端的 sql database 默认是不支持中文字符的。

    结果两个外国人 debug 几个小时没搞明白知道我出现一眼就看出来 , != ,
    seanzxx
        19
    seanzxx  
       54 天前
    用英文主要是速度快呀,中文还要用输入法,多麻烦。
    kkocdko
        20
    kkocdko  
       54 天前
    对于用户,我们要支持空格 /非 ascii 路径。
    对于程序员,一般都会习惯用 ascii 非空格路径,terminal 里头敲路径方便。
    FrankHB
        21
    FrankHB  
       54 天前
    该用啥用啥,只要你清楚代价。
    最大化可移植性不是目的,否则干脆把 MS-DOS 的 8.3 也支持了,但一般显然没必要。
    编码么同一个环境通常不是问题,但不排除比较极端的例外(比如 Windows 下升级 hg 版本可能活久见乱码)。
    不过就算不考虑这些,只要可能换系统玩,文件系统大小写问题也够你喝一壶了。( NTFS 现在虽然支持大小写敏感,但得单独设置,而且设置以后像一些 ps1 命令直接罢工了。)

    @nightwitch 非 BMP 问题还不如甩锅给 Unicode 自己。一开始就妄想 BMP 解决问题,直接搞出 UCS-2 半吊子,还要 UTF-8 擦屁股,又回过头另外擦出个 U+10FFFF 的 magic number 。这还没完,刷版本到处给跟不上的兼容,Han unification 漏去重之类的添乱不说,UTS#51 什么屑玩意儿……甚至还能遇到 zzzq 问题( https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p1949r7.html#all-emoji-become-excluded-instead-of-just-some ),xswl……
    即便是 BMP 在这里也还有问题,比如有多少用户敢确信清楚自己用的环境对 NFD/NFC/NFKC 的支持?能塞零宽和控制字符进去么?(虽然 OP 只是说中文基本不用管这破事。)(其实控制字符嘛,就是 ASCII 也有这个问题,但很容易限制;关键差别是 Unicode 的破烂即便不考虑版本都不是能指望人能枚举完的。)
    akring
        22
    akring  
       53 天前
    @Vegetable #14 Lingdaotong - Gongzhongcanyu - Gongzhongtongji
    JustSong
        23
    JustSong  
       53 天前 via Android
    @Ediacaran 不知道有没有可以补全拼音成中文的 shell 插件
    bear1man
        24
    bear1man  
       53 天前
    太有必要了,你完全不知道什么时候会出幺蛾子。
    个人习惯,在 win 下,不止是工作路径,你的 username 最好也是英文,如果你登录微软账户,保证你的微软账户昵称是英文,不然它会给你改名。而且我个人是会打开全局 utf-8 功能的。尽管开了之后会有部分应用乱码。

    以上都是我用 win 多年总结的经验。顺便夸一句 mac os 在字符编码方面做的不错了,完全没遇到过乱码 /中文路径问题。
    murmur
        25
    murmur  
       53 天前
    要的,我真遇到过中文路径的 bug
    nothingistrue
        26
    nothingistrue  
       53 天前
    只要是纯的,不管是纯英文还是纯中文都是可以的。但是,现在没法纯中文。平常所说的中英文问题,实际上是纯英文跟中英混合的对比问题,自然是能用前者就用前者。
    jackmod
        27
    jackmod  
       53 天前
    要看写什么代码,以及编译系统是怎么处理路径的。
    顺便,转移到 linux 上面反而无需在意路径用什么字符了
    ClydeX
        28
    ClydeX  
       53 天前
    会遇到一些问题,但绝大部分都有解决方法,没啥
    Leonard
        29
    Leonard  
       53 天前
    自己一个人开发随便,否则尽量不要用中文路径
    zyy314680012
        30
    zyy314680012  
       53 天前 via Android
    反正我的 code 目录基本都英文的
    HeFengzz
        31
    HeFengzz  
       53 天前
    安装一些软件或游戏的时候,你不用英文(或带有空格)可能找不到游戏存档
    HeFengzz
        32
    HeFengzz  
       53 天前
    虽然有些无聊,但我觉得能给你一些参考

    [你的文件和目录的命名习惯是怎样的?]( https://www.v2ex.com/t/858464#reply21)
    xiaojun1994
        33
    xiaojun1994  
       53 天前
    两年前我用 flutter 遇到过中文目录不行的问题
    mknightoy
        34
    mknightoy  
       53 天前
    现在项目都是 utf-8 了用中文没什么问题,老项目除外

    另外别用中文的时候顺手输入了全角符号会坑死人
    chiyagao
        35
    chiyagao  
    OP
       53 天前
    哇咔咔咔
    haodingzan
        36
    haodingzan  
       53 天前
    @weichengwu 以前我坚持纯英文,点进来也是劝 OP 用英文,看了你的图才意识到我错哪了……
    cssk
        37
    cssk  
       53 天前
    那必须的,comment 都英文,打起来不用切换输入法
    7gugu
        38
    7gugu  
       53 天前
    如果要经常用终端切换路径的话,还是用全英文比较好,不用切换输入法这么麻烦
    akira
        39
    akira  
       53 天前
    即使是 2022 年了 ,你的 XP 用户 还是在用着 XP ,你的 IE6 用户还是在用着 IE6
    世界变了很多,但其实又没有
    AoEiuV020CN
        40
    AoEiuV020CN  
       53 天前
    我不用纠结,因为 android studio 压根不支持中文路径,
    coala
        41
    coala  
       53 天前
    就刚刚, 我 Nacos 还在中文目录启动失败找不到配置文件呢...

    我之前还有一个全角 A 引发的 Bug , 两 A 有啥区别? 给你看看

    苏A, 苏 A

    看出来差别了吗? 两个 A 不一样的..
    Jooooooooo
        42
    Jooooooooo  
       53 天前
    搞个最新的 emoji
    newmlp
        43
    newmlp  
       53 天前
    用中文纯属没事找事
    sutra
        44
    sutra  
       53 天前
    命令行还是英文更快。
    functioncloud
        45
    functioncloud  
       53 天前   ❤️ 1
    前段时间在 win 平板上装罗技驱动,安装器死活下载不了,后来发现是中文 username 导致找不到路径
    DonDonc
        46
    DonDonc  
       53 天前   ❤️ 1
    @coala 一直觉得某些领域还是留给 ASCII 就够了,特别是听过某些 URL 诈骗案例后。

    A U+0041 Latin Capital Letter A
    A U+FF21 Fullwidth Latin Capital Letter A
    Α U+0391 Greek Capital Letter Alpha
    А U+0410 Cyrillic Capital Letter A
    ᴀ U+1D00 Latin Letter Small Capital A
    ᴬ U+1D2C Modifier Letter Capital A
    𝙰 U+1D670 Mathematical Monospace Capital A
    𝖠 U+1D670 Mathematical Monospace Capital A
    𝖠 U+1D5A0 Mathematical Sans-Serif Capital A
    adoal
        47
    adoal  
       53 天前
    @tomczhen 还有文件名长度问题……以前遇到一个例子,各业务合作单位交过来的抗疫报道照片、视频等资料,没有统一标准,有些比较文青的拍摄者在文件名里会写很长的介绍,写得还很生动。拷在 NTFS 移动硬盘上没问题,要 FTP 上传到 Linux 服务器就不行。为啥呢,因 Linux VFS 的文件名在语义里不包括编码,就是 as-is bytes ,用 byte 为单位计长度的,整个路径全长最多 PATH_MAX 个 byte……而 NT 是 UTF-16 编码的,以 UTF-16 单元为单位计长度。即便不考虑 NT 可以用 UNC 的超长路径,只看 MAX_PATH 的限制,在 NT 上可以的,到 Linux VFS 就严重超长。
    duke807
        48
    duke807  
       53 天前 via Android   ❤️ 2
    中文文件名,zip 压缩包跨平台会乱码
    libook
        49
    libook  
       53 天前
    在 Unicode 支持好的环境、语言、框架上没必要完全杜绝使用中文,但是要不要用、什么时候用、怎么用得需要根据项目具体情况来看,评估一下用中文的收益和代价是啥。
    janxin
        50
    janxin  
       53 天前
    之前确实会有问题的,现在嘛...
    nick0x01
        51
    nick0x01  
       53 天前
    如果做到了行业的顶尖水平,并且能维持住地位,我想用什么就用什么,用户必须跟着学。
    如果没有,行业大佬用什么我用什么。
    killeder
        52
    killeder  
       53 天前 via Android
    不是闲的没事干或者不想自找麻烦就用英文,并且尽量不要用空格
    dcsuibian
        53
    dcsuibian  
       53 天前
    用中文怕的不是自己程序写错,而是 IDE 、构建工具等出问题,这种时候是解决不了的。

    但如果大家都不用中文,那么这种问题就不会得到开发者的重视。
    SeanTo
        54
    SeanTo  
       52 天前 via Android
    有必要。需要考虑的不仅仅是操作系统的问题,还有应用软件。我很早就习惯用英文名字,实在不会写的单词用拼音。有很多软件字符处理不好,但自己习惯直完全没有问题就发现不了,但架不住别人给你的文件会出现中文甚至含空格的情况。用过一个叫 EasyBuilder 的触摸屏开发环境,中文名打开编辑保存都没问题,一编译就通不过,查了很久才发现是文件名的问题。编译实际上是另外的程序完成的,开发程序的人可能并未考虑到字符兼容性问题,平常发现不了。
    gefranks
        55
    gefranks  
       52 天前 via iPhone
    用英文并且路径里面不要带空格,避免出现莫名其妙的问题搞半天
    lfzyx
        56
    lfzyx  
       52 天前
    所以现在的 00 后是连英文都退化成这样了?还把中文转成拼音,笑死
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   854 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 47ms · UTC 21:19 · PVG 05:19 · LAX 14:19 · JFK 17:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.