用户:yee剑走天下查看:866 回复:29 评论:42 创建时间:2023-01-07T22:49:27
大屑勿入(
这里面的水很深()包括了一些大佬和一堆小屑()
起因:发现屑剑的代码风逐渐路卡化了(悲
经过:瞎逛论坛时发现了一堆很是让我不解的代码()按路卡原话来说事可以让她大喊fuc*那种(
第一种()无意义命名的变量&无意义变量()
这里被我提到的人别喷我(
比如某个被提名过的地图
你敢信)里面的给玩家属性的几个命名居然时这样的(
entity.se1;
entity.se2;
entity.se3;
这就算了()关键是()他到后面给代码的判断就是
if (entity.se1 + entity.se2 + entity.se3 == 0) {
//.....
}
if (entity.se1 + entity.se2 + entity.se3 == 1) {
//.....
}
if (entity.se1 + entity.se2 + entity.se3 == 2) {
//.....
}
if (entity.se1 + entity.se2 + entity.se3 == 3) {
//.....
}
完全一个变量就可以解决的事情()非要三个()很是不解()
而且se啥意思()越看越看不懂()
还有就比如我之前给模型取名()
直接就什么aab,aabbccd,abcdeefg诸如此类的)(
现在看之前自己写的代码感觉完全依托答辩
2.冗杂&无意义代码
比如()
world.onPlayerJoin(({ entity }) => {
entity.player.kick();
return
})
我实在搞不懂return啥()有啥用)
再比如被屑喆的API教程坑害了无数岛民的屑对话框)
一般人写如果点×关闭了对话框:
if (dialog == null || !dialog) {
return
}
我就搞不懂了()完全一个if (!dialog) return;
一行可以完事的还非要搞到三行()
还有yee些npc交互()
为什么就不能整函数呢?!()函数不好吗()
function npc(selector, fn, interactHint, interactRadius, interactColor) {
const Npc = world.querySelector(selector);
Npc.enableInteract = 1;
Npc.interactHint = interactHint ? interactHint : Npc.id.split('-')[0]
Npc.interactRadius = interactRadius ? interactRadius : 3;
Npc.interactRadius = interactRadius ? interactRadius : new Box3RGBColor(0, 0, 0);
Npc.onInteract(async ({ entity }) => {
await fn(entity)
})
}
辣么简易一个函数就可以完成以下这依托答辩
const npc = world.querySelector('#xxx');
npc.enableInteract = true;
npc.interactHint = 'xxx';
npc.interactRadius = 3;
npc.interactColor.set(喵);
npc.onInteract(({ entity }) => {
// .......
})
还有一些特别繁化的tp代码()就是某雪大佬的()虽然他实力的确很强()但是我这个lj岛民还是不太能理解那么简易一个功能为什么要那么多代码()
当然()以上情况整活除外()
3.没格式
我第二深恶痛绝的就是没格式的代码了)
比如这样的:
world.onPlayerJoin(({entity}) => {
entity.player.canFly = true;
})
这还勉强说得过去()起码知道缩进
但是我还见过这种的,简直呕了(
world.onPlayerJoin(({entity}) => {
entity.player.canFly = true;})
var a=114514
var b=1919810
var c=[1,1,4,5,1,4,1,9,1,9,8,1,0]
console.log(a+b*a/b)
一点空格没有,而且句尾没写分号()虽然写不写都没关系()但是如果你写SQL这样写(async () => {await db.sql`....`})()的话不加分号就有大问题了()还不知道的大屑可以自己去试试(雾
4.我最**深恶痛绝的——乱复制一通,然后代码不分区,贼杂那种
我见过无数那种养成类的地图
没有几个是能做得好的
为什么?()
直接把论坛的代码照搬,然后又看不懂()不会调用啥的()真是6极了()
在这不得不吐槽一下我的一个好朋友()虽然他建筑很厉害()
而且他地图的建筑如果有好的玩法真有可能上首页(不透露姓名)
但是他的硬伤是啥?)
做一个养成类,光是SQL就复制了三个
然后还一起到index.js给我require
这还算了
而且另一个分区明明给玩家钱的赋值是entity.coin
另一个代码分区就变成了entity.money
真是让我无法下手()
而且更棒的是我给他改完了()没过几天又nnd给我复制一堆)变成之前那样(
胡乱复制代码说完了()说说代码不分区(
这也挺恶心的()index.js写个封顶2000行左右就够了(个人认为)
比如一个养成类,index只需要写一下SQL,基础的怪的die码()和玩家的右键以及攻击效果就行了()
至于武器啥的()完全可以开个Item.js,然后另外整个对象(我一般是写global.things)来专门写背包,然后再到index.js require一下就行了()
好了不多瞎BB了()
如果有以上问题的大屑()给几条小建议)
没必要的代码全删了!
没格式的代码右键点格式化文档给他格式化了!
命名没意义整个有意义的命名!
能封装函数就封!别写依托答辩!
别老是到论坛复制你不懂的代码!当然你能知道怎么使用除外!
代码能多简洁多简洁()别拿代码多当作骄傲的资本!)
我们应该追求的是,用更少的代码,实现更多的功能!
给yee些贼爱写if结果要执行的步骤也贼少的人的一些建议)
如果你要执行的步骤就一行可以解决的()
可以使用三目运算符(
格式为
条件 ? 条件成立执行这里的步骤 : 条件不成立执行这里的步骤
比如
if (entity.player.name == 'xxx') {
entity.player.kick()
}
完全可以简化为
entity.player.name == 'xxx' ? entity.player.kick() : null
好了这个屑岛民瞎BB完了()
感谢你看完了()
你也是时候去睡觉了(帖子写完时22:49)
![]()
SCS_user_LoeheodVOQentity.player.name == 'xxx' ? entity.player.kick() : null
// 可以简化为:
entity.player.name == 'xxx' && entity.player.kick()点赞1
评论
确实我认为吧??不如&&(大多数)
爱探险的可乐呀Npc.interactHint = interactHint ? interactHint : Npc.id.split('-')[0];
Npc.interactRadius = interactRadius ? interactRadius : 3;
Npc.interactRadius = interactRadius ? interactRadius : new Box3RGBColor(0, 0, 0);
// 可简化:
Npc.interactHint = interactHint ?? Npc.id.split('-')[0];
Npc.interactRadius = interactRadius ?? 3;
Npc.interactRadius = interactRadius ?? new Box3RGBColor(0, 0, 0);
entity.player.name == 'xxx' ? entity.player.kick() : null;
// 可简化:
entity.player.name == 'xxx' && entity.player.kick();
三目运算符有时候也会变成“冗余繁杂”的代码。如果有以上这种需求直接用??、&&、||这种运算符即可。
点赞5
评论
??改成||是不是也可以()
有区别但是不多。这个场景我习惯用??,更符合场景需求。
讲一下呗
看不懂
简化后看不懂()
自行百度
??是什么运算符号??给你置顶了顺便解释一下呗(
?? 运算符称为 null 合并运算符,用于定义可以为 null 值的类型和引用类型的默认值。 如果此运算符的左操作数不为 null,则此运算符将返回左操作数;否则返回右操作数。
~~这个算符是干什么的()主要没用过也没这方面的习惯()
源码极客“代码能多简洁多简洁()别拿代码多当作骄傲的资本!)”
原来你知道这个道理啊)))
点赞0
评论
原来你知道我原来知道这个道理 (
原来你知道我不知道你知道这个道理-_-||
原来你不知道我不知道你不知道我知道这个道理
妈妈生的(即答)
yee089不要乱封装啦,越封越乱。
老话:程序和程序员有一个可以跑就好了。能运行的依托答辩强过过不去编译的oop。
点赞1
评论
三目纯纯的压行专用,堆多了就寄了,括号很烦人
关于代码缺少空格、行末没有分号,这个看个人,我这种智力不够,看多一点数字就头疼的一般会加空格,但是我的同学就完全适应了。反正我写的就是依托答辩www
我从来不写空格()要不是格式化,你会发现几乎没有空格,除了打汉字,几乎不会按一个空格()
我智力不够而已QAQ
空格~没有空格我该怎么活啊~(雾)
哪个大佬解释一下这个怎么用
function npc(selector, fn, interactHint, interactRadius, interactColor) {
const Npc = world.querySelector(selector);
Npc.enableInteract = 1;
Npc.interactHint = interactHint ?? Npc.id.split('-')[0]
Npc.interactRadius = interactRadius ?? 3;
Npc.interactRadius = interactRadius ?? new Box3RGBColor(0, 0, 0);
Npc.onInteract(async ({ entity }) => {
await fn(entity)
})
}点赞0
评论
第一个参数填npc的搜索器,比如"#指令者模型" 第二个参数填npc交互后执行的函数,该函数有且只有一个参数为entity 第3、4、5、个参数应该知道咋填吧()
RGBcolor那行是不是写错了啊
az,确实,yee剑直接复制上一行压根没改()
SKQA?: && ||这三个没必要压到底。用if逻辑会更清晰,压行不过是减少字符数量
[0+Array(),JSON.stringify][-+-+false].constructor.fromCharCode.apply(String,new Array(31163,189.444**(Math.sin,2)))点赞1
评论
Star_Ink_sans对于1的解答()
se = secret 指的是那些回忆碎片(因为灵感来源于past world,past world这种东西叫秘密)
至于这个:
if (entity.se1 + entity.se2 + entity.se3 == 0) {
//.....
}
if (entity.se1 + entity.se2 + entity.se3 == 1) {
//.....
}
if (entity.se1 + entity.se2 + entity.se3 == 2) {
//.....
}
if (entity.se1 + entity.se2 + entity.se3 == 3) {
//.....
}
我不记得我这么写的()应该是屑剑为了节目效果改的()要么我记错了()但我明明记得我就写的:
if (entity.se1 + entity.se2 + entity.se3 == 3) {
//.....
}
else {
//...
}
点赞0
评论
原来1的那个图是重生·成长·跑酷啊()
yee(你也jio得那是跑酷啊(雾
星辰Lolita等代码多了()存储要放到database.js()操作得放到cmd.js()对话之类的数据放到data.js()怪物得放到enemy.js()物品得放到item.js(后面两个不出意外的话都有几千行())index把库调一遍然后写定时器()
点赞1
评论
其实很多代码问题我还是有的(
积极认错,绝不悔改!
我写代码不喜欢写分区,分区一般都是那些单独的管理员特权啊或者一些函数,我感觉写分区各种变量搞不明白。
分号这东西可加可不加没啥可吐槽的,我一个C++的Oier也经常忘记打分号。
还有return的事情在有些情况下可以减少时间复杂度可以优化卡顿(特别实在一些async function中用
还有就是为啥代码都说要什么什么精简啊,三目运算符算啥啊,重点是能看懂吧()
还有,sql一般最后写吧,前面写得多改的更多,最后写一次解决基本不会出现sql有三次这种问题(我个人喜欢把sql放在所有代码的最前面或者最后面,一般放在最前面(
npc的话一般来说我会在每个npc分别定义个npc的标签然后所有搜一边这样会方便很多
给玩家变量名字的问题,我感觉问题不大吧,在定义时标注一下写的是啥就行(
还有最重要的:
我特别不喜欢代码格式化啊啊啊啊(我习惯不打空格)
除非:
#include <iostream>
#include <cstring>
#define int long long
using namespace std;
inline int read(){
char c=getchar();
int x=0,f=1;
while(c<'0' || c>'9'){
if(c=='-')f=-1;
c=getchar();
}
while(c>='0' && c<='9'){
x=x*10+c-'0';
c=getchar();
}
return x*f;
}
int n,m,q;
int arr[1000005];
int brr[1000005];
int dp[601][601];
signed main(){
n=read();
m=read();
q=read();
for(int i=1;i<=m;i++)
for(int j=0;j<=q;j++)
dp[i][j]=喵10;
for(int i=1;i<=n;i++){
arr[i]=read();
brr[arr[i]]++;
}
for(int i=1;i<=m;i++)
for(int j=0;j<=q;j++)
for(int k=0;k<=j;k++)
dp[i][j]=min(dp[i][j],dp[i-1][k]+((brr[i]/(j-k+1)+1)*(j-k+1)-brr[i])*(brr[i]/(j-k+1))*(brr[i]/(j-k+1)+1)/2+(j-k+1-((brr[i]/(j-k+1)+1)*(j-k+1)-brr[i]))*(brr[i]/(j-k+1)+1)*(brr[i]/(j-k+1)+2)/2);
cout<<dp[m][q];
return 0;
}
(本人打过的一个C++代码(小声))
点赞5
评论