如下代码是是在某个类中的某个 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
1
MyDaLin 2018 年 1 月 29 日
大家看我的网站,猜我是几年程序员?
http://www.sucaihuo.com/ |
3
jorneyr 2018 年 1 月 29 日 有的一年当别人几年,有的几年当别人一年,因人而异,好奇的是写这个代码的人过一周后还能很快的看明白他写的是什么吗?接手的人能很快看明白写的是什么吗?
|
4
hubhub 2018 年 1 月 29 日
这是什么语言
|
6
alen 2018 年 1 月 29 日
这是 go 语法?
|
7
m939594960 2018 年 1 月 29 日
@MyDaLin TP 写的,看这样子两年应该算多了
|
9
MeteorCat 2018 年 1 月 29 日 via Android
这写得啥? lua ? php ? java ?
|
10
frend94 2018 年 1 月 29 日
这是 lua 吧
|
11
sheaned 2018 年 1 月 29 日
这是 lua 吗?
|
12
Alexisused 2018 年 1 月 29 日
内容没仔细看,首先写的挺整齐的
|
14
sumu 2018 年 1 月 29 日
有注释,甭管几年,点个赞。有人写代码很随意:一两千行代码,0 注释这种事也是有的,N 层循环里面又有 N 个 if,也是有的,碰上这种操蛋的事,一旦接手,那就是踩雷,除了推翻彻底重构,根本没有办法
|
15
maltoze 2018 年 1 月 29 日
看起来是 lua
|
16
hhvv23911k 2018 年 1 月 29 日
swift 肯定不是,lua 没接触过,php 有点像,但为啥没分号?求大神指点这是啥语言
|
17
lujiajing1126 2018 年 1 月 29 日 via iPhone
Lua 吧😂是个手游?
|
18
gecco 2018 年 1 月 29 日
语言都看不出来的人,围观吹吹水,就别乱说话带节奏啦。
|
19
torbrowserbridge 2018 年 1 月 29 日 @v2410117 哪里看的像 php 的?因为你不熟悉 php ?
|
20
mentalidade 2018 年 1 月 29 日
肯定是 lua 啊
|
21
mentalidade 2018 年 1 月 29 日
怎么会觉有人得是 PHP 和 java😓
|
22
yujieyu7 2018 年 1 月 29 日
@m939594960 这是 tp ?
|
23
keepfun 2018 年 1 月 29 日
我只能说这个人的 lua 水平应该很不错.当然如果不是复制粘贴码上去的话.
|
24
fyxerma 2018 年 1 月 29 日
cocos ?
|
26
Len1133 2018 年 1 月 29 日
起码有 1 年吧
|
27
sudodo 2018 年 1 月 29 日
你是没见过某大厂 82 年的老程序员写的 bullshit 代码……
200 行一个方法,变量套三层…… |
28
sunny352787 2018 年 1 月 29 日 游戏的 lua 代码,是一个道具效果的执行部分,我为什么知道呢,因为这代码架构应该是和我同一个师傅教的...不过也不能说这个代码写的很烂,因为很明显这段代码是不断增补变成这样的,勤快点的可能会做个重构,但这个貌似已经是过了 N 手了,也没人敢大动,只能一点点打补丁
|
29
jyf 2018 年 1 月 29 日
这明显是写惯了 c 的人写的 lua 嘛 (怎么判断很简单 有 end 有 pairs)
嫌麻烦建议用 moonscript 直接编译到 lua |
30
sunny352787 2018 年 1 月 29 日
卧槽,刚发现,EmotionResult 不是这么用的啊...谁审的代码啊,这么写打死算了
|
31
micean 2018 年 1 月 29 日
除了没注释挺好的
|
32
xavier007 2018 年 1 月 29 日
首先不是 PHP,PHP 最明显的就是$符号吗。其次他是有 end 且缩进的语法,那么也就那么几个语言,而且代码中有 player 字样,那么最接近的应该是 lua,lua 最长作为游戏脚本来用。会 lua 的一眼就看出来了,不会的分析下也看出来了
|
34
jjianwen68 2018 年 1 月 29 日
这段代码的性能如何,刚看到个 https://segmentfault.com/a/1190000004372649
|
35
whx20202 2018 年 1 月 29 日
我工作一年多了,没看出明显问题啊,谁能科普下槽点在哪里
|
36
mars0prince 2018 年 1 月 29 日
没看出有啥毛病,if else 蛮多的,不过也正常,可能是不断打补丁
|
37
coffeecato 2018 年 1 月 29 日
几年程序员不知道,使用 lua 开发一年左右应该差不多了。
|
38
onehao28 2018 年 1 月 29 日
最近在写 nginx 的 lua 脚本,看用法感觉是 lua 脚本吧
|
39
m939594960 2018 年 1 月 29 日
我先来,做个排除法首先他不是 html 代码
|
40
HuHui 2018 年 1 月 29 日
isHasBaoXianKa
尿了 |
41
rrfeng 2018 年 1 月 29 日 via Android
lua
挺整齐... |
42
mrgeneral 2018 年 1 月 29 日
刚开始还以为是 python 仔细一看代码是 lua
也不是 nginx,都没有 http 相关的函数 游戏吧,看到一个 Animation 哈哈 |
43
xd314697475 2018 年 1 月 29 日
别猜了,这是 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 编程不是很熟悉,而且程序员几年不是一段代码能表现出来的 最好放个项目出来,这样大家更容易了解 |
44
Mutoo 2018 年 1 月 29 日
这是 Lua 语法,看到 cc.* namespace 应该是 cocos2d-lua 没跑。
|
45
acros 2018 年 1 月 29 日
没啥问题啊。
是某个 RPG 游戏的 lua 脚本,初看就是退出人物装备(属性)界面,调用这个脚本处理结果的,除了中间 MagicNumber ( BaoXianKa···猜测为和策划运营统一,用的拼音)。 |
46
vincentjie 2018 年 1 月 29 日 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++类,动辄几百行上千行的函数,结构混乱,层次不分。但随着项目一点点推进,参与项目的人越来越多,打包、测试越来越频繁,我逐渐理解为什么之前的代码里面充斥着那么多的垃圾。甚至有的时候,我自己都会写一些自己之前所不屑的垃圾。 |
47
vincenttone 2018 年 1 月 29 日
半年到一年半
|
48
acros 2018 年 1 月 29 日 @vincentjie
3.1.4 在逻辑主干上处理特殊情况下的逻辑 这条你可以删了。 Lua 就是为了处理游戏中各种业务逻辑特例才引入的。游戏开发不可能为了几个特例又拉开什么架构设计。 要不然全部 C++解决了。 |
49
newtype0092 2018 年 1 月 29 日
@xd314697475 其实 lua 还有两个最大的特点是 local 关键字和内置 lib table
@mrgeneral 这个是用 Cocos2d-x 写的游戏,cc 是 libcocos2dx 的前缀。 |
50
vincentjie 2018 年 1 月 29 日
@acros
现在的 Lua 早已经不局限于处理业务逻辑特例了,为了在 iOS 平台上能进行热更新,更多的是,绝大多数性能不敏感的逻辑都已经全部放在 Lua 下处理了。不局限于 Cocos2dx,也包括基于 Unity 开发的游戏。 |
52
huanyingch01 OP @vincentjie 同学说的基本都是对的。本意只是吐槽一下 函数过长,没有拆分,内容过多。还有这是具有 10 年开发经验的程序员写的。
|
54
fxxkgw 2018 年 1 月 29 日
大惊小怪,我会跟你说华为很多交换机驱动代码一个函数上万行么。。。茫茫多的 if else define 这种代码根本无法重构,但不得不说还是很稳定的。。
|
55
xlrtx 2018 年 1 月 29 日
lua 的数据结构只有 table, 可以做列表, 也可以做字典, 对象.
|
57
discrete 2018 年 1 月 29 日
``isHasBaoXianKa`` 23333
|
58
seancheung 2018 年 1 月 29 日
这是 lua 啊,还是 cocos2d
|
59
seancheung 2018 年 1 月 29 日
还没说完。。就是嵌套太多,局部变量太多
|
60
chocotan 2018 年 1 月 29 日
代码写的优雅与否基本不在面试的考查范围内吧
|
61
sjx95 2018 年 1 月 29 日
卧槽这古老的 Pascal 语法!!
|
63
mentalidade 2018 年 1 月 29 日
自己需要注意的点,这个代码都避开了,看不出来什么槽点,除了函数过长。嵌套过深,这个经常改逻辑,谁都没法完全避免
|
64
nikolai 2018 年 1 月 29 日
没问题啊,上古代码能跑就行了,最好别碰。。(手动狗头
|
65
enenaaa 2018 年 1 月 29 日
没毛病。 这种动画函数写着写着就长了。 因为没什么共性,经常也懒得重构。
|
66
LeungJZ 2018 年 1 月 29 日
@torbrowserbridge
@mentalidade @yujieyu7 @xavier007 麻烦你们看清楚,人家回复 PHP,是因为一楼问的是他的网站用什么写的。所以他们回复了 PHP tp。 |
67
youxiachai 2018 年 1 月 29 日
|
68
a554340466 2018 年 1 月 29 日 via iPhone
@woscaizi #8 这锅 Swift 不背
|
70
mentalidade 2018 年 1 月 29 日
@LeungJZ 是我眼神不好吗,一楼问的是猜我是几年程序员? 有任何语句问的是他的网站是什么写的吗?
|
71
gamecreating 2018 年 1 月 29 日
1 年吧
|
72
whx20202 2018 年 1 月 29 日
@vincentjie 最后一句很痛苦把 我也有过
|
73
KgM4gLtF0shViDH3 2018 年 1 月 29 日
@Light3 #25 终于捉到你了。。
|
74
strahe 2018 年 1 月 29 日
梗在哪里?
|
75
williamx 2018 年 1 月 29 日 lua 代码。
大概有五年的功力,要是从业小于五年,那么天资不错啊!要是在十年左右,那么天资就比较垃圾了。 关于天资的问题我是胡扯的。http://zhidao.baidu.com/question/191910604.html |
76
sgissb1 2018 年 1 月 29 日
没学过 Pascal,但是常常看别人用 delphi,也都快学会了部分语法了。
|
77
rming 2018 年 1 月 29 日
lua,应该是只写过 lua 吧,不带脑子写业务的那种,2 年吧
|
78
lalala121 2018 年 1 月 29 日
缩进很干净
|
79
uxstone 2018 年 1 月 29 日
这得看这段代码经过几次的需求改动
|
80
focux 2018 年 1 月 29 日
1. 几年的程序员都可能写出这样的代码,没必要纠结。
2. 你在这种地方贴出公司的代码,小心告你,后果可大可小。 |
82
run2 2018 年 1 月 29 日
@jyf #29 这个 moonscript 是新语言吧,居然不是强类型的 😂
hello = "world" a,b,c = 1, 2, 3 hello = 123 -- uses the existing variable |
83
DavidNineRoc 2018 年 1 月 29 日
<?php
call_user_func_array(function (...$parameters) { echo implode('', $parameters); }, [ (string) new class { public function __toString() { return 'hello, world!'; } }, 'DavidNineRoc' ]); |
84
DavidNineRoc 2018 年 1 月 29 日
```php
call_user_func_array(function (...$parameters) { echo implode('', $parameters); }, [ (string) new class { public function __toString() { return 'hello, world!'; } }, 'DavidNineRoc' ]); ``` |
85
akira 2018 年 1 月 30 日
缩进挺整齐的
|
86
Technetiumer 2018 年 1 月 30 日
看到用 -- 做注釋就應該知道這是 Lua
PHP 有超多的$ Java 滿屏 public class |