V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
Makabaka01
V2EX  ›  程序员

现在极其厌恶弱类型语言,弱类型就不适合中国的职场环境

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

    别的团队交接过来一个十几万行的 Python 项目,要重构成 Java ,我真的吐了,一点文档也没有。

    Python 里面大量的访问各种 RPC 接口,关键是特别喜欢自己转换 rpc 返回的结构,还非要用字典去自定义结构!

    现在好了,到处都是字典 + 字符串取值,这个字符串 key 还是尼玛自己定义的,和 idl 都对不上,得自己去代码里面到处翻找,看看到底是哪个接口返回的。

    最离谱的是命名还会骗人,弱类型就算了,好歹命名漂亮点吧。"xxx_list" 是个字符串我真的服了,甚至就连 "user" 也能是个字符串……


    现在国内的现状就是领导疯狂催,程序员疲于奔命,谁天天给你写文档,代码迭代几次连自己都不认得了,还搞弱类型,万一熟悉项目的人走了后面的人根本没办法看,都都读不懂。再加上英语水平有限,命名真的是一塌糊涂,更加重了理解问题。

    第 1 条附言  ·  166 天前
    不要纠结 Python 是强类型还是弱类型了,突然歪楼了…… 这不是重点。虽然 Python 确实是强类型语言,是我帖子里写错了。

    我想表达的重点是没有类型对代码可维护性的严重破坏。

    之前在 Rails 社区里看到过一句话,大意是动态语言项目需要你深入的理解每一个细节,才能快速高效的迭代项目,很多项目作者维护了十几年,甚至可以说已经成为了生命中的一部分。

    问题是现在大部分人都是前人挖坑后人填坑,拉完屎山过两年拍拍屁股就走人了,没有类型、没有单测,什么都没有,后人很可能直接一个趔趄就掉进坑里摔死了……
    119 条回复    2024-07-21 21:55:05 +08:00
    1  2  
    hoopan
        101
    hoopan  
       165 天前 via Android
    跟语言无关,主要看写法规不规范,编程思想成不成熟。弱类型有足够多的灵活性,但会被人滥用。有些人连面向对象都不懂,你指望他能写出什么好代码。
    zeusho871
        102
    zeusho871  
       165 天前
    ‘没有类型、没有单测,什么都没有,后人很可能直接一个趔趄就掉进坑里摔死了……’
    类型可以 hint 单测没有不是项目最初开发的问题吗。。。
    Sayuri
        103
    Sayuri  
       165 天前 via Android   ❤️ 1
    写 typescript 的人也 any 满天飞,没办法。
    有时候洁癖起来,写 string | number 也算很烂的类型,一定要写成 T extends xxx ? string : number 才算满足洁癖。
    clemente
        104
    clemente  
       165 天前
    加个 trace 看一下不就完了
    winterbells
        105
    winterbells  
       165 天前 via Android
    最近也天天改 Python ,吐血了
    鬼知道传进来的参数是什么东西,特别是整个项目就没几行注释,方法随便一点几百个引用,点开发现就是名字一样而已
    gray0
        106
    gray0  
       164 天前
    如果我掏出 Map map 和 JSONObject ,阁下又该如何应对?
    pangzipp
        107
    pangzipp  
       164 天前
    给多少人资源重构该项目?
    每个时代都有其客观存在的历史条件
    laike9m
        108
    laike9m  
       164 天前
    你们公司都开始重构了,说明 Python 写的东西早就帮你们赚到钱了,还有啥抱怨的
    tsanie
        109
    tsanie  
       164 天前
    @DOLLOR #42

    歪个楼,c#确实可以通过 "NaN will never equal to itself" 来通过等式判断。
    double x = double.NaN;
    Console.WriteLine(x != x); // true
    当然正规来说还是得通过 double.IsNaN(x)来判断
    dongzhuo777
        110
    dongzhuo777  
       164 天前
    @DOLLOR 有一个最大的天坑,
    Double x = null;
    List<Double> list = new ArrayList<>();
    .....
    list.add(x);
    ....
    然后 后面操作 list 的适合就 GG 了。我可以打包票 90%的人写代码都不会去校验这个 null
    shawnbluce
        111
    shawnbluce  
       164 天前
    @walkeronway #7 我也这么干过,当时刚工作没多久,被一个老员工说「你这啥语法啊,Python 不能这么写」🤷 (就是那种一年工作经验用了十年的老员工)
    djasdjds
        112
    djasdjds  
       164 天前
    print 只能,接手都这样
    ala2008
        113
    ala2008  
       164 天前
    说明工作量够了,可以苟一波到年底
    nightcatlu
        114
    nightcatlu  
       163 天前 via Android
    现在不是 openai 直接生成,工作量省 90%吗
    jones2000
        115
    jones2000  
       163 天前
    @Sayuri js 本来就可以是任意类型,为什么要非要强制指定类型,这么好的功能直接就给废了。哎。
    feiyan35488
        116
    feiyan35488  
       163 天前
    掉进 java 的屎山,你也爬不出来的
    CyouYamato
        117
    CyouYamato  
       163 天前
    我刚入的小公司就是用 express+js 做后端。
    方法命名还是些什么 getDataList1,getDataList2 。。
    代码合并直接给测试环境 root 用户,自己 ssh 连上去合并发布,逆天。。
    接口类型验证全是方法里自己手动校验,技术 leader 也不知道 JsLint 、EsLint 、Prettier 是什么。
    另外提了个过度方案 ts 和 js 共存,然后逐步改造,被否。主要就是技术 leader 阻碍不让干,然后老板也就不同意。一开始老板还是开心讨论的!
    懒得管了,代码我也一起跟着摆烂就完事。公司完全不在乎代码规范,想推行规范化,流程化,完全推不动。严重怀疑 leader 防御性编程。不是开的工资比我前司高 40%多早跑了。
    感觉他们应该不会用 v2 ,不担心熟人~
    lambdaq
        118
    lambdaq  
       161 天前
    你们俩打一架

    /t/1057942 被 go 语言的 json.Marshal 恶心到了
    Makabaka01
        119
    Makabaka01  
    OP
       158 天前
    @lambdaq 这都不是一个问题……
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1040 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 20:40 · PVG 04:40 · LAX 12:40 · JFK 15:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.