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

这应该是几年程序员可以写出的代码?

  •  
  •   huanyingch01 · Jan 29, 2018 · 11265 views
    This topic created in 3204 days ago, the information mentioned may be changed or developed.

    如下代码是是在某个类中的某个 api,项目中各处充斥着大量这种函数

    function ChangeUserPropertiesResult:execute()
        local processQueue = {}
    
        local resultData = self.mData.resultData
        local allAnimationData = {}
    
        --dump(resultData, "resultData resultData", 10, 2)
        if resultData.uaitems and next(resultData.uaitems)  then
            for _,item in pairs(resultData.uaitems) do
                local aniResult = {}
                local userid = item.userId or item.userid
    
                if item.name == Player.DIRECTION then 
                    SingletonShareData:getPlayerWithId(userid):updateDataBonusWithName(Player.DIRECTION,{count = item.count})
                    --
                    local bd = MapDataManager:getUserPosition(userid).branchDirection or -1
                    MapDataManager:saveUserPosition(bd,userid,"branchDirection")
    
                    local posData = MapDataManager:getUserPosition(userid)
                    -- local nextPaths = PathFinder:findPathFromToEnd(posData.nowPos, item.count, 1)
                    -- local nextPath = nextPaths[1]
                    local tilePath = posData.nowPos
                    -- AvatarWalker:setStandAction(userid, tilePath, nextPath)
                    AvatarWalker:setAvatarPosition(userid,tilePath)
    
                elseif string.find(item.name,"c_") ~= nil then
                    local cardid = string.sub(item.name, 3, -1)
                    local action = ""
                    if item.count > 0 then
                        action = "add"
                    elseif item.count == 0 then
                        action = "clear"
                    else
                        action = "remove"
                    end
    
                
                    local itemType,itemName = unpack(string.split(item.name,"_"))
                    local cradsData = cc.exports.SingletonShareData:getPlayerWithId(userid):getDataBonusWithName(Player.CARDS)
                    local isHasBaoXianKa = false
                    if cradsData then 
                       for k,v in pairs(cradsData) do
                            if tonumber(v) == 29 then
                                isHasBaoXianKa = true
                                break
                            end
                        end
                    end
                
                    local isEnterHospital = cc.exports.SingletonShareData:getPlayerWithId(userid):hasStatusWithName("hospital")
                
                    if (isEnterHospital == true and isHasBaoXianKa == true) and tonumber(itemName) == 29 and item.count < 0 then
                        local data = {}
                        data.cardId = tonumber(itemName)
                        data.playerId = userid
                        local dialog = require("app.process.CardUseController").new() --// 建议位置
                        dialog:setInputData(data)
                        if data.cardId then
                           table.insert(processQueue, dialog)
                        end
                        --行为记录
                        PlayerActionRecordHelper:pushRecordData({tips_name="tips_card_other",function_name="getCardContent",data={userId=userid,resultData={cardid=data.cardId}}})
    
                        EmotionResult:getInstance():pushEmotionData({userId = userid,action = EA_USE_CARD,cardId = E_CARD_INSURANCE})
                        EmotionResult:getInstance():execute()                    
                    end
    
                    aniResult = {userId = userid,action=action,itemName = cardid,itemType = "card"}
                    if item.count > 0 then
                       for k = 1,item.count do
                           cc.exports.SingletonShareData:getPlayerWithId(userid):updateDataBonusWithName(Player.CARDS,{itemName = cardid, action = action})
                        end
                    else
                        cc.exports.SingletonShareData:getPlayerWithId(userid):updateDataBonusWithName(Player.CARDS,{itemName = cardid, action = action})
                    end
                else
                    cc.exports.SingletonShareData:getPlayerWithId(userid):updateDataBonusWithName(
                                                    item.name,{itemCount = item.count})
                    if item.count > 0 then
                        aniResult = {userId = userid,action="add",itemName = item.name,itemType = "points"}
                    end
                end
    
                allAnimationData[#allAnimationData + 1] = aniResult
            end
        end
    
    
        local diplayCtrlName = self.mExtraData and self.mExtraData.displayCtrlClass --or "UserPropertiesDisplayResult"
        if diplayCtrlName then
            local ctrl = require("app.processResult.displayResult."..diplayCtrlName).new()
            ctrl:setInputData(allAnimationData)
            ctrl:setCallBack(handler(self,self.executeProcessComplete))
    
            table.insert(processQueue, ctrl)
        end
    
        if next(processQueue) then
            local processCtrl = require("app.process.ProcessQueue").new(processQueue,function()
                self:executeProcessComplete()
            end)
            processCtrl:handlerQueue()
        else
            self:executeProcessComplete()
        end
    end
    
    MyDaLin
    MyDaLin
    Jan 29, 2018
    1
    大家看我的网站,猜我是几年程序员?
    http://www.sucaihuo.com/
    aksoft
    aksoft
    Jan 29, 2018
    2
    @MyDaLin 哈哈
    jorneyr
    jorneyr
    Jan 29, 2018❤️1
    3
    有的一年当别人几年,有的几年当别人一年,因人而异,好奇的是写这个代码的人过一周后还能很快的看明白他写的是什么吗?接手的人能很快看明白写的是什么吗?
    hubhub
    hubhub
    Jan 29, 2018
    4
    这是什么语言
    woscaizi
    woscaizi
    Jan 29, 2018 via iPhone
    5
    @MyDaLin 两年最多,php 程序员。
    alen
    alen
    Jan 29, 2018
    6
    这是 go 语法?
    m939594960
    m939594960
    Jan 29, 2018
    7
    @MyDaLin TP 写的,看这样子两年应该算多了
    woscaizi
    woscaizi
    Jan 29, 2018 via iPhone
    8
    @hubhub swift 吧。其实还好,这是没有重构的代码吧。注释基本没有这点不爽。
    MeteorCat
    MeteorCat
    Jan 29, 2018 via Android
    9
    这写得啥? lua ? php ? java ?
    frend94
    frend94
    Jan 29, 2018
    10
    这是 lua 吧
    sheaned
    sheaned
    Jan 29, 2018
    11
    这是 lua 吗?
    Alexisused
    Alexisused
    Jan 29, 2018
    12
    内容没仔细看,首先写的挺整齐的
    gemini767
    gemini767
    Jan 29, 2018 via Android
    13
    @woscaizi Swift?什么时候 Swift 以 end 结尾了?
    sumu
    sumu
    Jan 29, 2018
    14
    有注释,甭管几年,点个赞。有人写代码很随意:一两千行代码,0 注释这种事也是有的,N 层循环里面又有 N 个 if,也是有的,碰上这种操蛋的事,一旦接手,那就是踩雷,除了推翻彻底重构,根本没有办法
    maltoze
    maltoze
    Jan 29, 2018
    15
    看起来是 lua
    hhvv23911k
    hhvv23911k
    Jan 29, 2018
    16
    swift 肯定不是,lua 没接触过,php 有点像,但为啥没分号?求大神指点这是啥语言
    lujiajing1126
    lujiajing1126
    Jan 29, 2018 via iPhone
    17
    Lua 吧😂是个手游?
    gecco
    gecco
    Jan 29, 2018
    18
    语言都看不出来的人,围观吹吹水,就别乱说话带节奏啦。
    torbrowserbridge
    torbrowserbridge
    Jan 29, 2018❤️1
    19
    @v2410117 哪里看的像 php 的?因为你不熟悉 php ?
    mentalidade
    mentalidade
    Jan 29, 2018
    20
    肯定是 lua 啊
    mentalidade
    mentalidade
    Jan 29, 2018
    21
    怎么会觉有人得是 PHP 和 java😓
    yujieyu7
    yujieyu7
    Jan 29, 2018
    22
    @m939594960 这是 tp ?
    keepfun
    keepfun
    Jan 29, 2018
    23
    我只能说这个人的 lua 水平应该很不错.当然如果不是复制粘贴码上去的话.
    fyxerma
    fyxerma
    Jan 29, 2018
    24
    cocos ?
    Light3
    Light3
    Jan 29, 2018
    25
    @v2410117
    php 就没有啥 then 这应该是 Lua...
    Len1133
    Len1133
    Jan 29, 2018
    26
    起码有 1 年吧
    sudodo
    sudodo
    Jan 29, 2018
    27
    你是没见过某大厂 82 年的老程序员写的 bullshit 代码……

    200 行一个方法,变量套三层……
    sunny352787
    sunny352787
    Jan 29, 2018❤️2
    28
    游戏的 lua 代码,是一个道具效果的执行部分,我为什么知道呢,因为这代码架构应该是和我同一个师傅教的...不过也不能说这个代码写的很烂,因为很明显这段代码是不断增补变成这样的,勤快点的可能会做个重构,但这个貌似已经是过了 N 手了,也没人敢大动,只能一点点打补丁
    jyf
    jyf
    Jan 29, 2018
    29
    这明显是写惯了 c 的人写的 lua 嘛 (怎么判断很简单 有 end 有 pairs)
    嫌麻烦建议用 moonscript 直接编译到 lua
    sunny352787
    sunny352787
    Jan 29, 2018
    30
    卧槽,刚发现,EmotionResult 不是这么用的啊...谁审的代码啊,这么写打死算了
    micean
    micean
    Jan 29, 2018
    31
    除了没注释挺好的
    xavier007
    xavier007
    Jan 29, 2018
    32
    首先不是 PHP,PHP 最明显的就是$符号吗。其次他是有 end 且缩进的语法,那么也就那么几个语言,而且代码中有 player 字样,那么最接近的应该是 lua,lua 最长作为游戏脚本来用。会 lua 的一眼就看出来了,不会的分析下也看出来了
    woscaizi
    woscaizi
    Jan 29, 2018 via iPhone
    33
    @gemini767 就刚刚,库克钦定的。
    jjianwen68
    jjianwen68
    Jan 29, 2018
    34
    这段代码的性能如何,刚看到个 https://segmentfault.com/a/1190000004372649
    whx20202
    whx20202
    Jan 29, 2018
    35
    我工作一年多了,没看出明显问题啊,谁能科普下槽点在哪里
    mars0prince
    mars0prince
    Jan 29, 2018
    36
    没看出有啥毛病,if else 蛮多的,不过也正常,可能是不断打补丁
    coffeecato
    coffeecato
    Jan 29, 2018
    37
    几年程序员不知道,使用 lua 开发一年左右应该差不多了。
    onehao28
    onehao28
    Jan 29, 2018
    38
    最近在写 nginx 的 lua 脚本,看用法感觉是 lua 脚本吧
    m939594960
    m939594960
    Jan 29, 2018
    39
    我先来,做个排除法首先他不是 html 代码
    HuHui
    HuHui
    Jan 29, 2018
    40
    isHasBaoXianKa
    尿了
    rrfeng
    rrfeng
    Jan 29, 2018 via Android
    41
    lua

    挺整齐...
    mrgeneral
    mrgeneral
    Jan 29, 2018
    42
    刚开始还以为是 python 仔细一看代码是 lua

    也不是 nginx,都没有 http 相关的函数

    游戏吧,看到一个 Animation 哈哈
    xd314697475
    xd314697475
    Jan 29, 2018
    43
    别猜了,这是 lua
    先做个小科普

    # 1. lua 语法特征:
    if ... end
    for .... end

    # 2. php 语法特征:
    php 的特征符号是$(面向$编程)
    变量前面带有$, eg. $a; $b;
    注意结尾的;
    语法整体上有 C 语言的感觉

    # 3. java 语法特征:
    类似 C 语言
    作为面向对象语言的代表,就是对象多,注意结尾有;
    new 关键字,public class,
    eg. ObjectReference = new Constructor();

    # 4. swift 语法特征:
    ;分号不是必要的
    变量 var,常量用 let
    条件语句 if 后面一般省略()


    因为对 lua 编程不是很熟悉,而且程序员几年不是一段代码能表现出来的
    最好放个项目出来,这样大家更容易了解
    Mutoo
    Mutoo
    Jan 29, 2018
    44
    这是 Lua 语法,看到 cc.* namespace 应该是 cocos2d-lua 没跑。
    acros
    acros
    Jan 29, 2018
    45
    没啥问题啊。
    是某个 RPG 游戏的 lua 脚本,初看就是退出人物装备(属性)界面,调用这个脚本处理结果的,除了中间 MagicNumber ( BaoXianKa···猜测为和策划运营统一,用的拼音)。
    vincentjie
    vincentjie
    Jan 29, 2018❤️1
    46
    1. 这是 Lua
    2. 这是基于 Cocos2dx-Lua 开发的手机游戏
    3. 代码确实写得不够好的地方,但是以现在国内的手游开发现状的话,我也能理解为什么有时会写出这种代码
    3.1 槽点。其实主要是影响可读性的或者影响维护效率的问题
    3.1.1 在代码中直接使用常量
    3.1.2 函数过长
    3.1.3 嵌套过深
    3.1.4 在逻辑主干上处理特殊情况下的逻辑
    3.1.5 某些成员变量具有多重职责
    3.2 可能造成这种状况的原因
    3.1 开发人员素质参差不齐
    3.2 项目开发进度紧张
    3.3 策划人员素质参差不齐
    3.4 项目开发进度压力较大时,缺乏重构的动力及条件

    我以前刚接手一个老项目的时候,也产生过楼主这样的想法,我那个项目比这个还要复杂很多。动辄一两万行的 C++类,动辄几百行上千行的函数,结构混乱,层次不分。但随着项目一点点推进,参与项目的人越来越多,打包、测试越来越频繁,我逐渐理解为什么之前的代码里面充斥着那么多的垃圾。甚至有的时候,我自己都会写一些自己之前所不屑的垃圾。
    vincenttone
    vincenttone
    Jan 29, 2018
    47
    半年到一年半
    acros
    acros
    Jan 29, 2018❤️1
    48
    @vincentjie
    3.1.4 在逻辑主干上处理特殊情况下的逻辑
    这条你可以删了。
    Lua 就是为了处理游戏中各种业务逻辑特例才引入的。游戏开发不可能为了几个特例又拉开什么架构设计。
    要不然全部 C++解决了。
    newtype0092
    newtype0092
    Jan 29, 2018
    49
    @xd314697475 其实 lua 还有两个最大的特点是 local 关键字和内置 lib table

    @mrgeneral 这个是用 Cocos2d-x 写的游戏,cc 是 libcocos2dx 的前缀。
    vincentjie
    vincentjie
    Jan 29, 2018
    50
    @acros
    现在的 Lua 早已经不局限于处理业务逻辑特例了,为了在 iOS 平台上能进行热更新,更多的是,绝大多数性能不敏感的逻辑都已经全部放在 Lua 下处理了。不局限于 Cocos2dx,也包括基于 Unity 开发的游戏。
    slicent8
    slicent8
    Jan 29, 2018
    51
    @MyDaLin 看你的网页样式 应该是 10 年以上了
    huanyingch01
    huanyingch01
    OP
    Jan 29, 2018
    52
    @vincentjie 同学说的基本都是对的。本意只是吐槽一下 函数过长,没有拆分,内容过多。还有这是具有 10 年开发经验的程序员写的。
    imdoge
    imdoge
    Jan 29, 2018
    53
    @MyDaLin 居然月访问上 1000k 了还在上涨中……怎么不挂点广告
    fxxkgw
    fxxkgw
    Jan 29, 2018
    54
    大惊小怪,我会跟你说华为很多交换机驱动代码一个函数上万行么。。。茫茫多的 if else define 这种代码根本无法重构,但不得不说还是很稳定的。。
    xlrtx
    xlrtx
    Jan 29, 2018
    55
    lua 的数据结构只有 table, 可以做列表, 也可以做字典, 对象.
    ayyll
    ayyll
    Jan 29, 2018
    56
    @MeteorCat 排除法,首先,这不是 C
    discrete
    discrete
    Jan 29, 2018
    57
    ``isHasBaoXianKa`` 23333
    seancheung
    seancheung
    Jan 29, 2018
    58
    这是 lua 啊,还是 cocos2d
    seancheung
    seancheung
    Jan 29, 2018
    59
    还没说完。。就是嵌套太多,局部变量太多
    chocotan
    chocotan
    Jan 29, 2018
    60
    代码写的优雅与否基本不在面试的考查范围内吧
    sjx95
    sjx95
    Jan 29, 2018
    61
    卧槽这古老的 Pascal 语法!!
    msg7086
    msg7086
    Jan 29, 2018
    62
    #27 @sudodo 这么短小精悍的代码也敢叫 bullshit ?
    你没来我司真是太好了(泪流满面
    mentalidade
    mentalidade
    Jan 29, 2018
    63
    自己需要注意的点,这个代码都避开了,看不出来什么槽点,除了函数过长。嵌套过深,这个经常改逻辑,谁都没法完全避免
    nikolai
    nikolai
    Jan 29, 2018
    64
    没问题啊,上古代码能跑就行了,最好别碰。。(手动狗头
    enenaaa
    enenaaa
    Jan 29, 2018
    65
    没毛病。 这种动画函数写着写着就长了。 因为没什么共性,经常也懒得重构。
    LeungJZ
    LeungJZ
    Jan 29, 2018
    66
    @torbrowserbridge
    @mentalidade
    @yujieyu7
    @xavier007
    麻烦你们看清楚,人家回复 PHP,是因为一楼问的是他的网站用什么写的。所以他们回复了 PHP tp。
    youxiachai
    youxiachai
    Jan 29, 2018
    67
    @huanyingch01 这是游戏用脚本,其实很正常啊。
    10 年也没啥好吐槽啊,而且正是老司机写才会觉得没啥问题。
    反而一些新人没吃够经验,才会想着各种技巧。。。
    a554340466
    a554340466
    Jan 29, 2018 via iPhone
    68
    @woscaizi #8 这锅 Swift 不背
    qinrui
    qinrui
    Jan 29, 2018
    69
    @MyDaLin 真是神奇,最近几天搜索东西才进入过这个网站,还注册了会员。注册登录后发现积分才能下载,就放弃了。
    mentalidade
    mentalidade
    Jan 29, 2018
    70
    @LeungJZ 是我眼神不好吗,一楼问的是猜我是几年程序员? 有任何语句问的是他的网站是什么写的吗?
    gamecreating
    gamecreating
    Jan 29, 2018
    71
    1 年吧
    whx20202
    whx20202
    Jan 29, 2018
    72
    @vincentjie 最后一句很痛苦把 我也有过
    KgM4gLtF0shViDH3
    KgM4gLtF0shViDH3
    Jan 29, 2018
    73
    @Light3 #25 终于捉到你了。。
    strahe
    strahe
    Jan 29, 2018
    74
    梗在哪里?
    williamx
    williamx
    Jan 29, 2018❤️1
    75
    lua 代码。

    大概有五年的功力,要是从业小于五年,那么天资不错啊!要是在十年左右,那么天资就比较垃圾了。



    关于天资的问题我是胡扯的。http://zhidao.baidu.com/question/191910604.html
    sgissb1
    sgissb1
    Jan 29, 2018
    76
    没学过 Pascal,但是常常看别人用 delphi,也都快学会了部分语法了。
    rming
    rming
    Jan 29, 2018
    77
    lua,应该是只写过 lua 吧,不带脑子写业务的那种,2 年吧
    lalala121
    lalala121
    Jan 29, 2018
    78
    缩进很干净
    uxstone
    uxstone
    Jan 29, 2018
    79
    这得看这段代码经过几次的需求改动
    focux
    focux
    Jan 29, 2018
    80
    1. 几年的程序员都可能写出这样的代码,没必要纠结。
    2. 你在这种地方贴出公司的代码,小心告你,后果可大可小。
    w3sy
    w3sy
    Jan 29, 2018
    81
    @woscaizi swift? 你这是黑 swift 吧……😊
    run2
    run2
    Jan 29, 2018
    82
    @jyf #29 这个 moonscript 是新语言吧,居然不是强类型的 😂

    hello = "world"
    a,b,c = 1, 2, 3
    hello = 123 -- uses the existing variable
    DavidNineRoc
    DavidNineRoc
    Jan 29, 2018
    83
    <?php
    call_user_func_array(function (...$parameters) {
    echo implode('', $parameters);
    }, [
    (string) new class {
    public function __toString()
    {
    return 'hello, world!';
    }
    },
    'DavidNineRoc'
    ]);
    DavidNineRoc
    DavidNineRoc
    Jan 29, 2018
    84
    ```php
    call_user_func_array(function (...$parameters) {
    echo implode('', $parameters);
    }, [
    (string) new class {
    public function __toString()
    {
    return 'hello, world!';
    }
    },
    'DavidNineRoc'
    ]);
    ```
    akira
    akira
    Jan 30, 2018
    85
    缩进挺整齐的
    Technetiumer
    Technetiumer
    Jan 30, 2018
    86
    看到用 -- 做注釋就應該知道這是 Lua

    PHP 有超多的$
    Java 滿屏 public class
    jyf
    jyf
    Jan 30, 2018
    87
    @sobigfish 是的 杂揉了 typescript 和 python 至少语法上比 lua 舒服多了 也不罗嗦了 当然好坏就见仁见智了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1893 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 162ms · UTC 08:29 · PVG 16:29 · LAX 00:29 · JFK 03:29
    ♥ Do have faith in what you're doing.