受朋友委托,然后跟另一个朋友一起开发的,
一起开发的这个,之前 2 年没联系,
结果 ........
看完我一句也不想说




受朋友委托,然后跟另一个朋友一起开发的,
一起开发的这个,之前 2 年没联系,
结果 ........
看完我一句也不想说




又被顶上来了
我只是吐槽+问问 V2 各位怎么解决这种情况,绝无任何秀优越
如觉不适,请立即关掉此贴
|
tomineAug 19, 2015
1
把你自己的代码贴上来看看
|
|
NovemberElevenAug 19, 2015
2
期待我就是那个朋友系列
|
|
cqcn1991Aug 19, 2015 via iPhone
3
这个 if else 还能怎么写?不是挺正常么…
|
|
TakanashiAzusaAug 19, 2015
4
@cqcn1991 这里不应该是 switch case 么。。
|
|
BanioAug 19, 2015
5
是想说 if ( 1 == i ) 这样写才合理么?
|
|
TakanashiAzusaAug 19, 2015
6
其实我比较好奇为什么是“朋友”提交的代码。。
|
|
harry890829Aug 19, 2015
7
switch case 和 if...else if 不就是写法上不一样么,还有什么不同么
|
|
8
典型的数据和逻辑分离有问题的设计。
|
|
qinglangeeAug 19, 2015
9
我一直觉得会开发外挂的人都很牛 X
|
|
cqcn1991Aug 19, 2015 via iPhone
10
@TakanashiAzusa 可以,但是我觉得只是语言风格,并不算 code smell.
|
|
zhichengAug 19, 2015
11
命名 OK ,缩进 OK ,代码风格 OK ,注释 OK 。唯一的缺点只有 magic number 。但不是正规则大项目也无所谓。
在我看来,这些代码段几乎是 perfect 了。 |
|
learnshareAug 19, 2015
12
其实应该把这么多数据放在合理的数据结构里,否则以后改到哭
|
|
akiraAug 19, 2015
13
图像识别的时候,不要严格依赖颜色,这个颜色在不同电脑上是有可能不一样的。。
|
|
LuoboTixSAug 19, 2015
14
槽点是在 hardcode 像素位置吗?
|
|
tiangeAug 19, 2015
15
简单明了
|
|
jianghu52Aug 19, 2015
16
有缩进,命名正常,注释不少。还要啥自行车。
|
|
fo2wAug 19, 2015
17
|
|
blacktulipAug 19, 2015
19
居然有注释,这已经是很给面子了,楼主还想要怎么样的代码?
|
|
moe3000Aug 19, 2015
20
|
|
21
第一眼给我的感觉还可以 楼主 你是没见过更烂的....
|
|
ljcarsenalAug 19, 2015
22
这是 c#么??写什么外挂的
|
|
iyangyuanAug 19, 2015 via iPhone
23
如果是*两个月做淘宝系列*,这样已经很不错了
|
|
24
https://ooo.0o0.ooo
存图片的域名略叼 |
|
codeyungAug 19, 2015
25
包正 我可是仔细看完了的 算规范了
|
|
kn007Aug 19, 2015
26
不要要求太高了。
|
|
xmgitAug 19, 2015
27
期待 我就是那个提交代码的 人系列
|
|
TinkAug 19, 2015 via iPhone
28
我也感觉挺好
|
|
yoa1q7yAug 19, 2015
29
还行啊,要啥自行车
|
|
kouchAug 19, 2015
30
然而你还是上来和大家说了好多句...
|
|
x86Aug 19, 2015
31
可以确定关系搞基了
|
|
Bryan0ZAug 19, 2015 via Android
32
一直当 Java 代码看,看到 bool 才发现是 C#
|
|
m1a0Aug 19, 2015
34
只看出, 方法命名有 3 种风格, 变量命名也有好几种风格, 感觉是拼凑起来的代码。
|
|
zmj1316Aug 19, 2015
35
看到 LZ 吐槽我也顺便晒一个大学时候的队友吧:
前序:因为那时候上课要写大作业必须组队,我就捡了一个队友回来,平时都联系不到,上课也一直不来,期末的设计也不难,本来我就打算一个人快点解决了,结果他死缠烂打要贡献一下,我就随手给了一个功能给他,结果催了好久过了两周快到 ddl 了用 QQ 传给我了。 我也没怎么想就把文件加进去了,结果一片红啊,我定睛一看,其中一个错误让我直接把文件删了,真的想砸键盘: 高潮: class Class { ... } ... fun (){ Class class; class.f (); } 还有这货居然把 private 都拼错了,后面的代码我实在没勇气看下去了。 所以啊,以后大家遇到那些 911/285 出来的坑货也不要太激动,总会有这么几个人的 T T 。 PS.这人还用的是 VS 23333333 |
|
tolbkniAug 19, 2015
36
还要啥自行车,我真心觉得编程素颜不错了
|
|
aholicAug 19, 2015
37
还有注释!
|
|
realpgAug 19, 2015
38
我觉得如果这是一个临时合作的队友,这质量已经远远好于预期了
还有这么多注释 |
|
jin5354Aug 19, 2015
39
就看在这么多注释的份上很不容易了
|
|
iamppzAug 19, 2015
40
能看懂就可以。。
动辄上万行的 js 真是让人痛不欲生 |
|
phx13yeAug 19, 2015
41
这么多 ifelse
这不应该用字典,哈希,映射,对象吗? 装逼一点就应该上那啥设计模式了, state ? |
|
WispZhanAug 19, 2015
42
我很好奇,楼主,你把这段代码的算法重构一次,贴上来 让我们来评评。总的来说,已经可以了,起码该有的都有。
评论总要有个对比 |
|
yylzcomAug 19, 2015
43
|
|
tnx2014Aug 19, 2015
44
楼主大概被各位吓到了,所以一个字也说不出来。
|
|
publicID001Aug 19, 2015
45
@iamppz 我们随便一个 Project 纯 CSS 就几万行
|
|
specialAug 19, 2015
46
buxue 这个函数最直接最能意会了...
英文不好,对于补血这个我也不好取函数名.. |
|
panliluAug 19, 2015
47
看代码我猜是梦幻西游(或者之类游戏)的挂机外挂。。
|
|
Sn0wM4nAug 19, 2015
48
@NovemberEleven 哈哈,同期待朋友快出现~
|
|
kohnvAug 19, 2015
49
这么多数字以后要改死
|
|
evlosAug 19, 2015 via iPhone
50
那么多注释,代码整齐,缩进都有弄好,其实还好吧
|
|
muzuigetAug 19, 2015
51
看上去写外挂,感觉还 OK ,反正这种一次性的东西,怎么快怎么来。
|
|
an168bang521Aug 19, 2015
52
代码整齐,有注释,一眼扫过能理解;
而且代码思路比较明确;唯一不好的就是耦合度比较高,但是有这么详细的注释;还要啥自行车啊! 是一名体贴的队友啊! |
|
husinhuAug 19, 2015
53
能找到一起写 demo 功能的同伴就不错了,还挑三拣四
|
|
dbasAug 19, 2015
54
这代码,可以了,水平也不差,要是写出来大多数看不懂才是问题
不要以为写什么类,或抽象了就好。 |
|
BlueSky002Aug 20, 2015
55
请收下我的膝盖
|
|
56
@dbas
public static int IfVerify () { Bitmap a = Piccolor.GetWindow (hwnd ); if (ColorTranslator.ToWin32 (a.GetPixel (347, 219 )) == 16776960 && ColorTranslator.ToWin32 (a.GetPixel (516, 411 )) == 3407871 ) { int key =ColorTranslator.ToWin32 (a.GetPixel (418, 305 )) + ColorTranslator.ToWin32 (a.GetPixel (418, 326 )) + ColorTranslator.ToWin32 (a.GetPixel (529, 305 )) + ColorTranslator.ToWin32 (a.GetPixel (529, 326 )) + ColorTranslator.ToWin32 (a.GetPixel (654, 305 )) + ColorTranslator.ToWin32 (a.GetPixel (654, 326 )) + ColorTranslator.ToWin32 (a.GetPixel (793, 305 )) + ColorTranslator.ToWin32 (a.GetPixel (793, 326 )); if (ConfigManager.hashTable.ContainsKey (key )) { a.Dispose (); switch (ConfigManager.hashTable[key].ToString ()) { case "1": Common.Click (418, 305 ); break; case "2": Common.Click (529, 305 ); break; case "3": Common.Click (654, 305 ); break; case "4": Common.Click (793, 305 ); break; } return 1; } else { string path = "C:/" + key + ".jpg"; a.Save (path ); Common.SendFile (path ); a.Dispose (); return 2; } } a.Dispose (); return -1; } 以此段为例: Dispose.调的满天飞。。 RGB 直接加起来做 key.. hashTable[key]取出来不进行类型转换,直接调了继承自 objcet 的 ToString ()。。。 临时文件直接写到 C 盘根。。 先不说类。。这么干没问题? |
|
theoracticeAug 20, 2015
57
要是写外挂的就别吐槽这个了,每次游戏更新之后要重写的不是一点点,在这个领域里谈什么代码质量没有太大意义。
LZ 没有思想准备的话别弄了,你估计做不下去的。 |
|
58
@theoractice
其实之前干过一次,就是随便写快速开发。。最后恶心的不成样子, bug 八千八,无奈放弃维护 这次受委托,于是全部重写== 没打算盈利,纯粹是因为朋友委托的 关系多年很好 这游戏更新不是很大,(也没啥修改数据来的作弊功能,最主要是挂机。。一般就是出什么新内容再扩展下功能 然而 异常都不管,也不检查啥,遇到 N 次 蹦空引用异常直接挂。。。 还有逻辑错误,甚至不测试就给你扔 git 上。。感觉一直跟后边给擦屁股 |
|
msg7086Aug 20, 2015
59
和我写的山口山外挂的代码几乎如出一辙。
|
|
master13Aug 20, 2015
60
Go faster, go alone.
Go further, go together. |
|
hdbeanAug 20, 2015
61
我就是那个朋友
|
|
soundofuAug 20, 2015
62
@fo2w 似乎这种写法与 for 写法的唯一区别就是: for 是(执行)时间(更慢)换(程序)空间(更大),然而可以通过调整优化器优化等级来实现某些代码在编译阶段展开,所以并没有什么(卵)区别...
本人做嵌入式设备开发的,执行效率和存储空间都要考虑 |
|
XuanYuanAug 20, 2015
63
@blacktulip 你是 DRLer 么?
|
|
visonmeAug 20, 2015
64
我代码命令格式一般也有两种方式(下划线 和 驼峰) 所以不少人看我代码也误解是不是两个人。
|
|
hfliAug 20, 2015
65
这种代码,自己还能写下去啊?
单单那个 if else 就受不了了; 那么多 magic number , 出了问题,怎么去调试?写的时候获取清楚,写完了再去 review ,自己都看不懂了。 |
|
fwings260Aug 20, 2015
66
楼主太年轻。。。没见过更烂的而已。。。。
|
|
initAug 20, 2015
68
你们怎么看出来是外挂的??
|
|
PharielAug 20, 2015 via Android
69
我觉得这已经非常不错了啊楼主 所谓的大公司正统赚钱业务的核心代码比这个要屎的多你敢信?
|
|
mzer0Aug 20, 2015
70
代码质量是一个信仰问题. 在有些人看来, 不使用 smart pointer 而直接使用原生指针, 本身就令人无法忍受, 但编程语言支持 GC 所以并不太重要. 另外一点是, if 嵌套 if 也可能作为令人无法忍受的理由, ----干嘛你不用个 struct 呢? 这可是 C 语言基本功. magic number 也是一个信仰问题, 事实证明, 在那种只会使用同一个 magic number 一次或两次的场合中, magic number 比编译器常量更好用......一味想着代码的重复利用, 最后只会创造出一堆看起来能用很多次但实际上只用了一次的代码.
另外是一些大家没注意到的效率问题, 例如, 应避免 ... + ... + ..., 取而代之的是... += ... += ..., 但是编程语言本身支持 move 语义, 所以这个效率问题又不复存在了. 因此我认为, 唯一值得黑的地方, 仅仅在于: 没有使用结构体进行因果优化. 但如果 @aprikyblue 也没注意到这个问题, 那可能是他也不会做因果优化, 所以最后的结论是: 这仅仅只是个信仰问题, 你写的代码不一定比别人好到哪儿去... |
|
radicalshuAug 20, 2015
72
感觉好像 coc 的外挂
|
|
RosayAug 20, 2015
73
怎么看出是外挂的?
|
|
sniperhgyAug 20, 2015
74
@Rosay BUXUE = 补血?还有根据一些情况点击不同的地方:
case "1": Common.Click (418, 305 ); break; case "2": Common.Click (529, 305 ); 看起来应该是外挂了。 |
|
hualuogengAug 20, 2015
75
@zmj1316 911/285 ,哈哈
|
|
kkwezardAug 20, 2015
76
放弃做程序猿就永远不会有这种烦恼了。
|
|
stgzrAug 20, 2015
77
没必要贴出来吧...
|
|
iamppzAug 20, 2015
78
@publicID001 10000 行一般都是一个函数,或者一个事件绑定。。
|
|
w88975Aug 20, 2015
79
代码质量还行 做外挂就别要求那么高了
|
|
w88975Aug 20, 2015
80
楼主可以私信一下我吗? 我最近也在想做一个游戏的挂机辅助,希望传授点经验
|
|
tchekai704Aug 20, 2015
81
@mzer0 你说的使用结构体进行因果优化, 是指使用 hash/map/dict 之类的数据结构,从而隐藏 if/else 的逻辑吗??
|
|
branchzeroAug 20, 2015
82
撕逼预订。
这是吐槽命名有些凑了拼音么? 而且貌似判断变量的值的代码风格有好多种。 感觉不是一个人写的,或者说他精分了? |
|
O21Aug 20, 2015
83
矫情。
|
|
ClarencepAug 20, 2015
84
不能一起愉快玩耍就分吧
|
|
ifconfigAug 20, 2015
85
楼主你太年轻了,这样的队友算真心好队友了,我维护过几千行无注释数十个 if else 硬塞成 mvc 的项目,那叫一个想死
|
|
JayleeAug 20, 2015
86
把你自己的代码贴上来看看
|
|
billwangAug 20, 2015
87
楼主是在踩着别人秀自己高大上的吗?
|
|
yeqiuAug 20, 2015
88
楼主要是觉得你的队友不行,请联系我。
@前面说只是编码风格不同的 我们排除易读性和健壮性,单去看看 CLR 就能知道效率差多少了吧。 |
|
karlakteAug 20, 2015
90
首先说 C#应该是驼峰命名法 方法名 /属性名首字母要大写, 然后这么多魔法值 维护起来有点麻烦。代码整洁就看个人了
|
|
suntoryliquAug 20, 2015
91
要不是你朋友,连注释都不写。
|
|
hitmanxAug 20, 2015
92
@harry890829 是不是还有效率上的区别,记得 switch case 有些编译器会优化出一个 jump table 啥的,只要计算一次, O (1 )的时间,不排除记错了。。
不过话说,这个注释真是详细,已经很幸福了。。 |
|
bk201Aug 20, 2015
93
一句都不想说你还发帖子说一下。。
代码风格这东西没啥说头,只问你能不能看懂,功能实现没有,代码不要做无用功简洁就 ok 拉,要不楼主 t 贴个自己的代码对比下? |
|
harry890829Aug 21, 2015
95
|
|
kaedeaAug 21, 2015
96
@theoractice 交出头像
|
|
halfcrazyAug 21, 2015
97
这种代码风格,让我想起了一个小伙伴
|
|
soundofuAug 21, 2015
98
@hitmanx 不同平台的编译上确实有区别,例如在 TI DSP 上,如果 CCS 编译,会有一个.switch 区域,执行的时候会接近 O (1 ),此时通过人工修改更高命中率的 case 的次序应该是没有什么效果的。但是 51 平台上用伟福或者 Keil uV2 会出现 switch 执行时间的陷阱,不知还有没有人遇到过...
@fo2w 在嵌入式 MCU 里面确实会有这种情况。如果用 for ,每次赋值之间起码增加了一次 ACC 和一次判断跳转,对于带有流水线并且没有分支预测或乱序执行的 CPU ,执行效率大大降低。况且遇到这种需要批量生成的代码,也是直接 excel 里拖一下,然后 Ctrl+C , Ctrl+V 过去的。 |
|
theoracticeAug 21, 2015
99
@kaedea 我的头像?只是一张手机拍的风景照啊。
|
|
tjxjjAug 26, 2015
100
都是程序员,何苦难为程序员
|