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

刚入职,遇到这样的代码,怎么办...

  •  
  •   qinxi · 2016-12-19 15:19:00 +08:00 · 20300 次点击
    这是一个创建于 2932 天前的主题,其中的信息可能已经有所发展或是发生改变。

    两周前来的初创公司,当时来面试的时候说之前的 代码是外包写的,我已经有心理准备了.

    但是却没想到,居然这么渣.

    这只是冰山一脚,for 循环用的出神入化,sql 拼的清新脱俗,

    没有用户登陆认证的说法,只需要传 userId 来识别用户身份,

    没有任何安全意识,用户列表直接返回了用户的所有信息,包括手机号 密码(明文).

    没有订单概念,微信支付只负责生成订单 id,不保存,支付宝由客户端自己生成订单(私钥当然也在 app 啦~)支付成功后由客户端直接提交 userid,money 直接存放数据库..

    数据库有一个查询要 14 秒 ,居然还不建索引,不优化.不过想想 之前的 sql,也就明白了

    这仍然只是冰山一角.

    负责人不懂技术,现在技术只剩下两个 ios 和我了(说是目前不打算做 android)

    现在年底了.工作不太好找.不造该咋办了.

    工作正好2年半,不过学历是大专

    第 1 条附言  ·  2016-12-20 10:42:25 +08:00
    更糟心的是,给我的代码跟服务器上的对不上.

    我说一次.然后联系之前的人压缩给我,并说:这次肯定是最新的.

    然而 我还能发现 服务器有的功能我本地并没有.......

    这不是我想要的生活.先投简历.今天跟老板说
    133 条回复    2017-01-02 10:46:17 +08:00
    1  2  
    Miy4mori
        1
    Miy4mori  
       2016-12-19 15:25:04 +08:00 via Android
    大兄弟,赶紧另谋出路吧!
    qinxi
        2
    qinxi  
    OP
       2016-12-19 15:27:32 +08:00
    @Miy4mori 但是年底不太好找.唉
    Miy4mori
        3
    Miy4mori  
       2016-12-19 15:29:09 +08:00 via Android
    @qinxi 如果有实力的话可以慢慢重构,不过风险太大还没好处,可以先混着投简历……
    zhuangzhuang1988
        4
    zhuangzhuang1988  
       2016-12-19 15:32:36 +08:00
    我草, 网站 /api 在哪里, 可以测试注入了
    775229836
        5
    775229836  
       2016-12-19 15:37:17 +08:00
    我就看看不说话,你加油吧
    ipconfiger
        6
    ipconfiger  
       2016-12-19 15:38:07 +08:00
    外包的不就这样子了么
    helloccav
        7
    helloccav  
       2016-12-19 15:40:22 +08:00
    如果老板能认识到之前的代码多么烂并肯定你的能力与工作,那还是可以待下去的,否则就走人吧
    dapeng
        8
    dapeng  
       2016-12-19 15:40:42 +08:00
    我也要尝试下注入玩玩
    murmur
        9
    murmur  
       2016-12-19 15:41:33 +08:00
    绝佳的新人练手网站
    lusyoe
        10
    lusyoe  
       2016-12-19 15:41:42 +08:00 via iPhone
    我这也差不多啊,刚入职发现项目连 MVC 都没划分,业务逻辑加数据库查询全部写在 Struts 的 Action(Controller)中。。
    qinxi
        11
    qinxi  
    OP
       2016-12-19 15:42:55 +08:00
    @zhuangzhuang1988 根本就不需要人刻意注入, 上周他们说报错了.我一看.他们的参数有个 King's College London .我摊手,他这个 hibernate 封装是那个外包公司自己的.没有源码,只有 jar.

    数据库密码 root root,刚入职时候跟我说数据库天天崩,要重启...后来我查到是被黑了,告诉他们,他们说 以前数据被清空过....那居然还没人管...
    chocotan
        12
    chocotan  
       2016-12-19 15:46:28 +08:00
    面试的时候得了解清楚
    我待的第一家公司也不比楼主现在的好到哪里去......
    sorcerer
        13
    sorcerer  
       2016-12-19 15:47:02 +08:00 via iPhone
    @lusyoe 我这边自己写内部小系统没仔细划分 service 层和 dao 层。貌似你们更绝...
    sagaxu
        14
    sagaxu  
       2016-12-19 15:48:50 +08:00
    永远不要接盘外包代码,一帮月薪 10k 左右的人能写的出能用的代码吗?
    lijsh
        15
    lijsh  
       2016-12-19 15:50:18 +08:00   ❤️ 11
    我比你惨,几个月前 CTO 拉了个前端架构师写了个项目后来让我接手,好家伙,完全不搞模块化,变量、函数挂在 windows 上,明明引入了 Vue.js 还是大量 jQuery 操作 DOM ,异步状态也混乱,用 setTimeout 解决异步变量依赖……

    有两次我实在引不住了,直接拉他过来吐槽,然后这个项目完了后我被炒了。

    呵呵。
    fwrq41251
        16
    fwrq41251  
       2016-12-19 15:50:37 +08:00
    你们的数据库似乎还有三种命名风格,驼峰,下划线,全小写。。
    先在公司划一划,等明年换工作吧。
    qfdk
        17
    qfdk  
       2016-12-19 15:52:16 +08:00 via Android
    告诉我 哪个公司 我绝对不会去注册 免得出现在 xxlove2017 数据库中
    qinxi
        18
    qinxi  
    OP
       2016-12-19 15:56:56 +08:00
    @lijsh 哈哈哈哈哈哈哈 666
    xrlin
        19
    xrlin  
       2016-12-19 15:59:28 +08:00 via iPhone
    666, 绝佳网络攻击练手网站(⁎⁍̴̛ᴗ⁍̴̛⁎)
    VaneHay
        20
    VaneHay  
       2016-12-19 16:00:02 +08:00
    等签完字,马上离职.也是外包公司,干了半年,真心累了.不过不在帝都,魔都
    yanzixuan
        21
    yanzixuan  
       2016-12-19 16:00:04 +08:00
    @helloccav 估计老板就是被忽悠的命。
    malkavia
        22
    malkavia  
       2016-12-19 16:00:43 +08:00   ❤️ 2
    @sagaxu 10k 月薪的躺着中枪了...
    qinxi
        23
    qinxi  
    OP
       2016-12-19 16:01:11 +08:00
    @fwrq41251 没法划水,任务清单老板都打印了.就我一个人做服务端,我划了都没人干活了.
    scys
        24
    scys  
       2016-12-19 16:07:21 +08:00
    楼主你去的是技术公司?
    还是去销售公司?
    qinxi
        25
    qinxi  
    OP
       2016-12-19 16:10:39 +08:00
    @scys 一个初创公司.社交属性的
    ilanyu
        26
    ilanyu  
       2016-12-19 16:14:23 +08:00 via Android
    厉害了我的玺
    Bown
        27
    Bown  
       2016-12-19 16:17:01 +08:00
    start size returnType 这是 IDEA 的什么插件吗
    robinshi2010
        28
    robinshi2010  
       2016-12-19 16:19:52 +08:00
    求问给多少钱才把你骗去的。
    Heinz
        29
    Heinz  
       2016-12-19 16:20:26 +08:00 via iPhone
    心疼
    qinxi
        30
    qinxi  
    OP
       2016-12-19 16:20:29 +08:00
    @Bown IDEA 最新版自带的
    qinxi
        31
    qinxi  
    OP
       2016-12-19 16:23:19 +08:00
    @robinshi2010 15 ...是不是很没出息
    itqls
        32
    itqls  
       2016-12-19 16:27:50 +08:00
    @qinxi 15 可以了...今年不景气呀
    wupher
        33
    wupher  
       2016-12-19 16:29:49 +08:00
    能说说是哪家初创公司么?帮它做个安全测试。
    qinxi
        34
    qinxi  
    OP
       2016-12-19 16:37:01 +08:00
    @wupher 那还是算了,出事了 不还是得找我.
    TIGERB
        35
    TIGERB  
       2016-12-19 16:38:31 +08:00
    开辟一片属于你的天地吧~
    SunnyCoffee
        36
    SunnyCoffee  
       2016-12-19 16:46:11 +08:00
    这是练习重构的好机会
    AltairT
        37
    AltairT  
       2016-12-19 16:50:08 +08:00 via iPhone
    只加功能少多事,你们头也不懂,你做好事也不一定领情的,以后出了问题都是你的锅😂
    annielong
        38
    annielong  
       2016-12-19 16:50:38 +08:00
    for 用的真是出神入化,
    yunying
        39
    yunying  
       2016-12-19 16:53:05 +08:00
    @lijsh 你去反映代码烂,反倒你被抄?快点把这个公司的名字爆出来,让我们笑一下
    irainsoft
        40
    irainsoft  
       2016-12-19 16:55:05 +08:00
    哈哈哈哈千万别把网址漏出来否则肯定一堆人想下手

    for 循环用的出神入化,sql 拼的清新脱俗 这句好顺口 2333333
    Rice
        41
    Rice  
       2016-12-19 16:56:41 +08:00
    去年我做的公司就是这样,连我个前端都看出他数据库和后台有问题了,赶紧找了个借口跑了。
    coderluan
        42
    coderluan  
       2016-12-19 17:08:30 +08:00
    从市场需求角度来说,很正常,先和公司反映一下,把主要问题和风险指明了,保留邮件,防止背锅,剩下的看公司决定。
    dreamwar
        43
    dreamwar  
       2016-12-19 17:15:08 +08:00
    @lijsh 心疼你
    Mogugugugu
        44
    Mogugugugu  
       2016-12-19 17:15:54 +08:00
    外包都是这种代码....开发速度至上,老板等不及,客户也等不及。这很正常的,很多都是代码生成器直接生成的。。。
    Email
        45
    Email  
       2016-12-19 17:16:23 +08:00   ❤️ 2
    ```
    for (int i = 0; i < 1000; i++) {
    save(); //存一千次 保证存成功
    }
    ```

    我又想起了这一段代码. for 循环用的出神入化
    chuanqirenwu
        46
    chuanqirenwu  
       2016-12-19 17:22:54 +08:00
    以前做过一个小外包,原则是只保证程序正常情况下不出问题,至于异常处理,安全性处理什么的不在考虑范围内。
    KentY
        47
    KentY  
       2016-12-19 17:27:45 +08:00   ❤️ 17
    不知道是不是我老了, 观念跟不上年轻人了, 我对这个贴有个别的看法.
    1, 外包的不一定差, digg 也是外包做的. 不要觉得是外包做的 就"有思想准备"
    2. 某种角度说, 解决问题的能力是自己价值的体现的一种方式. 这可以是漂亮地实现一个复杂功能, 也可能是把烂摊子规整好.
    3. 就问题本身, 当你在某领域的知识比别人深厚了, 看别人的工作, 就会发现非常多的问题, 首先一个锻炼自己的事就是, 不抱怨,不笑话别人. 要么指导别人, 要么改正 /进别人的工作. 这个说来容易, 其实很难做到, 包括我自己. 你可以注意观察下, 公司里的高深人士, 很少抱怨, 笑话别人的工作, 反而都是那些还不错 ,或者半瓶醋的水平人, 才做这样的事. 你接了一些不好的代码, 这的确头疼, 你可以大概归纳一下, 代码里你能发现的问题, 问题可能导致的后果以及你能想到的改进方案, 并且做个评估, 时间啊, 精力等. 然后跟你的领导谈一下, 说明如果投入这个会对将来有什么好处, 让领导决定是否要改进. 自己态度上是一个积极态度, 这并不是说要让领导看到你积极, 而是自己真要积极. 不要怕担责任, 你想, 你心里各行各业的牛人, 没有怕担责任的, 都是勇于担当. 主要审视自己能不能做好, 尽力去做到最好.
    当然, 如果对现在公司, 职位实在不满意, 可以考虑换工作.

    my 2 cents.
    wemore
        48
    wemore  
       2016-12-19 17:29:15 +08:00 via iPhone
    话说网站安全处理一般要干啥,用户输入的非法字符转码还有啥别的吗
    unknownservice
        49
    unknownservice  
       2016-12-19 17:29:53 +08:00
    给跪了,赶紧走,要不你要被毁了。。。
    tabris17
        50
    tabris17  
       2016-12-19 17:30:57 +08:00
    传说中的 1 分钱下订单吗?
    Sendya
        51
    Sendya  
       2016-12-19 17:31:48 +08:00
    @sagaxu 5K 工资看哭了
    uxstone
        52
    uxstone  
       2016-12-19 17:39:53 +08:00
    已经不错了,还好是 Java 写的,
    要是 PHP 写的就。。。。。
    775229836
        53
    775229836  
       2016-12-19 17:49:48 +08:00
    @sagaxu 不要用工资衡量啊,我 6K 也知道要预防这些常识问题
    flyingfz
        54
    flyingfz  
       2016-12-19 17:50:41 +08:00
    必须要和 老板讲清楚现在的系统的风险,以及你的意见。

    这是对你后面的工作负责(不论 是否 继续做下去), 同时也是对老板给你的工资负责。

    如果老板不重视你的意见,那只能说: 赶紧弃坑,否则最后会不欢而散。这样对谁都不好。
    sorra
        55
    sorra  
       2016-12-19 17:59:02 +08:00
    @qinxi 一看代码就是做 SNS 的。
    如果工资满意,可以向老板说明现状,让他支持和认可你接下来的工作。虽然既有的代码不好,但毕竟后端架构归你管了,是个练手机会。一切都做好了还有你什么事呢?
    如果你费力不讨好,那就不值得。
    amery2010
        56
    amery2010  
       2016-12-19 18:00:19 +08:00
    年末其实工作并没有想象的那样难找,你如果真心不想留在这公司的话,可以试着先更新网上的简历,边上班边找工作。
    lijsh
        57
    lijsh  
       2016-12-19 18:01:58 +08:00
    @yunying 其实公司不差,主要是新来的 CTO 有问题。
    guyskk
        58
    guyskk  
       2016-12-19 18:03:43 +08:00 via Android
    如果公司业务上确实有前景, boss 也愿意听你的建议,这就是你提高的机会,代码烂不烂都是次要的。
    否则,现在就开始找下家。
    sagaxu
        59
    sagaxu  
       2016-12-19 18:15:40 +08:00
    @Sendya 创业元老和体制内的别闹
    heeexy
        60
    heeexy  
       2016-12-19 18:28:20 +08:00
    讲真 要从外包公司离职. 这半年写的代码都是楼主讲得这种#24 怎么办...
    nimdanoob
        61
    nimdanoob  
       2016-12-19 18:50:09 +08:00
    如果公司确实还不错的话,看下工程量大不,可以跟领导商量选择重写
    fantastM
        62
    fantastM  
       2016-12-19 18:59:28 +08:00
    我这情况差不多。项目工程里存在一个反编译代码的包。包里类名、变量名清一色 abcd......老大说这是零几年写的,因为丢失了源码,所以只能反编译。
    loveminds
        63
    loveminds  
       2016-12-19 19:05:55 +08:00
    @qinxi 和乌云见到的某个地方的公安网的某数据库差不多, sa 123456 并且允许外部连接....
    lain0
        64
    lain0  
       2016-12-19 19:09:53 +08:00
    网站是什么,我去注入~
    ttop5
        65
    ttop5  
       2016-12-19 19:13:07 +08:00 via Android
    赶紧跑路别回头😂😂
    q397064399
        66
    q397064399  
       2016-12-19 19:16:15 +08:00
    这个时候不正是 展示你 24 种设计模式 以及 重构大法的能力么?
    wohenyingyu02
        67
    wohenyingyu02  
       2016-12-19 19:17:24 +08:00 via iPhone
    @sagaxu 没到 10K 的路过……
    q397064399
        68
    q397064399  
       2016-12-19 19:18:21 +08:00
    做业务的公司,代码肯定是会根据需求变动的,找外包写,必然是怎么快怎么来,有的时候 复制粘贴 能搞定就搞定了,写的人倒是爽了, 3 个月之后,自己反正基本上就别人填坑了,,一般自己写的代码 3 个月内,配合注释还是能看懂的,超过 3 个月,基本上是要出事的,就等着重构吧
    cxbig
        69
    cxbig  
       2016-12-19 19:19:00 +08:00
    烂摊子多少都会有,解决这个问题也是个人价值的体现。只要公司认可你的工作,不会把责任无脑的归于你就行。
    我现在的公司就是第一个 release 外包的,这 3 年来我们逐步把烂代码都干掉。头 2 年我们天天骂外包公司,近一年我们很少再提及这事了。
    q397064399
        70
    q397064399  
       2016-12-19 19:21:10 +08:00
    另外 外包本来就是一次性的玩意,外包一个人月,基本上是怎么快,就怎么来,谁管那么多,只要上线能运行就 ok

    你真要外包一个人年,人家肯定是要好好写的,提前做好设计 为未来做准备,毕竟是自己挖的坑,还得自己来填
    q397064399
        71
    q397064399  
       2016-12-19 19:22:27 +08:00
    @cxbig 骂外包,没必要吧,毕竟钱摆在那里,你要真外包一个人年,人家也会好好写
    tedzhou1221
        72
    tedzhou1221  
       2016-12-19 19:34:38 +08:00 via iPhone
    谁告诉你年底不好找工作的?

    我两天面试了 3 家就找到了
    so898
        73
    so898  
       2016-12-19 19:34:41 +08:00
    上面一排人在说 SQL 注入啥的,我突然想起来之前和朋友一起研究的解决 SQL 注入的好方法——

    把所有标点符号都改成全角字符

    让你丫的再注入
    q397064399
        74
    q397064399  
       2016-12-19 19:44:47 +08:00
    @so898 现有的防注入的方案一大堆,没必要
    raincious
        75
    raincious  
       2016-12-19 20:04:58 +08:00
    @so898

    要是这样简单就安全了,那这方案为什么没有成为最佳实践?

    实际的问题要复杂得多,比如:
    http://stackoverflow.com/a/12118602/3628434
    so898
        76
    so898  
       2016-12-19 20:35:22 +08:00
    @raincious 有种东西叫做/\
    全角符号真万能啊……
    Simpleyyt
        77
    Simpleyyt  
       2016-12-19 20:44:05 +08:00
    @lain0 跟我想的一样
    jy01264313
        78
    jy01264313  
       2016-12-19 20:58:08 +08:00
    其实你换一个工作看起来也是差不多的
    unicorn1390
        79
    unicorn1390  
       2016-12-19 21:05:14 +08:00
    和我大一时候写的一毛一样。。
    xssing
        80
    xssing  
       2016-12-19 22:30:03 +08:00
    从安全🐶的角度看有
    1. 越权操作漏洞
    2.SQL 注入漏洞
    3.支付漏洞

    。。。。。。。。。。。。。。
    anthozoan77
        81
    anthozoan77  
       2016-12-20 00:02:15 +08:00
    看了大家的评论,默默地面壁...
    everettjf
        82
    everettjf  
       2016-12-20 00:05:17 +08:00
    看老板是否重视你,你是否有权利决定重构,你是否有魄力重构,重构后老板是否认可。传说滴滴最初不也是外包的么,代码也很烂~
    airyland
        83
    airyland  
       2016-12-20 00:07:39 +08:00
    代码烂还可以稍微理解,这是严重的安全问题啊
    bearzk
        84
    bearzk  
       2016-12-20 00:20:35 +08:00
    14 秒太严重了 换地方吧 这坑不好填啊
    wjm2038
        85
    wjm2038  
       2016-12-20 01:08:13 +08:00 via Android
    @qfdk xxlove 是啥。。
    yangqi
        86
    yangqi  
       2016-12-20 01:12:03 +08:00
    这不正好是你的机会么,如果人家什么都写的很规范很标准了,还要你干嘛?
    mathgl
        87
    mathgl  
       2016-12-20 01:17:52 +08:00
    @sagaxu 外包现在工资有 10K 了。
    glogo
        88
    glogo  
       2016-12-20 01:27:34 +08:00
    大兄弟赶紧另谋出路吧
    practicer
        89
    practicer  
       2016-12-20 07:23:14 +08:00 via Android
    先把网站搞挂掉,再自己修好,引起领导重视?
    Felldeadbird
        90
    Felldeadbird  
       2016-12-20 09:08:03 +08:00
    这种代码你是改不了的了。除非重构,否则是不给你换的。
    dong3580
        91
    dong3580  
       2016-12-20 09:21:29 +08:00
    @Felldeadbird
    当年我都是一个方法一个方法的改,真的,可以改的,比如新增功能,你可以把那块的某些方法注释一下,稳定运行几周再切换到自己的方法并及时测试.

    @qinxi
    这绝对是一个好的练手机会, 依靠那些代码,学到了很多东西,有些方法我根本没用过,这样一来,我能用的更好.
    专业填坑户,现在基本不怕大多数坑.
    拼接 sql 真是算是好了,要是代码生成器生成的,你连 sql 都找不到,拼出来的方法都能让你头晕.
    wupher
        92
    wupher  
       2016-12-20 09:46:04 +08:00
    @qinxi 求教,原文中 “参数有个 King's College London ” 。 "King's College London" 是什么梗? 应该不是指国王学院吧。
    robinshi2010
        93
    robinshi2010  
       2016-12-20 09:54:18 +08:00
    @qinxi 并不会。
    建议跟头沟通好这个事儿吧。先把问题说清楚确保他认识到问题的严重性。然后再共同定制修改计划。别闷头干出力还不被理解就好。
    raiz
        94
    raiz  
       2016-12-20 09:59:54 +08:00
    这代码好面熟,好像是我写的 : p
    zlawliet
        95
    zlawliet  
       2016-12-20 10:08:23 +08:00
    见怪不怪·...
    qinxi
        96
    qinxi  
    OP
       2016-12-20 10:46:46 +08:00   ❤️ 1
    @wupher 要查询一个学校的人.就有参数 是 伦敦大学国王学院....英文的 king's 就触发了注入
    qinxi
        97
    qinxi  
    OP
       2016-12-20 10:53:14 +08:00
    @qinxi 好像叫 伦敦国王学院....不是伦敦大学..尴尬
    zpf124
        98
    zpf124  
       2016-12-20 10:53:59 +08:00
    @Bown 新版 idea 默认会显示出调用方法的形参。
    m1a0
        99
    m1a0  
       2016-12-20 11:00:47 +08:00   ❤️ 1
    @wupher 应该是里面的单引号把 SQL 闭合了, 之后就执行错误了。
    yivanus
        100
    yivanus  
       2016-12-20 11:27:15 +08:00
    @raiz 赶紧回去 填坑。。。。哈哈。
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2760 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 11:51 · PVG 19:51 · LAX 03:51 · JFK 06:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.