• 请不要在回答技术问题时复制粘贴 AI 生成的内容
qinxi
V2EX  ›  程序员

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

  •  
  •   qinxi · Dec 19, 2016 · 22926 views
    This topic created in 3607 days ago, the information mentioned may be changed or developed.

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

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

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

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

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

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

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

    这仍然只是冰山一角.

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

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

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

    Supplement 1  ·  Dec 20, 2016
    更糟心的是,给我的代码跟服务器上的对不上.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    让你丫的再注入
    q397064399
    q397064399
    Dec 19, 2016
    74
    @so898 现有的防注入的方案一大堆,没必要
    raincious
    raincious
    Dec 19, 2016
    75
    @so898

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

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

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

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