和主管为一个接口输出真吵了一天,搞得都想离职,求怎么破 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
HackerPainter
V2EX    程序员

和主管为一个接口输出真吵了一天,搞得都想离职,求怎么破

  •  
  •   HackerPainter 2019-03-19 11:10:18 +08:00 39257 次点击
    这是一个创建于 2398 天前的主题,其中的信息可能已经有所发展或是发生改变。

    主管想用的接口输出

    { "status" : "错误码", "error" : "错误消息", ...... } 

    楼主想用的接口输出

    { "errorCode": "错误码", "errorMsg" : "错误消息", ...... } 

    我在想一个接口至于争吵一天吗?最后我妥协了,现在感觉好想离职,请问怎么破

    第 1 条附言    2019-03-20 21:47:08 +08:00

    首先非常感谢各位社友的回复和讨论,在看各位社友的评论中学到了很多东西,果然三人行必有我师焉!

    • 社区有些社友可能认为这种接口争吵没啥意义,随便定义一个就行,但如果这个接口被几千人使用甚至被几万人使用,那就得对这个接口好好设计了。如果连自己都对自己提供的接口不保持敬畏,那就别指望用户对你提供的接口保持敬畏,对于用户的抱怨牢骚那只能全部接下。过去几年里很多用户对我们提供的接口出现过各种各样的抱怨(每个用户都有一套自己心目中的接口,就像社区内留言出现很多接口定义),如果接口提供方的接口与接口使用方心目中的接口不一样就会出现或多或少有抱怨和吐槽。为了尽量让用户用的爽,减少用户的抱怨,所以就和主管对接口进行了争吵(善意的争吵),至于想离职是其它方面的原因;

    • 有些社友可能认为和主管争吵不太好,主管想做成什么样自己就做成什么样。但你真认为这种状态好吗?即使你照做了,你觉得主管认可你吗?在互联网环境下,得多与主管、同事讨论讨论问题,有些难解的问题就是在讨论中产出解决方案的。过去几年和主管同事争吵过无数次甚至拍桌子,差点打起来,但这种都是idea的碰撞,只有碰撞中才能产出好的idea,其实碰撞完后同事主管都会私下交流这个都是各自想法,不代表其他含义,不要往心里去。对于主管要你做啥你就做啥,那主管招你有何用,主管可以招任何一个人来替换你,这样你的自身竞争力在哪里。一个程序员要往高处发展,要学会自己去发现问题去解决问题,而不是等待主管安排问题,比如主管交给你一个手工线上部署任务(需要经常部署),结果你每次都可以手工无故障的部署完成,但这种结果是主管希望的吗,主管再找一个人也可以无故障的手工部署,但如果你把手工线上部署做成自动化工具一键部署,可以节约时间且无风险,这样在主管看来你就是不可替代,能自己对问题提出解决方案;

    • 程序之美应该包含编程之美、接口之美和测试之美。如果有一段程序编程无规范、接口随便定义,无单测和功能测试,让你去接手这段代码,你会怎么想?所以还是对接口保持敬畏之心,多花点时间定义接口,少花点时间答疑和听用户的抱怨;

    下面各出了很多社友的接口定义,可以供借鉴,排名不分先后,可以投票

    { "code": "错误码", "message": "错误消息" } 
    { "errno" : "错误码", "message" : "错误消息" } 
    { "status": "错误码", "error": "错误消息" } 
    { "status": "错误码", "msg": "错误消息" } 
    { "errKey": "错误码", "errMsg": "错误消息" } 
    { "status": "错误码", "error": "错误消息", "errorCode": "错误码", "errorMsg": "错误消息" } 
    { "statusCode": "错误码", "statusMsg": "错误消息" } 
    { "error_code": "错误码", "error_msg": "错误消息" } 
    436 条回复    2020-12-01 11:05:06 +08:00
    1  2  3  4  5  
    Jonz
        1
    Jonz  
       2019-03-19 11:12:29 +08:00   2
    主管设计的好像没问题把
    struggle001
        2
    struggle001  
       2019-03-19 11:12:53 +08:00
    你做的对,你主管有强迫症,直接怼他。
    way2create
        3
    way2create  
       2019-03-19 11:12:57 +08:00
    emmm
    muchewu
        4
    muchewu  
       2019-03-19 11:13:29 +08:00
    emmmmm,我得都行
    mydns
        5
    mydns  
       2019-03-19 11:13:45 +08:00   19
    我是主管 我选第一种
    bzzhou
        6
    bzzhou  
       2019-03-19 11:14:04 +08:00   3
    1. 是否是现在规范就是这样定义的,如果是,那么这个是你的问题。
    2. 为了这个小问题,都可以争吵一天,说明你们两沟通存在严重问题
    e32e32edsfs
        7
    e32e32edsfs  
       2019-03-19 11:14:40 +08:00   63
    就这都能吵一天,工作量不饱和啊。。
    deng1xia
        8
    deng1xia  
       2019-03-19 11:14:42 +08:00
    @mydns +1
    HackerPainter
        9
    HackerPainter  
    OP
       2019-03-19 11:14:57 +08:00
    @mydns 为啥第一种?对外输出的接口谁知道 status 是代表错误码
    ericguo
        10
    ericguo  
       2019-03-19 11:15:04 +08:00
    蛋疼
    sunyang
        11
    sunyang  
       2019-03-19 11:15:12 +08:00 via iPhone   3
    我觉得都行,但是主管说话要不好使的话,为啥起早贪黑想当主管?
    helionzzz
        12
    helionzzz  
       2019-03-19 11:15:45 +08:00
    你们公司是不是很闲天天没事做啊。。。
    raysonx
        13
    raysonx  
       2019-03-19 11:16:09 +08:00   2
    There are only two hard things in Computer Science: cache invalidation and naming things.
    -- Phil Karlton
    Banxiaozhuan
        14
    Banxiaozhuan  
       2019-03-19 11:16:29 +08:00
    我觉得你们两个都有问题,这种东西都能吵到要离职。。。
    朋友,喝杯咖啡,去看场电影。 回来再看,怎么最有利与双方就怎么用。
    AngryMagikarp
        15
    AngryMagikarp  
       2019-03-19 11:16:32 +08:00
    其实这个无所谓,不知道你们要争吵什么。不过我个人倾向第一种,第一种返回的是状态码,第二种返回的是错误码。
    tabris17
        16
    tabris17  
       2019-03-19 11:17:14 +08:00   5
    都让开,听我的

    {
    "errno" : "错误码",
    "message" : "错误消息",
    }
    fe619742721
        17
    fe619742721  
       2019-03-19 11:17:49 +08:00
    status 状态码也没啥问题,200 的情况下 也放在 errorCode 里吗?
    这种问题都能吵一天。。。
    tabris17
        18
    tabris17  
       2019-0319 11:18:04 +08:00
    这都能吵起来,说明你们工作不饱和啊
    luo123qiu
        19
    luo123qiu  
       2019-03-19 11:18:28 +08:00
    离职吧,我感觉你这公司离倒闭不远了~
    AndOne
        20
    AndOne  
       2019-03-19 11:18:42 +08:00 via Android
    @HackerPainter 他是主管
    ccoming
        21
    ccoming  
       2019-03-19 11:18:44 +08:00   3
    想问问 lz,成功的话,有没返回码?有的话,是不是又得另写一遍?
    CFO
        22
    CFO  
       2019-03-19 11:19:08 +08:00 via Android   1
    好好好 你说存 json 就存 json 吧
    ztyMCR
        23
    ztyMCR  
       2019-03-19 11:19:16 +08:00
    @tabris17 丢人
    pepesii
        24
    pepesii  
       2019-03-19 11:20:12 +08:00
    这都能吵起来,看来你们是真的闲啊
    taresky
        25
    taresky  
       2019-03-19 11:20:22 +08:00   3
    “(我)和主管为一个接口输出真吵了一天。”

    “我在想一个接口至于争吵一天吗?”

    话是你说的,事也是你干出来的。。。你说怪谁咯
    woodensail
        26
    woodensail  
       2019-03-19 11:20:46 +08:00   1
    status 没问题,0 表示正常,非 0 错误。符合从 c 以来的一贯传统
    zhuangzhuang1988
        27
    zhuangzhuang1988  
       2019-03-19 11:21:26 +08:00
    这不简单

    {
    "status" : "错误码",
    "error-msg" : "错误消息",
    ......
    }
    keepeye
        28
    keepeye  
       2019-03-19 11:21:32 +08:00   78
    {
    "code": 错误码(0 表示成功),
    "message": 错误消息,
    "data": 数据对象
    }

    不接受反驳
    tabris17
        29
    tabris17  
       2019-03-19 11:21:46 +08:00   1
    不过就事论事啊,如果这个返回是一般结果,而不是错误结果,那我还是支持 LZ 的方案。

    如果调用结果完全正确,返回一个 errorCode 岂不是滑稽
    HackerPainter
        30
    HackerPainter  
    OP
       2019-03-19 11:22:01 +08:00
    @AngryMagikarp 输出是错误码,不是状态码
    shihty5
        31
    shihty5  
       2019-03-19 11:22:11 +08:00
    看你们怎么定义这两个字段了。
    是只处理错误信息?
    还是包括成功,处理中等所有状态?

    这两点的不一致是争吵的缘由吧?
    loveour
        32
    loveour  
       2019-03-19 11:22:43 +08:00
    不懂为什么这个都能炒一天,也不懂为什么这种事情会被楼主认为涉及正确与否来否定主管的决定。
    ershisi
        33
    ershisi  
       2019-03-19 11:22:50 +08:00
    7 楼和 28 楼说的对。
    HackerPainter
        34
    HackerPainter  
    OP
       2019-03-19 11:23:16 +08:00
    @shihty5 只处理错误信息
    sonyxperia
        35
    sonyxperia  
       2019-03-19 11:23:37 +08:00
    这都能吵??????
    恕我直言
    bikingtarzan
        36
    bikingtarzan  
       2019-03-19 11:23:40 +08:00 via Android
    如果没报错,状态码好像要再写一套
    shakaraka
        37
    shakaraka  
    PRO
       2019-03-19 11:23:53 +08:00
    {
    'content': ...,
    'status': true || false,
    'code': 400500,
    'message': 'server error'
    }

    这样的话如果业务 code 是错误的话,提取 message 里面的东西就好了,如果你写了 errorMsg 如果请求正确回复,那么后台提示信息你不还是要用 msg 或者 message ?

    就按这个格式回复就行了,根据需要取值
    HackerPainter
        38
    HackerPainter  
    OP
       2019-03-19 11:24:06 +08:00
    @keepeye 挺好的
    daiyuok
        39
    daiyuok  
       2019-03-19 11:25:13 +08:00
    {
    "status" : "错误码",
    "error" : "错误消息",
    ......
    }
    1、正常来说,我也会选择第一种,status 可以作为错误码,也可以作为 200 正确码,如果你设置成 errorCode 正确码怎么标识!
    2、如果为了这个都能吵一顿,我觉得是闲的.2 个人沟通交流都存在问题,各打五十大板.
    stanley0black
        40
    stanley0black  
       2019-03-19 11:26:18 +08:00 via iPhone
    {
    status:”状态码”,
    msg:”错误信息”
    }
    x86
        41
    x86  
       2019-03-19 11:26:22 +08:00
    {
    "status" : "错误码",
    "msg" : "错误消息",
    }
    mscststs
        42
    mscststs  
       2019-03-19 11:26:41 +08:00
    你可以封装一下,把 status 和 error 转换成你想要的 errcode ……这样心理上应该会好受一点
    dishonest
        43
    dishonest  
       2019-03-19 11:27:43 +08:00
    {
    "error No.": 1,
    "Full error messages": "xxx"
    }

    建议用这个
    zxcvsh
        44
    zxcvsh  
       2019-03-19 11:27:57 +08:00 via iPhone
    这也能吵起来...
    那种昨天给你提需求隔天告诉你可以取消的...
    vovov
        45
    vovov  
       2019-03-19 11:28:54 +08:00 via Android
    我是主管我说了算
    Kinnice
        46
    Kinnice  
       2019-03-19 11:28:57 +08:00 via Android
    我也提一个
    error
    BCy66drFCvk1Ou87
        47
    BCy66drFCvk1Ou87  
       2019-03-19 11:29:45 +08:00 via Android
    不行了笑喷
    WhiteSaber
        48
    WhiteSaber  
       2019-03-19 11:30:33 +08:00   1
    {
    "success": true,
    "errorInfo": "",
    "errorInfoDTO": {
    "updateResultDTO": {
    "successful": false,
    "validationErrors": null
    }
    },
    "data": {
    }
    }

    //我司的坑爹封装
    awesomes
        49
    awesomes  
       2019-03-19 11:30:36 +08:00   1
    因为不管接口报错还是不报错 status 都能表示 , 而你的 errorCode 只能表示错误码,所以

    status: 200 表示正确

    status: 其它表示错误

    建议楼主多找找自己的原因
    darknoll
        50
    darknoll  
       2019-03-19 11:30:54 +08:00
    我一切都听领导的
    你这主管太弱了,管不住人啊
    jhsea3do
        51
    jhsea3do  
       2019-03-19 11:31:27 +08:00
    讨厌驼峰
    yimity
        52
    yimity  
       2019-03-19 11:31:56 +08:00
    这都能吵一天,真的是工作不饱和。
    我选第一种。因为会往 http status code 上靠,然后再加业务的 code。所以应该是状态,而不是错误,或者你说只有错误的时候才有 code ?
    SimbaPeng
        53
    SimbaPeng  
       2019-03-19 11:32:06 +08:00
    主管要统一规范有毛病吗?
    hodur
        54
    hodur  
       2019-03-19 11:32:10 +08:00
    我觉得主管的相对好一点,因为返回结果不一定只有错误,如果还有其他状态,难道要增加一个 otherCode ?
    Hoshinokozo
        55
    Hoshinokozo  
       2019-03-19 11:33:22 +08:00
    闲得慌,只要文档写好了,接口随他怎么定,爱咋定咋定,但是文档必须的得我写清楚
    Hoshinokozo
        56
    Hoshinokozo  
       2019-03-19 11:34:09 +08:00
    @Hoshinokozo 文档必须得给我写清楚
    dnsaq
        57
    dnsaq  
       2019-03-19 11:34:57 +08:00 via iPhone
    我选第一种
    Shook
        58
    Shook  
       2019-03-19 11:35:06 +08:00
    code: "0"',
    message: "",
    ...
    welkinzh
        59
    welkinzh  
       2019-03-19 11:37:16 +08:00
    我选 code 和 msg
    10Buns
        60
    10Buns  
       2019-03-19 11:37:31 +08:00
    真悠闲
    tabris17
        61
    tabris17  
       2019-03-19 11:39:30 +08:00
    真要严谨:

    如果返回成功:
    {status: 'success', payload: {.....}}

    如果返回失败:
    {status: 'error', payload: { errno: errno, 'message': 'error description' }}

    不过我更倾向用 HTTP Status Code 来返回执行状态
    glaucus
        62
    glaucus  
       2019-03-19 11:39:34 +08:00 via iPhone
    额......这个又没有谁对谁错,定一个标准不就好了?
    geelaw
        63
    geelaw  
       2019-03-19 11:41:03 +08:00 via iPhone
    所以“至于吗”楼主?

    另外说 error code 不能表示成功的情况的……只能说还处于字面理解的阶段。错误代码包含成功的代码。
    exceloo
        64
    exceloo  
       2019-03-19 11:41:05 +08:00
    楼上还真闲得慌讨论哪个好。
    这里的关键难道不是这种无关紧要的字段名,楼主也要怼自己主管,楼主是不是情商不够?就算你离职了,换家公司,不符合你的代码风格你也要提离职?
    gtanyin
        65
    gtanyin  
       2019-03-19 11:41:26 +08:00   1
    看看我司的
    {
    "code" : "错误码",
    "mesg" : "错误消息",
    }

    你们听过 mesg 吗??
    icyalala
        66
    icyalala  
       2019-03-19 11:41:40 +08:00
    按这种性格来说,不论楼主离不离职,只要楼主还没成为主管,都会再次遇到这种问题。。
    yuandfish
        67
    yuandfish  
       2019-03-19 11:43:20 +08:00
    如果这个接口只输出错误结果,那么"errorCode"的确比"status"合适。想到我之前也跟主管因为一些细节争吵过,尽管不认同他的做法,最终还是不得不妥协,现在,准备离职中
    SeaRecluse
        68
    SeaRecluse  
       2019-03-19 11:47:05 +08:00
    {
    "errKey" : "错误码",
    "errMsg" : "错误消息",
    }
    NotNil1
        69
    NotNil1  
       2019-03-19 11:47:32 +08:00
    @icyalala 成为主管之后,还是会和这样的手下吵个一天的
    ly4572615
        70
    ly4572615  
       2019-03-19 11:47:46 +08:00
    你主管好歹给你定规范,我这里主管天天玩游戏,项目我说了算
    ukyoo
        71
    ukyoo  
       2019-03-19 11:48:02 +08:00
    dto 一下
    gamexg
        72
    gamexg  
       2019-03-19 11:48:13 +08:00
    这个简单,你给他这样返回就好:

    {
    "status" : "错误码",
    "error" : "错误消息",
    "errorCode": "错误码",
    "errorMsg" : "错误消息",
    ......
    }
    HackerPainter
        73
    HackerPainter  
    OP
       2019-03-19 11:50:07 +08:00
    @ly4572615 多好,想怎么干就怎么干
    wolfie
        74
    wolfie  
       2019-03-19 11:50:07 +08:00
    {
    "status": "状态码",
    "errorCode": "错误码",
    "msg/errorMsg": "错误信息"
    }
    pmispig
        75
    pmispig  
       2019-03-19 11:51:36 +08:00
    有必要吗,大哥说咋弄就咋弄
    coosir
        76
    coosir  
       2019-03-19 11:52:08 +08:00   1
    {
    "code" : "状态码",
    "msg" : "消息",
    "data" : "数据"
    }

    别吵!
    其实公司内部统一就好,这有什么好吵的,要自己做主先自己努力当领导
    baicheng10
        77
    baicheng10  
       2019-03-19 11:53:29 +08:00
    算了算了,折中一下吧:
    {
    "statusCode" : "状态 /错误码",
    "statusMsg" : "状态 /错误消息",
    ......
    }
    kakudesu
        78
    kakudesu  
       2019-03-19 11:54:57 +08:00   4
    要不大家各让一步,这样来定义:
    {
    "cuowudaima" : "错误码",
    "cuowuxinxi" : "错误消息",
    ......
    }
    jxl
        79
    jxl  
       2019-03-19 11:55:39 +08:00
    {
    "code":状态码,
    "msg": "状态信息",
    "data": 数据
    }

    作为通用接口数据结构的话,不应该只有 error 信息的吧 也可以是操作成功之类的啊
    xiwangzishi
        80
    xiwangzishi  
       2019-03-19 11:55:52 +08:00
    ```
    {
    "code":0,
    "msg":"消息",
    "data":"数据"
    }
    ```
    newmind
        81
    newmind  
       2019-03-19 11:55:58 +08:00 via Android
    同楼上,用的 code,msg,data,简洁明了,不过楼主和主管的都没问题啊
    southsala
        82
    southsala  
       2019-03-19 11:56:20 +08:00
    对接过两位数公司的接口,基本每家都不一样,听你主管的吧,除非你当主管,计较这个没有意义。我这样不接受任何反驳。
    {
    "success": false,
    "msg": "系统错误",
    "code": 1002
    }
    kamal
        83
    kamal  
       2019-03-19 11:56:53 +08:00
    @gamexg #68
    {
    "status" : "错误码",
    "error" : "错误消息",
    "errorCode": "错误码",
    "errorMsg" : "错误消息",
    "errorcode": "错误码",
    "errormsg" : "错误消息",
    data:{}
    }
    shiguiyou
        84
    shiguiyou  
       2019-03-19 11:57:05 +08:00   1
    两个人都有问题。我要是主管,直接回一句,爱写写,不爱写我重新找个人。如果我是 lz,直接写,哪来那么多问题。
    sanqian
        85
    sanqian  
       2019-03-19 11:58:13 +08:00
    - -我这用这个
    {
    "code": "错误码",
    "msg": "错误消息",
    }
    index90
        86
    index90  
       2019-03-19 11:58:27 +08:00
    code 或者 number,是用来给研发用的,根据错误码反查常量表,再搜索到错误代码行。
    msg 或者 errorMsg,都是用来给调用方看的,例如给前端研发看,好让他们在不看代码的时候知道是什么错,例如少传了参数什么的,msg 我一般在接口层编写,与业务有关。

    如果是我设计,就是 code 和 message 两个字段,这样定义使用场景更广。和你主管的设计差不多,正如楼上有人说了,如果正常返回,难道也要用 errorMsg ?不知道楼主坚持自己的设计是出于什么原因。

    第二,因为这些小事争吵,技术人员里面很常见,这也是我很讨厌做技术的原因之一,总是为这些无聊的事情争吵。例如争论哪个语言好,都是屁股决定脑袋,研发人员更甚,研发人员的脑袋基本是贴在了自己的屁股上,写个代码还要写出优越感。
    reus
        87
    reus  
       2019-03-19 11:59:06 +08:00
    根本不是技术问题,而是权力斗争,类似皇权和相权的斗争。技术来看,两种都没什么区别。但是你可能觉得主管插手这种具体命名,不给你控制权,所以不爽吧,谁知道以后还会插手哪些事情呢。主管可能也觉得连命名一个 api 返回字段的权力都没有,很没面子吧。他不插手,或者你没所谓,就平安无事的。

    赶紧走啊,连这点事情都能吵起来,遇到更大的设计选择,还不得闹翻天。

    主管要么定好规范,大家遵守,要么不定规范,让大家自由发挥,自己不定规范,要靠吵架,无能。当然你这种死杠最后还妥协的,除了浪费大家的工作时间也没有其他用途了。
    sazn
        88
    sazn  
       2019-03-19 11:59:12 +08:00   1
    主管很有想法啊
    无论表达意思的广度,还是 json 长度,都是主管的占优耶
    dark3212
        89
    dark3212  
       2019-03-19 12:01:26 +08:00
    个人猜想:
    一开始是因为懒得改和强迫症吵起来了,双方互不妥协,越吵越厉害。
    到后面已经不是懒得改和强迫症的问题了,已经是面子问题,但是显然你没你主管面子大,你感觉受到了侮辱,所以想离职。
    所以这种小破事一开始就改了就行了,不就啥事没有了吗?
    lihongjie0209
        90
    lihongjie0209  
       2019-03-19 12:01:51 +08:00
    闲的蛋疼
    method
        91
    method  
       2019-03-19 12:02:23 +08:00 via iPhone
    主管的设计没啥问题啊
    lzhCoooder
        92
    lzhCoooder  
       2019-03-19 12:03:07 +08:00
    {
    "error_code": "错误码",
    "error_msg" : "错误消息",
    ......
    }
    fox0001
        93
    fox0001  
       2019-03-19 12:08:11 +08:00 via Android
    楼上的真闲…这种情况应该找架构师决定
    CSwater
        94
    CSwater  
       2019-03-19 12:08:27 +08:00 via iPhone
    @keepeye #28 反驳!为啥不用 RESTful 呢?
    zwh2698
        95
    zwh2698  
       2019-03-19 12:09:06 +08:00 via Android
    赞成你主管,你的定义没有弹性。数据结构设计需要保持一点弹性。这个就是经验。这种问题没有对错,不是一加一等于 3 就错了,你的可能也满足现状。但是弹性粒度不够。如果你一味强调自己的反而丢失聆听的能力。你说呢
    watzds
        96
    watzds  
       2019-03-19 12:09:14 +08:00 via Android
    主管的好
    ranwu
        97
    ranwu  
       2019-03-19 12:09:19 +08:00
    看一下 github 的 api 是怎么设计的
    whoisghost
        98
    whoisghost  
       2019-03-19 12:09:26 +08:00
    根据你后面的评论,从技术上来说。你的接口是对的。从人方面来说,如果你一开始把情况说清楚,就没那么多人在技术上批判你了,你表达能力有点差。

    你主管有点伪洁癖,为简洁而简洁。
    fox0001
        99
    fox0001  
       2019-03-19 12:09:54 +08:00 via Android
    其实,HTTP 标准也是用 status 代表状态码 /错误码
    yingfengi
        100
    yingfengi  
       2019-03-19 12:11:43 +08:00 via Android
    憋吵了,听我的,输出√和
    1  2  3  4  5  
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2583 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 34ms UTC 15:02 PVG 23:02 LAX 08:02 JFK 11:02
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86