V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
xujunfu
V2EX  ›  问与答

python 代码居然被写成类 C 代码

  •  
  •   xujunfu · 2016-08-26 14:57:42 +08:00 · 4048 次点击
    这是一个创建于 3004 天前的主题,其中的信息可能已经有所发展或是发生改变。

    刚来新公司,被要求接手下面这样的代码(很多语句后面都有分号), 被要求花两天的时间把项目上线,我内心是....,

      if body_js.__contains__("cltnms"):
            cltnms = body_js["cltnms"];
            mobiles = body_js["mobiles"];
            cltids = body_js["cltids"];
    
            cltnms = strip_string(cltnms);
            cltids = strip_string(cltids);
            mobiles = strip_string(mobiles);
    
            if cltnms != "" and cltids != "" and mobiles != "":
    
                mobiles_list = [];
                mobiles_list.append(mobiles);
                param = {"name": cltnms, "id": cltids, "cell": mobiles_list};
    
                p_res = self.proc_data(reqid, appid, erpid, cltids, cltnms, mobiles, param);
                out_res["配偶"] = p_res;
    
            else:
                self.logger.error("配偶信息为空. appid : %s", appid);
    
    20 条回复    2016-08-27 16:17:16 +08:00
    2225377fjs
        1
    2225377fjs  
       2016-08-26 15:06:34 +08:00
    业务代码 写成这样算是挺工整负责的,分号好像不影响啥吧,你不写不就是了啊。。。
    xujunfu
        2
    xujunfu  
    OP
       2016-08-26 15:16:26 +08:00
    @2225377fjs , 我知道分号没影响的啊, 但是一看到这样的项目就没有心情,再去修改了,更不要说里面逻辑有多混乱.
    fjzjk
        3
    fjzjk  
       2016-08-26 15:17:53 +08:00
    没啥啊,这样不是很好理解。对于我这样 c#的人来说
    theoractice
        4
    theoractice  
       2016-08-26 15:24:16 +08:00
    LZ 为何说这是类 C 代码?除了分号还有其他理由吗?我也觉得跟 c#代码更沾边一些。如果是我跟 3 楼这样的人,心情估计是变好了才对。
    9hills
        5
    9hills  
       2016-08-26 15:46:35 +08:00
    cltnms , mobiles , cltids 同样的逻辑重复三次好难受
    dragonszy
        6
    dragonszy  
       2016-08-26 15:48:39 +08:00
    可能原来只有 8 行,然后 KPI 有一项代码行数,重构成这样了。。
    xujunfu
        7
    xujunfu  
    OP
       2016-08-26 16:01:23 +08:00
    @9hills , 这只是代码中的一小段, 项目里还有更恐怖的
    skydiver
        8
    skydiver  
       2016-08-26 16:29:07 +08:00
    随便找个代码格式化工具不就解决了?
    mdzz
        9
    mdzz  
       2016-08-26 16:49:23 +08:00
    之前的同学可能是写 PHP 的(逃
    levn
        10
    levn  
       2016-08-26 16:52:12 +08:00
    没看出哪里恐怖
    Lonely
        11
    Lonely  
       2016-08-26 16:54:12 +08:00 via iPhone
    不知道楼主写的是啥样,放出来瞧瞧
    wolegequ
        12
    wolegequ  
       2016-08-26 16:54:32 +08:00
    so, how to do it in py ?
    alexapollo
        13
    alexapollo  
       2016-08-26 16:57:54 +08:00   ❤️ 1
    %s/;$//g
    taozle
        14
    taozle  
       2016-08-26 17:53:15 +08:00
    > body_js.__contains__("cltnms")
    ...
    tobyxdd
        15
    tobyxdd  
       2016-08-26 17:58:26 +08:00
    不就是有分号么。。至于逻辑我觉得挺清晰易懂的
    mcfog
        16
    mcfog  
       2016-08-26 19:02:47 +08:00
    楼主是没见到过把 C 代码写成类 Python 的样子的吧
    htfy96
        17
    htfy96  
       2016-08-26 19:13:37 +08:00 via Android
    不知道你们有没有看过 SymEngine 的代码…愣是把 C++写出了 Python 味:
    - &&全用 and 代替
    - 所有类都继承一个基类,里面搞了一堆 py 的 magic method
    alexapollo
        18
    alexapollo  
       2016-08-27 16:13:36 +08:00
    @htfy96 我还有专门一个库是做这种转换的,但有些地方还是很难做,比如 in 语法
    htfy96
        19
    htfy96  
       2016-08-27 16:16:00 +08:00 via Android
    @alexapollo 能分享一下吗?
    alexapollo
        20
    alexapollo  
       2016-08-27 16:17:16 +08:00   ❤️ 1
    @htfy96 可以,我找时间开源出来
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2929 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 07:19 · PVG 15:19 · LAX 23:19 · JFK 02:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.