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

2018-01-29 09:14:12 +08:00
 huanyingch01

如下代码是是在某个类中的某个 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
9617 次点击
所在节点    程序员
87 条回复
sjx95
2018-01-29 14:01:50 +08:00
卧槽这古老的 Pascal 语法!!
msg7086
2018-01-29 14:05:24 +08:00
#27 @sudodo 这么短小精悍的代码也敢叫 bullshit ?
你没来我司真是太好了(泪流满面
mentalidade
2018-01-29 14:05:34 +08:00
自己需要注意的点,这个代码都避开了,看不出来什么槽点,除了函数过长。嵌套过深,这个经常改逻辑,谁都没法完全避免
nikolai
2018-01-29 14:25:16 +08:00
没问题啊,上古代码能跑就行了,最好别碰。。(手动狗头
enenaaa
2018-01-29 14:30:11 +08:00
没毛病。 这种动画函数写着写着就长了。 因为没什么共性,经常也懒得重构。
LeungJZ
2018-01-29 14:34:26 +08:00
@torbrowserbridge
@mentalidade
@yujieyu7
@xavier007
麻烦你们看清楚,人家回复 PHP,是因为一楼问的是他的网站用什么写的。所以他们回复了 PHP tp。
youxiachai
2018-01-29 14:36:13 +08:00
@huanyingch01 这是游戏用脚本,其实很正常啊。
10 年也没啥好吐槽啊,而且正是老司机写才会觉得没啥问题。
反而一些新人没吃够经验,才会想着各种技巧。。。
a554340466
2018-01-29 14:37:44 +08:00
@woscaizi #8 这锅 Swift 不背
qinrui
2018-01-29 14:41:06 +08:00
@MyDaLin 真是神奇,最近几天搜索东西才进入过这个网站,还注册了会员。注册登录后发现积分才能下载,就放弃了。
mentalidade
2018-01-29 15:02:32 +08:00
@LeungJZ 是我眼神不好吗,一楼问的是猜我是几年程序员? 有任何语句问的是他的网站是什么写的吗?
gamecreating
2018-01-29 15:37:52 +08:00
1 年吧
whx20202
2018-01-29 15:40:46 +08:00
@vincentjie 最后一句很痛苦把 我也有过
KgM4gLtF0shViDH3
2018-01-29 15:41:13 +08:00
@Light3 #25 终于捉到你了。。
strahe
2018-01-29 16:23:04 +08:00
梗在哪里?
williamx
2018-01-29 16:24:16 +08:00
lua 代码。

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



关于天资的问题我是胡扯的。http://zhidao.baidu.com/question/191910604.html
sgissb1
2018-01-29 16:47:48 +08:00
没学过 Pascal,但是常常看别人用 delphi,也都快学会了部分语法了。
rming
2018-01-29 16:51:50 +08:00
lua,应该是只写过 lua 吧,不带脑子写业务的那种,2 年吧
lalala121
2018-01-29 17:05:11 +08:00
缩进很干净
uxstone
2018-01-29 17:08:28 +08:00
这得看这段代码经过几次的需求改动
focux
2018-01-29 17:12:40 +08:00
1. 几年的程序员都可能写出这样的代码,没必要纠结。
2. 你在这种地方贴出公司的代码,小心告你,后果可大可小。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/426672

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX