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

老哥们,我想问下,对于开发过程中遇到的一些问题,你根据你的经验知道这么做是不对的,但是你因为能力问题又说不上来哪里有问题,比如:登录密码用中文,后端给前端字段传 null 过去,就像这种问题,都是怎么处理的呢?(上面的问题只是举例作用哈)

  •  
  •   t298 · 358 天前 · 2963 次点击
    这是一个创建于 358 天前的主题,其中的信息可能已经有所发展或是发生改变。
    29 条回复    2023-12-05 23:35:25 +08:00
    Rache1
        1
    Rache1  
       358 天前
    可是你举例的这两个都不算是问题
    Yuhyeong
        2
    Yuhyeong  
       358 天前
    开发是可以 debug 的,用 debug 不是犯罪
    javalaw2010
        3
    javalaw2010  
       358 天前
    查资料,明确到底哪里不对,为什么不对,然后再去说服对方。
    sanmaozhao
        4
    sanmaozhao  
       358 天前
    经验知道是不对的
    这种情况自己下去仔细想想,应该能想到具体有问题的点
    拿着这个点再去和对方沟通

    如果只是觉得不对,那是不行的,因为对方也可以觉得对啊
    这样空对空沟通,没有能落地的问题点,沟通起来没任何意义
    abersheeran
        5
    abersheeran  
       358 天前
    你说不上来哪里不对,说明你压根不懂为什么不要这么做,你只是在背课文而已,而且背的是不一定对的课文。
    zb1141920796
        6
    zb1141920796  
       358 天前
    建议可以 google 或者 gpt 先把你的问题描述一下,例如,xxx 这样有什么比较大的问题和缺陷,请列举一下?然后根据得出的结果,再结合自己的思考,说出能让人信服的结论,在去讨论
    maocat
        7
    maocat  
       358 天前 via iPhone
    登录接口很多要加密,加密算法对中文有一些问题,还得特殊处理
    wanmyj
        8
    wanmyj  
       358 天前
    如果是小厂或者业务优先的大厂,很可能压根不注意这些,只要通过测试就可以。

    如果不幸进入了很关注 code 质量的大厂,那你就会发现,定位+修一个问题可能只需要一个小时,但是 PR 的 description 要花一天时间,要写的逻辑严谨且来源有据,有时候光找文档就好花几天时间。遇到使用很新的技术,还要自己去 GitHub 发 issue 等开发回复再贴到自己 PR 里。

    不存在因为能力问题而说不上来的问题,只有还没找到的文档说明,至少我遇到的都是这样。
    nerkeler
        9
    nerkeler  
       358 天前
    我也经常碰到,明显感觉这样有问题,但是找不到规范在哪
    sdjl
        10
    sdjl  
       358 天前
    这个问题的本质问题是:开发团队是否有“尊重常见经验做法”的共识。

    如果没有这个共识,开发团队必然会进入焦油坑,如果反对这个共识,就不是具体事情的问题,而是人有问题。
    palx
        11
    palx  
       358 天前
    团队应该没有一个懂技术的产品经理,开发团队也没有一致性规范。
    darkengine
        12
    darkengine  
       358 天前
    感觉有问题 - 求证(例如谷歌搜“登录密码用中文”)- 总结

    这样才能让经验沉淀下来
    wu67
        13
    wu67  
       358 天前
    你要知道, 大部分团队都是草台班子...追求的是代码能跑就行.

    当然针对你说的,
    中文做密码其实没问题, 本质上都是字符串, 当然别整什么火星文或者那些看起来像但不是的字

    传 null 其实也不算错, 只是懒. 当然对前端来说, 挺烦的, 把后端的数据规范处理工作丢给了前端做
    tool2d
        14
    tool2d  
       358 天前
    @sdjl 人没问题,只有合适不合适。

    有些公司对于代码规范异常严格,比如 google 的 c++规范,你提交的代码,所有的标准异常都不能使用。

    代码规范只是把所有人的编程水平,取了一个平均值。
    fregie
        15
    fregie  
       358 天前
    如果你找不出理由证明这个经验的意义,说明你的经验不一定是对的.
    很多常见的"经验"在工程角度来看,都是错的
    比如保持代码的"优雅",追求代码量少
    比如做 web( http)开发的第一步是选一个 web 框架
    比如要把两段看起来差不多的代码抽象成一个函数(实际上可能这两段代码表达的过程是不同时,只是恰好大部分代码相同)
    darkengine
        16
    darkengine  
       358 天前
    @wu67 同一个汉字不同编码怼进去计算 md5 是一样的吗?
    lstz
        17
    lstz  
       358 天前 via iPhone
    没什么不对,有开发标准就行
    8355
        18
    8355  
       358 天前
    能做的只有默默提升自己的能力,更换这个环境。
    bingo084
        19
    bingo084  
       358 天前
    @wu67 请教一下,后端给前端传 null 对前端来说有什么不方便的吗?如果这个值确实是 null 该怎么传?直接不传这个字段还是?
    tyrantZhao
        20
    tyrantZhao  
       358 天前
    不如直接问 gpt
    296727
        21
    296727  
       358 天前   ❤️ 1
    @bingo084 在前端来说,null 是有值,但是值是 null ,有点类似于 false ,undefined 是没有这个东西,如果这个值确实是 null 就传 null ,没有就直接没这个 key (原来的我是这种想法,现在是怎么方便怎么来,都是混日子,能解决问题就行)
    icyalala
        22
    icyalala  
       358 天前
    @darkengine 现在不是 utf8 一统天下了吗,这个非要支持倒也问题不大。
    只是后面还跟着密码输入框也是全程星号不可见、密码输入的时候也提供输入法、密码强度等级没定义没法法算,等等这些麻烦事情。
    ChefIsAwesome
        23
    ChefIsAwesome  
       358 天前 via Android   ❤️ 1
    @bingo084 比方讲一个函数的某个参数是可选的,传 null 过去,跟不传是两回事。还有类型是数组,传个 null 过来,前端没判断就调数组方法遍历,报错。
    调第三方 api 的时候,后端给的值直接传过去,就容易错。
    howfree
        24
    howfree  
       358 天前
    和自己和解,当时如果是带新人,还是要谨慎回答新人的问题,我当初带人的时候,感觉压力也很大,不是教他们怎么做,而是要比较学术的解答他们的提问
    darkengine
        25
    darkengine  
       358 天前
    @296727 没有值的时候不返回字段是最坑的了,用 TypeScript 一堆的 amount?: number, name?: string 。 每次用要特么判空。
    296727
        26
    296727  
       358 天前
    @darkengine 有方便的地方就会有麻烦的地方,什么办法都不是绝对的好
    NoOneNoBody
        27
    NoOneNoBody  
       358 天前
    还是应该说出所以然
    汉字,如果保持统一安全编码作为密码是没问题的

    1.GBK 的中文低位含有 5c 也就是\字符,如果不谨慎会有转义风险
    2.如果 hash 是通过 bytes 完成的,那中文字符串转换 bytes ,编码不同会有不同结果,ASCII 可视字符基本不存在编码问题
    3.某些生僻字在 unicode 高位段,不在常用字符集段落里面,客户端是可以选择字体的,用户准确显示到这个生僻字并顺利输入完全有可能,但传到服务端会不会出问题就难说了
    rarema
        28
    rarema  
       358 天前
    1. 开发规范
    2. 退而求其次,看看别人怎么说的,看看优秀的开源项目怎么解决的
    2. 退而求其次,协商,你和你对接的小伙伴内部达成一致即可
    3. 退而求其次,不必苛求一定要合理,先把事做完,后续观察这样做的好处坏处就有经验了
    akira
        29
    akira  
       358 天前
    把遇到的问题记录下来啊。。形成文档 。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1013 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 21:51 · PVG 05:51 · LAX 13:51 · JFK 16:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.