用户:yee剑走天下查看:42 回复: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
评论
哪个大佬解释一下这个怎么用
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
评论
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
评论
星辰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
评论